为什么我已经在策略写了early:=(time0-timetot0(dynainfo(207))<=1) or not(islastbar);
而且后面在交易sell和buy语句后面也加了early条件
但我在实盘交易时还是没有实现提前一秒下单

此主题相关图片如下:11.png

信号是在09:03分出现的 和在10:54分出现的,但是报单就延迟了1秒和4秒,这个图表程序化应该就是显示信号出现然后报单的时间吧?所以应该是提前一秒猜对,但为什么不行呢?这个应该不是追单问题,你们系统追单会显示出来的吧

此主题相关图片如下:22.png

提前1秒钟间隔太短了。在行情不活跃时容易漏单。
你看到的时间是本地计算机时间,代码中是按行情时间判断的。肯定多少有点偏差
就是图表程序化出现的时间是本地计算机时间吗?那怎么把本地计算机时间调整为和交易所时间一样呢?那应该怎么操作,是要提前两秒吗?
你的电脑时间永远不可能做到和交易所一点不差的
实际你上你就是提前一秒了,只是那个显示记录那边让你觉得不是差一秒
这个不用去管,就好比你电脑一定不会准这个无法改变
另外行情时间是根据行情来的,提前一秒这个前提条件是59秒必须有行情,这种太苛刻了,如果该品种58秒然后直接跳到00那么你就漏单了
[此贴子已经被作者于2020/3/20 12:25:50编辑过]
early:=(time0-timetot0(dynainfo(207))
这个是根据行情时间计算的逻辑。dynainfo(207)是行情时间。
提前下单的时间建议你在3秒以上。如果是不活跃品种还要大,否者某根k上如果没有最后几秒的数据,这个条件就不成立了。
计算机本地时间和交易所行情时间多少都会有点出入,即使你不停与时间服务器进行同步也只能缩小时间误差。你不用太在意记录的本地时间。
只要保证行情接收正常,公式计算没有卡顿就行。
那怎么判断这个条件是真的实现了。一般我看见交易栏报单都是9:03:01成交的,是不是说,刚好59秒时没有行情,直接图表就没有反应了,然后9:03:00也没有反应,到9:03:01才有反应
为什么记录交易时间不用交易所时间,而要用本地计算机时间呢,这样不就有了时间差不好对比了吗?建议改进一下啦
肯定不能用行情时间。行情时间有限啊。没有行情得情况下,某些日志记录还是要进行的。
总之你这里的情况在设置时间太小的情况下,是很难保证准确无误的。
[此贴子已经被作者于2020/3/20 14:22:39编辑过]
你自己如果想判断触发的时间是否在最后几秒内,完全可以用debugfile输出参与计算的行情时间dynainfo(207)
aa:dynainfo(207);
if time0-timetot0(dynainfo(207))<=1) or not(islastbar) then begin
debugfile(.....,aa);
end