mql4 EA交易 - OnTick()在[策略测试程序]中没有做任何事情

时间:2017-12-10 13:36:56

标签: mql4

部分代码:

int OnInit()
{   
    Print( "SL mover started" );

    return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{   
     modifySLs();
}

void modifySLs()
{
     int i, total = OrdersTotal();

     Alert( total );

     Print( "modify runs" );

     for( i = 0; i <  total; i++ ) {

          modifySLIfNeededForSelectedOrder( i );
     }
}

为什么OnTick()无法运行?

它不会在日志中打印任何消息,当我在Strategy Tester中运行时也不会调用Alert()函数。 OnInit()功能正常工作 - 在日志中打印&#34; SL移动器开始&#34;。

2 个答案:

答案 0 :(得分:0)

MQL4文档对此非常明确:

  

Alert()功能在策略测试程序中不起作用。

所以最好将其删除。

  

Print()功能在策略测试程序的优化过程中不起作用。

因此,除非您的策略测试程序具有遗传优化复选框,否则不会产生任何问题。

如果怀疑确实&#34;进入&#34; OnTick()代码块可以为其配备一个非阻塞智能通知器:

int aGlobatTickCOUNTER = 0;
void OnTick()
{
     Comment( "[OnTick()].INF::", ++aGlobalTickCOUNTER );

     modifySLs();
}

答案 1 :(得分:0)

它运行。你认为它不会执行的天气,它会执行。有用。根据图表在最后一个浮点值中更改值时,Ontick()函数正在运行一次。 但问题是你看不到它是否有效,因为Stratergy测试仪不允许Alerts()print()功能。它只允许执行OrderSend()OrderClose()Ordermodify()等函数。