脚本

脚本是一种仅包含处理程序 OnStart的 MQL 程序,前提是不存在 #property service 指令(否则就会变成服务,详见下一章节)。

默认情况下,脚本被加载到图表时会立即开始执行。开发者可通过在文件开头添加#property script_show_confirm指令,要求用户确认启动。在这种情况下,终端将显示一条消息,其中包含问题“你是否确定要在图表‘交易品种,时间范围’上运行‘程序’?”,以及 YesNo 按钮。

脚本和其他程序一样,可以包含 输入变量。不过对于脚本来说,即使脚本定义了 input,默认也不会显示参数输入对话框。为确保在运行脚本之前打开特性对话框,应使用#property script_show_inputs 指令。该指令优先级高于script_show_confirm,即对话框弹出时将禁用确认请求(因为对话框本身已具备类似的确认功能)。即使没有输入变量,该指令也会调用对话框。用于向用户展示产品描述和版本信息(这些信息会显示在 Common选项卡中)。

下表展示了 #property指令的组合选项及其对程序的影响。

指令

影响

script_show_confirm

script_show_inputs

立即启动

确认请求

打开特性对话框

不相关

ScriptNoComment.mq5文件中提供了一个含指令的脚本简单示例。该脚本的用途如下。有时,MQL 程序会在图表左上角留下不必要的注释。由于注释会与图表一同存储在 chr 文件中,因此即使重启终端后,这些注释仍会恢复。此脚本允许你清除注释或将其设置为任意值。如果你使用 Navigator上下文菜单命令为脚本 Assign hotkey,则只需点击一下,即可清除当前图表的注释。

最初,script_show_confirmscript_show_inputs 指令通过转换为内联注释而处于禁用状态。可以通过逐一取消或一次性全部取消这些指令的注释,来试验不同的指令组合。

//#property script_show_confirm
//#property script_show_inputs
   
input string Text = "";
   
void OnStart()
{
   Comment(""); // clean up the comment
}