我想写一个很简单的单均线交易系统,
上穿就开多平空,下破就开空平多,出信号立即开仓不进行复核,每根K线只开仓一次,在总账号有其他持仓的情况,不能平掉或者影响其他交易系统的持仓
我在论坛发了3天贴都没有问出来,应该怎么写才对或者指出我哪里写得不对,万分感激~!!!!!
SS:=1; //手数
EXTGBDATASET('POSITIONAA',0);
MAA:MA(C,20);
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 AND TENTERBARS>=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 AND TENTERBARS>=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 ) ;
开仓分两段,一段是初次开仓,一段是后续开仓,
把这个加上
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 AND TENTERBARS>=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 AND TENTERBARS>=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) ;
谢谢
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 AND TENTERBARS>=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 AND TENTERBARS>=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) ;
谢谢