我们知道,tick跳动一下,就进入starrt()进行运算,如果在运算过程中又有一个新的tick, 那么是继续原来的运算,忽略新的tick, 还是怎样?
应该是忽略。
直到本次start()完成后,重新接收到新的报价时,再进入start()。
我测试的感觉不是忽略的,而是直接就进入start(),个人见解
个人认为:
在实时行情中运行ea,是忽略。
在测试中,是等待ea的start()运行完成后,向ea提供新的测试数据。
我用以下代码在不同平台实际测试EA:
void start()
{
Print("--1");
Sleep(10000);
Print("----2");
}
返回的结果说明start()运行完成后再等待下一个tick
在1秒钟的时间里,mt4会接收到n(n>2)次行情数据。如果start()对每个行情数据都处理一次,当前图表最新数据就和计算机时间不同步了。因此,只能忽略start()执行期间接收的行情数据。
在智能交易测试平台中,不存在这个问题。因此可以对每个行情数据执行一次start()。