IF (DAY()<>REF(DAY(),1)) THEN BEGIN
BWINCOUNT:=0;
SWINCOUNT:=0;
END;
IF BWINCOUNT=0 THEN BEGIN
IF BWINCOUNT=0 THEN BEGIN
TBUY(CLOSE>HH2 AND TTYPE(1)<>1 AND TIME<145901 AND TEXITBARS<>0,N,LMT,CLOSE+MINDIFF);
END
IF TTYPE(1)=1 THEN BEGIN
TSELL((CLOSE<LL1 OR TIME>145900 OR CLOSE>(TENTERPRICE+20) OR CLOSE<(TENTERPRICE-5)),N,LMT,CLOSE-MINDIFF);
END
IF (TTYPE(1)=2 AND TENTERPRICE<TEXITPRICE) THEN BEGIN
BWINCOUNT:=1;
END
END
IF SWINCOUNT=0 THEN BEGIN
IF SWINCOUNT=0 THEN BEGIN
TBUYSHORT(CLOSE<LL2 AND TTYPE(1)<>3 AND TIME<145901 AND TEXITBARS<>0,N,LMT,CLOSE-MINDIFF);
END
IF TTYPE(1)=3 THEN BEGIN
TSELLSHORT((CLOSE>HH1 OR TIME>145900 OR CLOSE>(TENTERPRICE+5) OR CLOSE<(TENTERPRICE-5)),N,LMT,CLOSE+MINDIFF);
END
IF (TTYPE(1)=4 AND TENTERPRICE>TEXITPRICE) THEN BEGIN
SWINCOUNT:=1;
END
END
IF (DAY()<>REF(DAY(),1)) THEN BEGIN
EXTGBDATASET('BWINCOUNT',0);
EXTGBDATASET('SWINCOUNT',0);
END;
BWINCOUNT:=EXTGBDATA('BWINCOUNT');
SWINCOUNT:=EXTGBDATA('SWINCOUNT');
IF BWINCOUNT=0 THEN BEGIN
IF BWINCOUNT=0 THEN BEGIN
TBUY(CLOSE>HH2 AND TTYPE(1)<>1 AND TIME<145901 AND TEXITBARS<>0,N,LMT,CLOSE+MINDIFF);
END
IF TTYPE(1)=1 THEN BEGIN
TSELL((CLOSE<LL1 OR TIME>145900 OR CLOSE>(TENTERPRICE+20) OR CLOSE<(TENTERPRICE-5)),N,LMT,CLOSE-MINDIFF);
END
IF (TTYPE(1)=2 AND TENTERPRICE<TEXITPRICE) THEN BEGIN
EXTGBDATASET('BWINCOUNT',1);
END
END
IF SWINCOUNT=0 THEN BEGIN
IF SWINCOUNT=0 THEN BEGIN
TBUYSHORT(CLOSE<LL2 AND TTYPE(1)<>3 AND TIME<145901 AND TEXITBARS<>0,N,LMT,CLOSE-MINDIFF);
END
IF TTYPE(1)=3 THEN BEGIN
TSELLSHORT((CLOSE>HH1 OR TIME>145900 OR CLOSE>(TENTERPRICE+5) OR CLOSE<(TENTERPRICE-5)),N,LMT,CLOSE+MINDIFF);
END
IF (TTYPE(1)=4 AND TENTERPRICE>TEXITPRICE) THEN BEGIN
EXTGBDATASET('SWINCOUNT',1);
END
END
对于多品种交易,因为全局变量使用一个索引会导致不同品种之间的相互干扰,例如
BWINCOUNT:=EXTGBDATA('BWINCOUNT');
SWINCOUNT:=EXTGBDATA('SWINCOUNT');
因为所有的索引都用'BWINCOUNT'索引,所以后面的品种会把前面覆盖掉.解决办法是使用每个品种的代码加以区分,使他们相互不受干扰
EXTGBDATASET(STKLABEL&'BWINCOUNT',0);
EXTGBDATASET(STKLABEL&'SWINCOUNT',0);
&符号表示两个字符串相加