等级: 专业版
- 注册:
- 2021-8-3
- 曾用名:
|
楼主 |
发表于 2022-7-19 17:11
|
显示全部楼层
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//策略:恒温器系统
//简介:恒温器策略以其能够在震荡和趋势市场中自动调节交易行为而得名。
//类型:中长期通道突破
//周期:
//使用市场:
//详情介绍网址:http://www.weistock.com/bbs/disp ... Id=30423&page=2
//版本:1.0
//修订时间:2012.11.6
//DESIGNED BY ROGARZ
//中间变量
INPUT:M(50,5,300,30),N(1.25,0.1,10,0.1),SS(500000,500000,500000,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;
MA1:=MA(CLOSE,5);//源程序无
MA2:=MA(CLOSE,20);//源程序无
MA3:=MA(CLOSE,60);//源程序无
//趋势开多平空条件:=CROSS(MA1,MA2) ;//开多平空条件
//趋势开空平多条件:=CROSS(MA2,MA1) ;//开空平多条件
//交易条件
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
趋势开多条件:=CROSS(MA1,MA2);
趋势开空条件:=CROSS(MA2,MA1);
趋势平多条件:=CROSS(MA2,MA1);
趋势平空条件:=CROSS(MA1,MA2);
//恒温器源程序为以下四句是布林上下轨
//趋势开多条件:=C>UPPER;
//趋势开空条件:=C<LOWER;
//趋势平多条件:=C<MID;
//趋势平空条件:=C>MID;
震荡多单平仓条件:=C<=ENTERPRICE-3*ATR10;
震荡空单平仓条件:=C>=ENTERPRICE+3*ATR10;
//交易系统
IF CMI<20 THEN BEGIN {震荡模式}
IF C<关键价 THEN BEGIN
趋买市平空:SELLSHORT(趋买市开多平空条件 AND HOLDING<=0,手数,MARKET);
趋买市平多:SELL(趋买市开空平多条件 AND HOLDING>=0,手数,MARKET);
趋买市开多:BUY(趋买市开多平空条件 AND HOLDING<=0,手数,MARKET);
趋买市开空:BUYSHORT(趋买市开空平多条件 AND HOLDING>=0,手数,MARKET);
A:=1;
END
IF C>关键价 THEN BEGIN
趋卖市平空:SELLSHORT(趋卖市开多平空条件 AND HOLDING<=0,手数,MARKET);
趋卖市平多:SELL(趋卖市开空平多条件 AND HOLDING>=0,手数,MARKET);
趋卖市开多:BUY(趋卖市开多平空条件 AND HOLDING<=0,手数,MARKET);
趋卖市开空:BUYSHORT(趋卖市开空平多条件 AND HOLDING>=0,手数,MARKET);
A:=1;
END
END
IF CMI>=20 THEN BEGIN {趋势模式}
IF A:=1 THEN BEGIN //趋势模式下 原震荡模式下 仓位处理
震荡多单平仓:SELL(震荡多单平仓条件 AND HOLDING>0,手数,MARKET);
震荡空单平仓:SELLSHORT(震荡空单平仓条件 AND HOLDING<0,手数,MARKET);
A:=0;
END
IF A:=0 THEN BEGIN
趋势平空:SELLSHORT(趋势平空条件 AND HOLDING<0,手数,MARKET);
趋势平多:SELL(趋势平多条件 AND HOLDING>0,手数,MARKET);
趋势开多:BUY(趋势开多条件 AND HOLDING<=0,手数,MARKET);
趋势开空:BUYSHORT(趋势开空条件 AND HOLDING>=0,手数,MARKET);
A:=0;
END
END
//注意先平后开原则
|
|