MetaEditor 帮助

编译

编译就是将MQL4/MQL5程序的源代码翻译成机器语言的过程。这个过程包括几个阶段:

  • 词法扫描;
  • 解析;
  • 语义分析;
  • 代码生成;
  • 代码优化。

一个成功编译的结果就是创建可以在客户端启动的程序的可执行文件(*.EX5)。

  • 任何文件(*.MQ4,*.MQ5或*.MQH)都可以被编译,但是可执行文件(*.EX4,*.EX5) 只能通过编译主要的 MQ5程序文件来生成。
  • 可执行文件是在其自身的隐藏程序源算法的封闭格式下创建的。
  • 编译后的可执行EX5文件可以被分发,而无需源MQ5或MQH文件。没有它们,是不可能调试的。建议不要分发调试后获得的EX5文件。

若要开始编译,通过“导航” 窗口打开源文件并执行“编译 编译” 在“文件”菜单或在“标准” 工具栏,或者按下"F7"键。

编译进程报告将会显示在“工具箱”窗口的“错误”标签。如果这个标签中没有错误,那么您可以启动客户端的程序。错误和警示信息在其描述附近,用特殊的图标进行标记:

错误

编译错误标记通过错误“错误”标签和代码中的图标。如果这种错误发生,可执行文件(*.EX5) 不会生成。要移动到错误行,鼠标左键双击该行,或执行“转到行转到行”指令在快捷菜单。发现错误的行号和列号,显示在相应的列。

在MQL4/MQL5语言的帮助主题中,给出编译错误的完整描述。

出现警报表示通过警报指向错误发生位置的图标。I.e.编译器指向源代码的一部分,它可能被错误的解释(例如,值类型的隐式变化)。您也可以转到与错误行一样的这样的代码行。

您可以不处理警告。但是这不推荐,因为它们指出了错误出现的潜在可能地方。

此外,各种信息性的消息显示在日志中。它们通过图标来标记信息。它们可以显示,例如,包括编译时程序提到的文件。

成功编译后生成的可执行文件(*.EX5),位于相同的地方,就是程序源代码(*.MQ5) 主要文件所在的位置。

从命令行编译

当通过外部编辑器处理源代码时MetaEditor可执行文件可以被用作编译器。 编译器从命令行开始,指定路径以及您想编译的文件名称:

  • metaeditor.exe /compile:"<源文件的全部路径>"
  • metaeditor64.exe /compile:"<源文件的全部路径>"

示例

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts\myscript.mq5"

批量编译目录文件

对于批量编译,设置文件夹路径要好于设置文件路径。指定文件夹中的全部源代码文件都将被编译。但不包括子文件夹。

如果源文件已经具有合适的编译版本,则不会执行重新编译。

以下示例展示了批量编译\MQL5\Scripts文件夹。

示例

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts"

自定义MQL5/MQL4包含文件文件夹

程序可以使用当前平台工作文件夹以外的额外包含文件(*.mqh)(例如,在同样计算机中的另一个平台副本的\MQL5文件夹)。指定该文件夹的路径,使用"/inc"密钥来正确编译。

示例

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts" /inc:"C:\Program Files\TradingPlatform 2\MQL5"

编译日志

指定额外/log密钥以了解编译进程的更多信息。在这种情况下,在包含源文件的文件夹中创建<source file name>.log编译日志文件。

示例

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts\myscript.mq5" /log
日志文件:C:\Program Files\TradingPlatform\MQL5\Script\myscript.log

语法检查

若要无需编译的检查程序语法,请通过/s和/log密钥从命令行启动MetaEditor(以便在日志文件中显示检查结果)。

示例

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts\myscript.mq5" /s /log
检查结果的文件:C:\Program Files\TradingPlatform\MQL5\Script\myscript.log