入场价:价格突破20日新高做多,如N手;止损点:入场点-2倍ATR 第一次加仓价:入场价+0.5倍ATR,加N手;止损点:所有头寸(2N)的止损价都为首次入场价-1.5倍ATR 第二次加仓价:入场价+1倍ATR,加N手;止损点:所有头寸(3N)的止损价都为首次入场价-1倍ATR 第三次加仓家:入场价+1.5倍ATR,加N手,止损点:所有头寸(4N)的止损价都为首次入场价-0.5倍ATR
价格突破10日最低值,清空头寸。
我根据你的写法,把全部代码写出来了:
TR :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)); ATR:=REF(EMA(TR,20),1); N:=INTPART(MONEYTOT*0.01/(ATR*XXX));
H>REF(HV(H,20),1)&&BKVOL=0&&SKVOL=0,BK(N); BKVOL=N&&ISLASTBK&&L<BKPRICE-2*ATR,SP(BKVOL); BB:=VALUEWHEN(BKVOL>0&&COUNT(BKVOL>0,BARSLAST(BKVOL=0)+1)=1,BKPRICE); H>REF(BKPRICE,1)+0.5*ATR&&BKVOL=N&&ISLASTBK,BK(N); BKVOL=2*N&&ISLASTBK&&L<BB-1.5*ATR,SP(BKVOL); H>BB+ATR&&BKVOL=2*N&&ISLASTBK,BK(N); BKVOL=3*N&&ISLASTBK&&L<BB-ATR,SP(BKVOL); H>BB+1.5*ATR&&BKVOL=3*N&&ISLASTBK,BK(N); BKVOL=3*N&&ISLASTBK&&L<BB-0.5*ATR,SP(BKVOL); L<REF(LV(L,10),1)&&BKVOL>0,SP(BKVOL);
L<REF(LV(L,20),1)&&SKVOL=0&&BKVOL=0,SK(N); SKVOL=N&&ISLASTSK&&H>SKPRICE+2*ATR,BP(SKVOL); SS:=VALUEWHEN(SKVOL>0&&COUNT(SKVOL>0,BARSLAST(SKVOL=0)+1)=1,SKPRICE); L<REF(SKPRICE,1)-0.5*ATR&&SKVOL=N&&ISLASTSK,SK(N); SKVOL=2*N&&ISLASTSK&&H>SS+1.5*ATR,BP(SKVOL); L<SS-ATR&&SKVOL=2*N&&ISLASTSK,SK(N); SKVOL=3*N&&ISLASTSK&&H>SS+ATR,BP(SKVOL); L<SS-1.5*ATR&&SKVOL=3*N&&ISLASTSK,SK(N); SKVOL=3*N&&ISLASTSK&&H>SS+0.5*ATR,BP(SKVOL); H>REF(HV(H,10),1)&&SKVOL>0,BP(SKVOL);
其中:XXX为每个品种的合约单位,如测试股指期货,XXX为300,测试PTA,XXX为5,我没找到合约价值函数,因此用XXX代替,测试不同品种时,手工修改XXX值,不知现在有没有合约价值函数?这样直接写进去就OK了,也便于进行组合测试。
但上述模型发现一个问题,即多次加仓时,经常会发现有的加仓比上次加仓价差太大,经常会出现比上次加仓点位差合约价格的10%左右,比0.5个ATR大很多,比涨跌停比例都多很多,肯定不正常,请问这是什么原因?可以用PTA测测。
|