Skip to content

格式、缩进与空格

MQL5属于自由格式语言(如C系及其他多种语言)。这意味着只要遵循语法规则,括号、运算符等辅助符号及关键字的放置位置可以自由安排。语法仅限制这些符号和单词的相对顺序,而行首的缩进量或语句元素间的空格数量对编译器没有意义。

在需要分隔语言元素的位置(如变量类型关键字与变量标识符之间),可以使用多个空格。此外,也可以用制表符或换行符代替空格。

当语句元素间存在分隔符(如函数参数间的逗号',')时,无需添加任何空格。

源代码格式的修改不会改变可执行代码

代码格式化示例

以下展示Greeting函数的不同写法(功能相同):

紧凑版(使用''换行符仅用于出版需要):

cpp
string Greeting(int hour){string messages[3]={"Good morning",\
"Good afternoon","Good evening"};return messages[hour%24/8];}

扩展版(包含额外空格和换行):

cpp
string
Greeting ( int hour )
  {
    string messages [ 3 ]
            = {
                "Good morning" ,
                "Good afternoon" ,
                "Good evening"
              } ;
      
    return messages [ hour % 24 / 8 ] ;
  }

MetaEditor代码格式化工具

通过工具 -> 设置 -> 样式器选择代码风格,使用工具 -> 样式器应用格式。

格式限制警告

禁止在以下位置插入空格

  • 标识符内部
  • 关键字内部
  • 数字内部

错误示例

cpp
return messages[hour % 2 4 / 8];  // 在数字24中间插入空格

编译错误日志

文件行号列号错误描述
GoodTime2.mq51928'4' - 缺少运算符
GoodTime2.mq51918'[' - 括号不匹配
GoodTime2.mq51932'8' - 缺少运算符
GoodTime2.mq51933']' - 需要分号
GoodTime2.mq51933']' - 意外的标记

错误分析技巧

  1. 前两个错误提示是关键(运算符缺失和括号不匹配)
  2. 后续错误由格式混乱引发
  3. 解决方案:删除数字24中间的多余空格
    注意:需结合上下文判断是误留数字还是替换错误

调试建议
当遇到不明确的错误时,优先检查最近的格式修改,特别是涉及分隔符和数字的部分。