INPUT:ZS(10,1,20,1);
TQ:=15;
DTGDZS:=(ROUNDS(TAVGENTERPRICE,1)-CLOSE)-ROUNDS((TAVGENTERPRICE*ZS/1000),1)>0; //多头固定止损条件
KTGDZS:=(CLOSE-ROUNDS(TAVGENTERPRICE,1))-ROUNDS((TAVGENTERPRICE*ZS/1000),1)>0; //空头固定止损条件
ABB:=(TIME0-TIMETOT0(DYNAINFO(207))<=TQ) ;
IF ABB THEN BEGIN
多头止损:TSELL(DTGDZS AND HOLDING>0,0,MKT,0,0,'','ZJIF00'); //多头止损
空头止损:TSELLSHORT(KTGDZS AND HOLDING<0,0,MKT,0,0,'','ZJIF00'); //空头止损
平多:TSELL(平多条件 AND THOLDING>0,0,MKT,0,0,'','ZJIF00'); //平多操作
平空:TSELLSHORT(平空条件 AND THOLDING<0,0,MKT,0,0,'','ZJIF00'); //平空操作
开多:TBUY(开多条件 AND THOLDING=0,手数,MKT,0,0,'','ZJIF00'); //开多操作
开空:TBUYSHORT(开空条件 AND THOLDING=0,手数,MKT,0,0,'','ZJIF00'); //开空操作
END
以上是我的交易下单程序,在后台模拟自动运行时出现了两个问题:
第一:无法止损。我的程序化交易模型是以30分钟K线为交易周期的。今天早上11:15分,系统自动在2350.80点位上卡空仓,但到了下午14:15分时,股指期货K线已收盘于2382.20了,可系统却没有相应的自动止损。我查询过1分钟的K线图,14:15的K线一直运行在14:14K线收盘价2379.40之上,所就算我的程序提前了15秒钟下单,下单时的价格也应该能使止损条件KTGDZS成立,可系统为什么没有发出止损下单指令呢?
第二:在每日日内的最后一个K线周期,即15:15的枝条K线无法下单。尽管我在程序中加入了提前15秒钟下单的条件语句,但对于每天15:15的这个周期的K线却仍然无法实现下单操作,这又是为什么呢?
恳请各位大神不吝指教!
条件满足是你目测的还是有调试代码的?
不是调试出来的,就用debugfile来输出一下各个条件,你一共有4个条件:ABB ,DT ,KT,THOLDING
都输出一下,看看在你认为应该条件成立的地方,是哪个条件没有成立
第二个确实是这样,我并没有关闭交易!
第一个问题,我估计已经找到答案了。估计是“holding<0”这一条件没有改成“tholding<0”。
写个简单的测试代码
if abb then
tbuy(1,1,mkt);
end
就这样,不要加其他条件
因为不受其他条件干扰,才能判断这段语句有没有效
加了其他代码,那么就要按照我上面所说的,把所有的条件都调试输出一遍
老师,我已经用您的测试代码测试过了,还是不行.
别的30分钟K线都好好的,就是15:15结束的这根K线在debugfile输出的文件上始终没有程序运行及下单的记录。
WHY?PLEASE HELP ME!