4

我正在为 backTest 制作 EA。

通常程序是这样工作的。

  1. Ontick()被调用直到某个时间段结束。
  2. OnDeinit() OnTester()被称为。

但是现在我想停下来OnTick()并转到2)。

像这样,

void OnTick()
{
    if (cnt > 100) {OnTick();OnTester();//Finish program here}
}

我想我可以停下来OnInit()(检查用户的初始设置等...)但是我可以停止 EA 吗OnTick()???

总之,我想做的是,

OnTester()从内部调用OnTick()并完成程序。

4

1 回答 1

5

是的,这也是可能的:

语法是:

void  ExpertRemove();

EA交易不会立即停止,因为您调用ExpertRemove();的只是设置了停止 EA 操作的标志。也就是说,任何下一个事件都不会被处理,OnDeinit()将被调用,并且智能交易系统将被卸载并从图表中删除。

因此OnDeinit(){...},一旦对系统函数的第一次调用ExpertRemove()引发了预终止标志,就会“自动”激活 -handler。

如果您的逻辑需要,将此调用放入“手动”调用的OnTester()处理程序中,依赖于它被调用,如上面发布的那样
if( cnt > 100 ) { OnTester(); // having the "killer"-ExpertRemove() there ... }

你就完成了。

您可能已经注意到,-code-block 内不应该有张贴OnTick()的 -call if(){...},因为它永远不会让代码执行到达手动规定的OnTester()对 .手动注入无休止的重新进入 - 处理OnTick(){...}程序,无法退出。

于 2017-11-21T15:39:09.630 回答