脚本和服务

在本章中,我们将系统梳理并完整呈现关于脚本和服务的所有技术信息,这些内容我们在本书前几部分已开始有所了解。

脚本和服务在程序代码的组织和执行方面遵循相同的原则。我们知道,它们的主函数 OnStart 也是唯一的函数。脚本和服务无法处理 其他事件

然而,仍存在一些显著差异。脚本在图表上下文中执行,并能通过内置变量(如 _Symbol_Period_Point 等)直接访问图表特性。我们将在 图表特性章节中详细研究这些内容。而服务是独立运行的,不与任何窗口绑定,尽管它们能够使用特殊函数来分析所有图表(同样的 图表函数 也可用于其他程序类型:脚本、指标和 EA 交易)。

另一方面,所创建的服务实例会被终端在后续会话中自动恢复。换言之,服务一旦启动就会一直运行,除非用户将其停止。相比之下,脚本会在终端关闭或图表关闭时被删除。

请注意,服务与其他所有 MQL 程序类型一样,都是在终端中执行的,因此关闭终端也会使服务停止。已激活的服务会在你下次启动终端时恢复运行。只有在终端持续运行的情况下(例如在 VPS 上运行的终端),才能确保 MQL 程序的不间断运行。

在脚本和服务中,可以使用 #property指令设置 程序通用特性 。除了这些特性外,脚本和服务程序还有一些特有的特性;我们将在后续两个章节中分别详述。

当前在图表上运行的脚本会与正在运行的 EA 交易显示在同一列表中,该列表可通过图表上下文菜单中的 Expert List命令打开的的Experts 对话框查看。可以从该对话框中强制将它们从图表中移除。

服务只能从 Navigator窗口进行管理。