跳至内容

Client Terminal Events

客户端终端事件

初始化

当客户端终端加载程序(专家顾问或自定义指标)并开始全局变量的初始化过程后,将发送初始化事件,该事件将由OnInit()事件处理程序处理,如果有的话。当金融工具和/或图表时间范围发生变化、在MetaEditor中重新编译程序、输入参数从专家顾问或自定义指标的设置窗口更改后,也会生成此事件。账户变更后,专家顾问也会被初始化。

终止

在全局变量被终止化和程序(专家顾问或自定义指标)卸载之前,客户端终端会向程序发送终止事件。当客户端终端关闭、图表关闭、安全设置和/或时间范围发生变化之前、程序成功重新编译、输入参数更改以及账户变更时,也会生成终止事件。

终止原因可以从传递给OnDeinit()函数的参数中获取。OnDeinit()函数的运行时间限制为2.5秒。如果在此时间内函数未完成,则将被强制终止。

启动

启动事件是在脚本加载后激活的特殊事件。此事件由OnStart处理程序处理。启动事件不会发送给专家顾问或自定义指标。

新报价

如果有新报价,将生成新报价事件,它由附加的专家顾问的OnTick()处理。如果在收到新报价时正在处理之前报价的OnTick函数,则专家顾问将忽略新报价,因为相应的事件不会排队。

在程序运行期间收到的所有新报价都将被忽略,直到OnTick()完成。之后,该函数仅在收到新报价后运行。无论是否允许自动交易(“允许/禁止自动交易”按钮),都会生成新报价事件。禁止自动交易仅表示不允许专家顾问发送交易请求,而专家顾问仍继续工作。

按下相应按钮禁止自动交易不会停止OnTick()函数的当前执行。

计算

计算事件仅在初始化事件发送后和价格数据发生变化时由指标生成。它由OnCalculate函数处理。

计时器

计时器事件由客户端终端定期为通过EventSetTimer函数激活计时器的专家顾问生成。通常,此函数由OnInit调用。计时器事件的处理由OnTimer函数执行。在专家顾问的操作完成后,需要使用EventKillTimer函数销毁计时器,该函数通常在OnDeinit函数中调用。

测试者

测试者事件是在历史数据上测试专家顾问完成后生成的。该事件由OnTester()函数处理。

图表事件

当用户使用图表时,客户端终端会生成图表事件:

  • 按键操作,当图表窗口处于焦点时;
  • 创建图形对象
  • 删除图形对象
  • 鼠标点击图表的图形对象;
  • 使用鼠标移动图形对象;
  • 标签编辑中的文本编辑结束。

还有一个自定义图表事件,可以通过任何mql4程序使用EventChartCustom函数发送给专家顾问。该事件由OnChartEvent函数处理。

另请参阅

事件处理程序程序运行

最后更新于