执行 MQL 程序的一般原则

所有 MQL 程序都可以根据其功能和特点大致分为几组。

大多数程序是在图表的环境中运行,如 EA 交易、指标和脚本。换言之,只有在通过Navigator中的Attach to Chart上下文菜单命令,或者通过从Navigator拖放到图表上,被附加到某个打开的图表后,程序才开始执行。

相比之下,服务不能放置在图表上,因为它们是用于在后台执行长时间的循环操作。例如,在服务中,你可以创建一个 自定义交易品种 ,然后使用网络函数接收其数据,并在无限循环中持续更新数据。服务的另一个符合逻辑的应用是监控交易账户和网络连接,作为向用户通知通信问题的解决方案的一部分。

务必要注意的是,指标和 EA 交易在终端工作会话之间会被保存在图表上。换言之,若用户在图表上运行一个指标,然后在没有显式删除该指标的情况下关闭 MetaTrader 5,则下次启动终端时,该指标将连同图表一起恢复,包括其所有设置。

顺便说一下,将指标和 EA 交易关联到图表是模板的基础(请参阅 文档)。用户可以创建一组要在图表上使用的程序,对它们进行配置,并将该组程序保存到扩展名为tpl的特殊文件中。此操作通过上下文菜单命令Templates -> Save完成的。之后,你可以将模板应用到任何新图表上(命令Templates -> Upload)并运行所有关联的程序。模板默认存储在 MQL5/Profiles/Templates/目录中。

与图表关联的另一个结果是,关闭图表会导致卸载之前对图表运行的所有 MQL 程序。不过,MetaTrader 5 会以特定方式保存所有已关闭的图表(至少保存一段时间),因此,如果图表被意外关闭,可以恢复该图表及所有程序(以及 图形对象),方法是使用 File -> Open Remote命令。

如果终端因某种原因无法加载图表文件,则 MQL 程序的整个状态(设置和位置)将丢失。基本上,这一原则同样适用于 图形对象 ,程序可以根据自身需要添加这些对象,并期望它们会保留在图表上。备份图表。每个图表都是扩展名为chr的文件。这些文件默认存储在MQL5/Profiles/Charts/Default/目录中。这是安装平台时创建的标准配置文件。你可以使用菜单命令 File -> Profiles创建其他配置文件并在它们之间切换(请参阅 文档)。

如需停止 EA 交易并将其从图表移除,可使用上下文菜单命令Expert list(在图表窗口点击右键调用)进行操作。将打开Experts对话框,其中列出了终端中正在运行的所有 EA 交易。在此列表中,选择不再需要的 EA 交易,然后选择 Remove

指标也可以通过类似上下文菜单命令Indicator List来显式移除。将打开一个对话框,其中列出了当前图表上正在运行的指标,在此对话框中,你可以选择特定指标,然后点击Remove按钮。此外,大多数指标会在图表上显示各种图形结构,例如线条和柱状图,这些图形结构也可以使用相关上下文菜单命令来删除。

与指标和 EA 交易不同,脚本不会永久附加到图表上。在标准模式下,如果脚本执行的是一次性操作,则当所分配的任务完成后,脚本会自动从图表中移除。如果脚本包含定期重复执行操作的循环,脚本当然会持续运行,直到循环以某种方式中断,但不会超过会话结束时间。关闭终端会使脚本从图表上分离。重新启动 MetaTrader 5 后,脚本不会在图表上恢复。

请注意,如果将图表切换到另一个交易品种或时间范围,该图表上运行的脚本将会被卸载。但指标和 EA 交易会继续运行,不过,它们会重新初始化。这两者的初始化规则有所不同。具体细节将在 各类程序启动和停止的特征章节中详细讨论。

每个图表上可放置一个 EA 交易、一个脚本,但可以放置任意数量的指标。EA 交易、脚本以及所有指标将并行(同时)运行。

至于服务,其已创建并正在运行的实例在终端加载后自动恢复。可以使用 Navigator窗口中 Services 部分的上下文菜单来停止或删除服务实例。

下表以汇总形式概述了上述特性。

程序类型

链接到图表

在图标上的
数量

会话 
恢复

指标

需要

多个

通过图表或模板

EA 交易

需要

最多 1 个

通过图表或模板

脚本

需要

最多 1 个

不支持

服务

不支持

0

通过终端

所有 MQL 程序都在客户端终端中执行,因此只有在终端打开时才能运行。如需实现对账户的持续程序监控,请使用 VPS。