编辑、编译和运行程序

所有 MetaTrader 5 程序都是可编译的。也就是说,用 MQL5 编写的源代码必须经过编译才能生成二进制文件,也就是终端中执行的文件。

程序通过 MetaEditor 进行编辑和编译。

在 MetaEditor 中编辑 MQL 程序

在 MetaEditor 中编辑 MQL 程序

源代码是根据 MQL5 规则编写的文本,保存为扩展名为 mq5 的文件。包含已编译程序的文件具有相同名称,但扩展名为 ex5

在最简单的情况下,一个可执行文件对应一个包含源代码的文件;不过后面我们会看到,编写复杂程序时,经常需要将源代码拆分成多个文件:比如:一个主文件和若干个支持文件,支持文件以特殊方式从主文件中启用。在这种情况下,主文件的扩展名必须仍为 mq5,而通过这个主文件启用的文件的扩展名必须为 mqh。随后,所有源文件的语句将被传送到正在生成的可执行文件。因此,包含源代码的多个文件可以作为创建一个可执行文件/程序的起点。此处提到的所有这些内容将会在本书的第二章呈现,并进行全面论述。

我们将使用“MQL5 语法”一词表示 MQL5 中允许用于构造程序的所有规则的集合。只有严格遵守语法才能使编写的程序代码与编译器兼容。事实上,代码编写教学包括依次介绍一种特定语言的所有规则,在我们的例子中,这种语言就是 MQL5。这是本书的主要目的。

要编译源代码,我们可以使用 MetaEditor 命令文件 -> 编译或直接按 F7。不过也有一些其他特殊的编译方法,我们将在后面进行讨论。编译的同时,编辑器日志中会显示状态变化(MQL5 程序由包含源代码的多个文件组成,并且会在单独一行日志中标记每个文件的启用)。

在 MetaEditor 中编译 MQL 程序

在 MetaEditor 中编译 MQL5 程序

编译成功的标志是零错误(“0 个错误”)。警告不会影响编译结果,只是告知潜在的问题。因此,建议按照解决错误的方式来解决这些警告(我们稍后将告诉您如何做)。理想情况下,不应有任何警告(“0 个警告”)。

成功编译 mq5 文件后,我们得到一个扩展名为 ex5 的同名文件。MetaTrader 5 导航器以树状结构显示文件夹 MQL5 及其子文件夹中的所有可执行 ex5 文件,包括刚编译的文件。

包含 MQL 编译程序的 MetaTrader 5 导航器

包含 MQL5 编译程序的 MetaTrader 5 导航器

使用用户熟悉的任何方法在终端启动就绪的程序。例如,除了服务之外,可以用鼠标将任何程序从导航器拖动到图表中。对于服务的特性,我们将单独讨论。

此外,开发者通常需要在调试模式下执行程序,以找出导致错误的原因。针对这一需求,提供了多个特殊命令,我们将在 Bug 修复和调试中介绍这些命令。