关于tick跳动与EA运行的问题

 
我们知道,tick跳动一下,就进入starrt()进行运算,如果在运算过程中又有一个新的tick, 那么是继续原来的运算,忽略新的tick, 还是怎样?
 

应该是忽略。

直到本次start()完成后,重新接收到新的报价时,再进入start()。

 
我测试的感觉不是忽略的,而是直接就进入start(),个人见解
 

个人认为:

在实时行情中运行ea,是忽略。

在测试中,是等待ea的start()运行完成后,向ea提供新的测试数据。

 
y2k_connect 写道 >>

个人认为:

在实时行情中运行ea,是忽略。

在测试中,是等待ea的start()运行完成后,向ea提供新的测试数据。

在波动很频繁的行情下实盘测试时,我的某些EA给我的感觉是并不能及时执行某些指令(如修改订单),有时波动特别频繁时,经常会在这一段时间内这些指令都得不到执行,但是如果我在程序中加入一个Print("1")指令,每个TICK都会输出一次1,所以我感性的认为可能是接受到一个新TICK就执行一次start()

 
skytodme 写道 >>

在波动很频繁的行情下实盘测试时,我的某些EA给我的感觉是并不能及时执行某些指令(如修改订单),有时波动特别频繁时,经常会在这一段时间内这些指令都得不到执行,但是如果我在程序中加入一个Print("1")指令,每个TICK都会输出一次1,所以我感性的认为可能是接受到一个新TICK就执行一次start()

有同感

 
skytodme 写道 >>

在波动很频繁的行情下实盘测试时,我的某些EA给我的感觉是并不能及时执行某些指令(如修改订单),有时波动特别频繁时,经常会在这一段时间内这些指令都得不到执行,但是如果我在程序中加入一个Print("1")指令,每个TICK都会输出一次1,所以我感性的认为可能是接受到一个新TICK就执行一次start()

如何加入Print("1")的?

是将程序所有内容用Print("1")替换,还是在发出OrderMOdify()之前加?

 

我用以下代码在不同平台实际测试EA:

void start()
{
Print("--1");
Sleep(10000);
Print("----2");
}

返回的结果说明start()运行完成后再等待下一个tick

 

在1秒钟的时间里,mt4会接收到n(n>2)次行情数据。如果start()对每个行情数据都处理一次,当前图表最新数据就和计算机时间不同步了。因此,只能忽略start()执行期间接收的行情数据。

在智能交易测试平台中,不存在这个问题。因此可以对每个行情数据执行一次start()。

 
song_song 写道 >>

我用以下代码在不同平台实际测试EA:

void start()
{
Print("--1");
Sleep(10000);
Print("----2");
}

返回的结果说明start()运行完成后再等待下一个tick

是这么回事,谢谢楼上

 
y2k_connect 写道 >>

在1秒钟的时间里,mt4会接收到n(n>2)次行情数据。如果start()对每个行情数据都处理一次,当前图表最新数据就和计算机时间不同步了。因此,只能忽略start()执行期间接收的行情数据。

在智能交易测试平台中,不存在这个问题。因此可以对每个行情数据执行一次start()。

恩,我搞清楚了,谢谢

原因: