我已经经过多番修改,但还是没有找到原因
这是一个简单的单均线 上穿BPK 下破SPK的 模型
要求:出信号立即开仓不进行复核,每根K线只开仓一次,在总账号有其他持仓的情况,不能平掉或者影响其他交易系统的持仓
下面为代码:麻烦老师帮忙修改,谢谢!
SS:=1; //手数
EXTGBDATASET('POSITIONAA',0);
MAA:MA(C,5);
BPK:=CROSS(H,MAA);
SPK:=CROSS(MAA ,L);
//初次开仓
IF EXTGBDATA('POSITIONAA')=0 THEN BEGIN
IF BPK THEN BEGIN
BUY(HOLDING=0,SS,MARKET);
TBUY(1,SS,MKT);
POSITIONAA:=1;
EXTGBDATASET('POSITIONAA',1);
END
IF SPK THEN BEGIN
BUYSHORT(HOLDING=0,SS,MARKET);
TBUYSHORT(1,SS,MKT);
POSITIONAA:=-1;
EXTGBDATASET('POSITIONAA',-1);
END
END
//后续开仓
IF BPK AND EXTGBDATA('POSITIONAA')=-1 THEN BEGIN
SELLSHORT(HOLDING<0,SS,MARKET);
TSELLSHORT(1,SS,MKT);
END
IF BPK AND EXTGBDATA('POSITIONAA')=-1 AND TENTERBARS>=1 THEN BEGIN
BUY(HOLDING<0,SS,MARKET);
TBUY(1,SS,MKT);
POSITIONAA:=1;
EXTGBDATASET('POSITIONAA',1);
END
IF SPK AND EXTGBDATA('POSITIONAA')=1 THEN BEGIN
SELL(HOLDING>0,SS,MARKET);
TSELL(1,SS,MKT);
END
IF SPK AND EXTGBDATA('POSITIONAA')=1 AND TENTERBARS>=1 THEN BEGIN
BUYSHORT(HOLDING>0,SS,MARKET);
TBUYSHORT(1,SS,MKT);
POSITIONAA:=-1;
EXTGBDATASET('POSITIONAA',-1);
END
AA:=TENTERBARS;
BB:=TEXITBARS;
DEBUGOUT('POSITIONAA=%.0f' ,POSITIONAA) ;
DEBUGOUT('AA=%.0f' ,AA) ;
DEBUGOUT('BB=%.0f' ,BB) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','POSITIONAA=%.0f' ,POSITIONAA,1) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','AA=%.0f' ,AA,1) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','BB=%.0f' ,BB,1) ;
我在后台测试后,只有开仓的操作而没有平仓的操作,找不到原因
系统判断不出某个单子是不是特定公式下的
当持有仓位的时候,平多仓同时开空仓,平空仓同时会开多仓,既然符合开仓的条件,为什么不复核平仓的条件呢?
看日志记录,AA 和 POSITIONAA 都是会变化的,但BB一直都没有变化
系统判断不出某个单子是不是特定公式下的
什么意思呢?不太明白,能否详细说明一下
这样写对吗?
SS:=1; //手数
EXTGBDATASET('POSITIONAA',0);
MAA:MA(C,5);
BPK:=CROSS(H,MAA);
SPK:=CROSS(MAA ,L);
//初次开仓
IF EXTGBDATA('POSITIONAA')=0 THEN BEGIN
IF BPK THEN BEGIN
BUY(HOLDING=0,SS,MARKET);
TBUY(1,SS,MKT);
POSITIONAA:=1;
EXTGBDATASET('POSITIONAA',1);
END
IF SPK THEN BEGIN
BUYSHORT(HOLDING=0,SS,MARKET);
TBUYSHORT(1,SS,MKT);
POSITIONAA:=-1;
EXTGBDATASET('POSITIONAA',-1);
END
END
//后续开仓
IF BPK AND EXTGBDATA('POSITIONAA')=-1 THEN BEGIN
SELLSHORT(HOLDING<0,SS,MARKET);
TSELLSHORT(1,SS,MKT);
平空条件:=1;
END
IF BPK AND EXTGBDATA('POSITIONAA')=-1 AND TENTERBARS>=1 THEN BEGIN
BUY(HOLDING<0,SS,MARKET);
TBUY(1,SS,MKT);
POSITIONAA:=1;
EXTGBDATASET('POSITIONAA',1);
END
IF SPK AND EXTGBDATA('POSITIONAA')=1 THEN BEGIN
SELL(HOLDING>0,SS,MARKET);
TSELL(1,SS,MKT);
平多条件:=1;
END
IF SPK AND EXTGBDATA('POSITIONAA')=1 AND TENTERBARS>=1 THEN BEGIN
BUYSHORT(HOLDING>0,SS,MARKET);
TBUYSHORT(1,SS,MKT);
POSITIONAA:=-1;
EXTGBDATASET('POSITIONAA',-1);
END
AA:=TENTERBARS;
BB:=TEXITBARS;
DEBUGOUT('POSITIONAA=%.0f' ,POSITIONAA) ;
DEBUGOUT('AA=%.0f' ,AA) ;
DEBUGOUT('BB=%.0f' ,BB) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','POSITIONAA=%.0f' ,POSITIONAA,1) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','AA=%.0f' ,AA,1) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','BB=%.0f' ,BB,1) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','平空条件=%.0f' ,平空条件,1) ;
DEBUGFILE2('D:\Debug\DEBUGFILE.TXT','平多条件=%.0f' ,平多条件,1) ;