TR_:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅 ATR:=MA(TR_,26); //求26个周期内真实波幅的简单移动平均 TC:INTPART((ASSET*0.01/(MINDIFF*ATR))),NODRAW;//根据权益的1%计算下单手数 MTC:HOLDING,NODRAW; //总的持仓头寸 HH:=REF(HHV(H,20),1); LL:=REF(LLV(L,20),1); IF CROSS(HH,C) and BARPOS>=26 then buy(holding=0,TC,MARKET);//最新价超过20周期的最高值,首次买入开仓,手数为TC手 IF CROSS(LL,c) then buyshort(holding=0,TC,market); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
IF C>=ENTERPRICE+0.5*ATR and HOLDING<MTC and HOLDING>0 THEN buy(holding>0,TC,MARKET);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手 IF C<=ENTERPRICE-0.5*ATR and HOLDING<MTC and HOLDING<0 THEN buyshort(holding<0,TC,market);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
IF C<=(ENTERPRICE-2*ATR) AND HOLDING>0 THEN SELL(1,HOLDING,MARKET);//最新价小于开仓价减去2倍的ATR,止损平仓 IF C>=(ENTERPRICE+2*ATR) AND HOLDING<0 THEN SELLSHORT(1,HOLDING,MARKET); //最新价大于开仓价加上2倍的ATR,止损平仓 IF CROSS(h,REF(HHV(H,10),1)) AND HOLDING<0 THEN SELLSHORT(1,HOLDING,MARKET);//最高价上穿10周期最高价,平仓 IF CROSS(REF(LLV(L,10),1),L) AND HOLDING>0 THEN SELL(1,HOLDING,MARKET); //最低价下穿10周期的最低价,平仓
|