[PEL] 复制代码
//中间变量
INPUT:M(50,5,300,30),N(1.25,0.1,10,0.1),SS(1,1,10000,1),K1(0.5,0.1,1,0.1),K2(0.75,0.1,1,0.1);
VARIABLE:A:=0;//0表示仓位是在趋势模式下下单 1表示在震荡模式下下单
MID : MA(CLOSE,M);//布林中轨
UPPER:MID + N*STD(CLOSE,M);//布林上轨
LOWER:MID - N*STD(CLOSE,M);//布林下轨
今开:=CALLSTOCK(STKLABEL,VTOPEN,6,0);
CMI:=ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(L,30))*100;//0-100 取值越大,说明趋势越强,CMI<20震荡模式,反之为趋势
关键价:(HIGH+LOW+CLOSE)/3;//关键价的计算,国外常称作中枢价格(PIVOT POINT)
ATR10:=MA(TR,10);
3日均低价:=MA(L,3);
3日均高价:=MA(H,3);
手数:=SS;
//交易条件
IF C<关键价 THEN BEGIN
趋买市开多条件:=C>MAX(今开+K1*ATR10,3日均低价);
趋买市平多条件:=C<MIN(今开-K2*ATR10,3日均高价);
END
IF C>关键价 THEN BEGIN
趋卖市开多条件:=C>MAX(今开+K2*ATR10,3日均低价);
趋卖市平多条件:=C<MIN(今开-K1*ATR10,3日均高价);
END
趋势开多条件:=C>UPPER;
趋势平多条件:=C<MID;
震荡多单平仓条件:=C<=ENTERPRICE-3*ATR10;
//交易系统
IF CMI<20 THEN BEGIN {震荡模式}
IF C<关键价 THEN BEGIN
可平:=HOLDING-DAYHOLDING;
趋买市平多:SELL(趋买市平多条件 AND 可平>0,可平,MARKET);
趋买市开多:BUY(趋买市开多条件 AND HOLDING=0,手数,MARKET);
A:=1;
END
IF C>关键价 THEN BEGIN
可平:=HOLDING-DAYHOLDING;
趋卖市平多:SELL(趋卖市平多条件 AND 可平>0,可平,MARKET);
趋卖市开多:BUY(趋卖市开多条件 AND HOLDING<=0,手数,MARKET);
A:=1;
END
END
IF CMI>=20 THEN BEGIN {趋势模式}
IF A:=1 THEN BEGIN //趋势模式下 原震荡模式下 仓位处理
可平:=HOLDING-DAYHOLDING;
震荡多单平仓:SELL(震荡多单平仓条件 AND 可平>0,可平,MARKET);
A:=0;
END
IF A:=0 THEN BEGIN
可平:=HOLDING-DAYHOLDING;
趋势平多:SELL(趋势平多条件 AND 可平>0,可平,MARKET);
趋势开多:BUY(趋势开多条件 AND HOLDING=0,手数,MARKET);
A:=0;
END
END
//注意先平后开原则
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
今仓:DAYHOLDING;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值