动态突破II
The Dynamic Break Out Strategya II
策略简述:
开多:昨收高于布林上轨且最高价大于等于X(X由自适应模块决定)周期最大的最高价。
开空: 昨收高于布林上轨且最高价大于等于X(X由自适应模块决定)周期最大的最高价。
平多&平空:X(X由自适应模块决定)周期的收盘价移动平均。
策略详述:
动态突破策略由George Pruitt 首次发表在1966年期货杂志上,之后被广泛地使用在各类市场上,取得了非常傲人的成绩。现今,在原系统上加入一个自适应参数调整模块,形成了新的动态突破II系统。
动态突破II最值得称道的地方就在于它能根据市场情况自动调节参数,它的基础是唐奇安通道.
那么,如何设计出自适应参数调节功能模块呢? 在动态突破II中,我们将采用市场波动率作为评判标准。这种想法还是源自经典的唐奇安通道。若我们基于唐奇安通道做优化的话,会发现同一个市场不同时期最优值是不同的。大的波动率常常代表市场方向不明朗,我们通过增大回溯值,让策略更难触发交易;小的波动率常代表趋势市场,通过减少回溯值,我们让系统更容易交易。这样这样可以使系统锁定长期趋势利润而又能在趋势发生改变时及时出场。当然利用市场波动率作为参数调节并不是唯一选择,大家完全可以选用其它效果类似的指标来自动调节参数,从而来决定出场点。
需注意的是,自适应参数的调节区间是有范围的。在这个例子中,动态突破II的回溯值在20—60之间,参数也设在这个范围内。
对于进场点,动态突破II一开始用过去20天来计算买卖界限,第一次买点就是过去20天最大的最高价,第一次卖点就是20天的最小值。每天结束后用30天收盘价的标准差作为市场波动率(也可以其他指标来估计波动率,如平均波动幅度,真实波动幅度,收盘价变化的标准差等等。确定当天的市场波动率后,按数值与前一日做比较,按波动的幅度来确定回溯值,如果波动率增长了10%,那么相应的回溯值也增大10%。
除此以外,我们还将采用一个自适应布林带(可参考布林强盗系统)——其作为一个“确认”技术指标。
至于出场点,该策略使用X周期收盘价移动平均值,当然也是由回溯值决定。
代码:
//策略:动态突破II
//类型:中长期
//版本:1.0
//修订时间:2012.11.18
//DESIGNED BY ROGARZ
//中间变量
INPUT:SS(1,1,100,1),M(26,5,300,30),N(2,0.1,10,1);// 定义参数
VARIABLE:回溯值:=20;//定义全局变量
MID := MA(CLOSE,M);//布林中轨
UPPER: MID + N*STD(CLOSE,M);//布林上轨
LOWER: MID - N*STD(CLOSE,M);//布林下轨
手数:=ss;
//自适应模块
市场波动率:=STD(CLOSE,30);
昨日市场波动率:=STD(REF(CLOSE,1),30);
波动率的变化率:=(市场波动率-昨日市场波动率)/市场波动率;
回溯值:=(1+波动率的变化率)*回溯值;//LOOKBACKDAYS
回溯值:=ROUND(回溯值);//取整
回溯值:=MIN(回溯值,60);//确认回溯值不大于60
回溯值:=MAX(回溯值,20);//确认回溯值不小于20
X周期最高价:REF(HHV(H,回溯值),1);
X周期最低价:REF(LLV(L,回溯值),1);
X周期收盘移动平均:MA(CLOSE,回溯值);
//交易条件
开多条件:=CLOSE>X周期最高价 AND CLOSE>UPPER;
开空条件:=CLOSE<X周期最低价 AND CLOSE<LOWER;
平多条件:=CLOSE<X周期收盘移动平均;
平空条件:=CLOSE>X周期收盘移动平均;
//交易系统
平多:sell(平多条件 and holding>0,手数,market);
平空:sellshort(平空条件 and holding<0,手数,market);
开多:buy(开多条件 and holding<=0,手数,market);
开空:buyshort(开空条件 and holding>=0,手数,market);
//其他
资金:asset,noaxis,colorred;
持仓:holding,linethick0;