问题如题:
以下是海龟双向交易系统代码,增加了一个离场条件:当上一离场条件实际因价格原因或其它原因没能平仓的话,离场条件2即在K线收盘前平仓在实际运行时不被执行,这是为什么呢?应该怎么改一下?
谢谢!
//如果当前是没有持仓的状态
IF POSITION=0 AND BUYORDERTHISBAR=0 AND BARPOS>TPS AND TIME>=091500 THEN BEGIN
//建立多头进场条件
LONG := H >=T20HI ;
//多头进场
IF LONG AND POSITION=0 AND TIME<=151000 THEN BEGIN
MYENTRYPRICE := IF(
Open>=T20HI, OPEN,T20HI+mindiff) ;
BUY( _DEBUG,1,LIMITR,MYENTRYPRICE),IGNORECHECKPRICE;
POSITION := 1 ;
TURTLEUNITS := 1 ;
N := AVGTR ;
BUYORDERTHISBAR := 1;
END //IF
END
//如果当前持有多头仓位的状态
IF POSITION=1 AND BARPOS>TPS AND TIME>=091500 THEN BEGIN
//多头加仓条件
WHILE (HIGH>=MYENTRYPRICE+ 0.5*N) AND LOW >=T10LO AND TURTLEUNITS <4 DO BEGIN
MYENTRYPRICE := IF(OPEN>=MYENTRYPRICE+ 0.5*N ,OPEN ,MYENTRYPRICE+ 0.5*N+MINDIFF ) ;
BUY( _DEBUG, 1, LIMITR, MYENTRYPRICE),IGNORECHECKPRICE;
TURTLEUNITS := TURTLEUNITS+1 ;
BUYORDERTHISBAR := 1;
END //WHILE
//建立多头离场条件
LONGX1 := LOW <T10LO ;
IF LONGX1 AND BUYORDERTHISBAR=0 THEN BEGIN
MYEXITPRICE := IF(OPEN<T10LO ,OPEN-5*MINDIFF ,T10LO-5*MINDIFF ) ;
SELL( _DEBUG ,0,LIMITR,MYEXITPRICE),IGNORECHECKPRICE;
POSITION := 0 ;
TURTLEUNITS := 0 ;
BUYORDERTHISBAR: =1 ;
END
//多头离场 2 如果上面没能平掉仓位,则在收盘前3秒市价平仓,实际执行不到?为什么
LONGX2 := LOW < T10LO AND TQNM>0 AND POSITION = 0;
IF LONGX2 THEN BEGIN
SELL( _DEBUG ,0,LIMITR,CLOSE),IGNORECHECKPRICE;
POSITION := 0 ;
TURTLEUNITS := 0 ;
BUYORDERTHISBAR: =1;
END
END
TQNM: =time0-timetot0(dynainfo(207))<=3 OR not(islastbar); //收前提前3秒下单
是用的固定时间模式啊,但如果平仓离场1没平掉帐户(信号已平,但实际还在持仓),那么平仓离场2条件也不会被执行!怎么办呢?
信号和实际持仓不一致,这个需要同步持仓,而不是代码实现
在图表交易界面设置
图表同步持仓启用后,如果遇到网络延迟可能会大幅增加持仓成本价吧?因为同步持仓好像只能市价进出场,而且也不能做到收盘前几秒市价平仓
[此贴子已经被作者于2015/6/2 14:46:29编辑过]
因为是限价平仓,有时平不了。所以我的想法是,如果限价没能平掉,那么就在收盘前几秒平出来