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

问题描述 投票:1回答:2

部分代码:

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()功能工作 - 在日志“SL mover started”中打印。

mql4
2个回答
0
投票

MQL4文档对此非常明确:

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

所以最好删除它。

在策略测试程序中优化期间,Print()函数不起作用。

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

如果怀疑确实“进入”OnTick()代码块,可以为它配备一个非阻塞智能线人:

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

     modifySLs();
}

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.