我编写了个程序,开平仓的思路是:当收盘价高于20个周期的最高价时,平空开多,低于10个周期最低价时,平多,开仓后每比上一次开仓价格向上涨0.5个ATR加仓1次,最多加仓4次,当收盘价低于第一次开仓价格2倍的ATR时止损,反之,做空一样。我编写的程序如下,但是第一次开仓价格+(-)2倍的ATR的值老不对,您帮忙看下这个程序哪里的问题:
VAR1:=5;
HH1:HV(H,20);
LL1:LV(L,20);
HH2:HV(H,10);
LL2:LV(L,10);
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,26);
ATR1:=REF(C,REFSIG_PLACE(BPK,1)+1)-N2*REF(ATR,REFSIG_PLACE(BPK,1)+1);
ATR2:=REF(C,REFSIG_PLACE(SPK,1)+1)+N2*REF(ATR,REFSIG_PLACE(SPK,1)+1);
BKVOL=0&&CROSSUP(C,HH1),BPK(VAR1);
CROSSDOWN(C,LL2),SP(BKVOL);
C<ATR1,SP(BKVOL);
BKVOL>0&&BKVOL<25&&CROSS(REF(C,1),(BKPRICE+REF(ATR,BARSBK)*0.5)),BK(VAR1);
SKVOL=0&&CROSSDOWN(C,LL1),SPK(VAR1);
CROSSUP(C,HH2),BP(SKVOL);
C>ATR2,BP(SKVOL);
SKVOL>0&&SKVOL<25&&CROSSDOWN(REF(C,1),(SKPRICE-REF(ATR,BARSSK)*0.5)),SK(VAR1);
TRADE_AGAIN(4);
CHECKSIG_MIN(BK,'A',0,'C',0);
CHECKSIG_MIN(SK,'A',0,'C',0);
EndFragment