MetaEditor 帮助开发程序编译

编译

编译意即将 MQL4/MQL5 程序的源代码转换为机器语言。 结果是可以在交易平台上启动的可执行程序文件 (*.EX4 或 *.EX5)。

编译由几个阶段组成:

  • 词汇分析
  • 语法分析
  • 语义分析
  • 代码生成
  • 代码优化
  • 任何文件 (*.MQ4, *.MQ5 或 *.MQH) 均可被编译, 但可执行文件 (*.EX4 或 *.EX5) 只能通过编译 主体的 MQ4/MQ5 程序文件或 项目 才能得到。
  • 可执行文件以其自己的格式创建,隐藏原始程序算法。
  • 已编译的执行 EX4/EX5 文件可以在没有 MQ4、MQ5 和 MQH 源文件的情况下分发。 没有它们,调试是不可能的。 也不建议分发调试过程中得到的可执行 EX4/EX5 文件。

若要得到可执行文件,通过 导航器 打开 主体 源文件或项目 并点击 编译 编译在 文件 菜单里或按 F7。 编译过程显示在工具箱窗口的 错误 选项卡上。 如果编译通过没有错误,您可以在交易平台上运行获得的程序。

编译程序并在 "错误" 选项卡上显示结果

如果有错误或警告,它们将显示在错误选项卡上。

编译错误标有错误在错误选项卡上以及相应的代码段中。 如果这种情况发生,则不会创建可执行程序文件 (*.EX4 或 *.EX5)。 若要跳转到错误字符串,请双击错误或单击跳转到行在关联菜单中跳转到行命令。 字符串和检测到错误的列将显示在相应的列中。

警告标有警告图标表示潜在错误的地方。 这些是可能被误解的源代码段 (例如,隐性数值类型变更)。 您可以像错误一样跳转到这些代码字符串。

信息图标代表各种信息消息,例如,关于在编译过程中访问的头文件的消息。

编译模式 #

编辑器提供两种编译模式:包含最大限度的代码优化和没有优化。

当优化功能被禁用时,创建可执行文件所需的时间会明显减少。当您需要快速检查编写代码时,请在开发阶段使用此模式。然后,在最终程序编译期间,打开最大优化模式以获得最佳性能。

要在这些模式之间切换,可以使用 "构建 "菜单或工具栏上的编译命令菜单。

控制编译模式

项目设置中的“最大优化”参数执行相同的功能。

  • 完整的编译错误描述已在 MQL4/MQL5 语言帮助中提供。
  • 在出现警告的情况下,依然会生成可执行文件。 但不应忽略警告,因为它们表明潜在的代码错误。
  • 在编译期间, 可执行文件 (*.EX4 或 *.EX5) 与程序的 主体源文件 (*.MQ4 或 *.MQ5) 亦或 项目 生成在同一目录下。
  • metaeditor.exe 可用作 第三方集成开发环境的外部编译器

针对不同架构的处理器进行编译 #

现代处理器提供了一组可明显加快数学计算速度的高级指令:AVXAVX2AVX512FMA3。这些指令在MQL5编译器中得到支持,可以生成更高效、更快速的代码。可以选择使用这些指令:

  • 如果您正在为自己创建一个应用程序,并且确定它将在支持所需架构的处理器上运行,则可以使用高级指令对其进行编译。这将提供更高的性能。
  • 如果您要创建供公共使用或出售的程序,请使用X64常规模式下的基本指令集对其进行编译。这将确保应用程序与用户硬件的最大程度兼容性。

要了解您的处理器支持哪些指令,请使用CPU-Z免费实用程序。安装后,打开“CPU”部分并检查“指令”字段:

使用CPU-Z检查您的处理器支持哪些指令

要选择处理器架构,请使用编译菜单。接下来,点击“编译”。您还可以在MetaEditor设置单独的项目设置中指定架构。

选择将为其编译程序的处理器架构

如果是为了用户处理器不支持的架构编译应用程序,则尝试运行该程序将导致在平台日志中记录以下消息:

您的CPU架构不允许运行文件'<file-name>.ex5':需要AVX512,您只有AVX2

限制:

  • MQL5云网络内置VPS尚不支持AVX512处理器编译的程序。
  • 只有在X64常规模式下编译的文件才能上传到市场。这是确保应用程序与用户硬件最大兼容性所必需的。