比如如下代码,目的:在每次金叉时开仓一次 ;选用 1秒轮询
ma5:=ma(c,5);
ma10:=ma(c,10);
buycond:=ref(cross(ma5,ma10),1);
sleep(10000);
if buycond then tbuy(1,1);
在某根K线 buycond 成立。
程序于05秒的时候首次执行tbuy买入开仓
于15秒的时候执行tbuy不会开仓 同一根K线只下一次单
于25秒的时候执行tbuy不会开仓 同一根K线只下一次单
于35秒的时候执行tbuy不会开仓 同一根K线只下一次单
于45秒的时候执行tbuy不会开仓 同一根K线只下一次单
于55秒的时候执行tbuy不会开仓 同一根K线只下一次单
此时,56秒时候,从上往下继续判断
于下一根K线05秒的时候执行语句“if buycond then tbuy(1,1);” 此时buycond条件是成立的。
这个时候新的K线已经产生,会下单吗?
如果会下单的话,就相当于重复开仓了。如何处理?
如果会重复下单的话,在后台用sleep的话,就要注意了
特别是一个模型,针对多个账户,每个账户间隔10秒下单的时候
后台只有在执行一次完整的流程后才会去判断是否出现新K线,于下一根K线05秒的时候虽然实际上有了新K线,但是后台程序化尚未整个流程执行完毕,对于目前的后台程序化,仍然是上一次的K线状态未变,故你上述的担心是没必要的,不会重复开仓
哈哈
那爽。就是要这种效果
这几天帮客户写了一个后台 多策略多账户交易,用到sleep,突然间有的疑问。
后面继续检查验证