tag 标签: break经管大学堂:名校名师名课

相关帖子

版块 作者 回复/查看 最后发表

相关日志

分享 The Dynamic Break Out Strategya II
老渔夫 2014-4-20 11:16
策略简述: 开多:昨收高于布林上轨且最高价大于等于X(X由自适应模块决定)周期最大的最高价。 开空: 昨收低于布林下轨且最高价小于等于X(X由自适应模块决定)周期最小的最低价。 平多平空:X(X由自适应模块决定)周期的收盘价移动平均。 策略详述: 动态突破策略由George Pruitt 首次发表在1966年期货杂志上,之后被广泛地使用在各类市场上,取得了非常傲人的成绩。现今,在原系统上加入一个自适应参数调整模块,形成了新的动态突破II系统。 动态突破II最值得称道的地方就在于它能根据市场情况自动调节参数,它的基础是唐奇安通道. 那么,如何设计出自适应参数调节功能模块呢? 在动态突破II中,采用市场波动率作为评判标准。这种想法还是源自经典的唐奇安通道。若基于唐奇安通道做优化的话,会发现同一个市场不同时期最优值是不同的。大的波动率常常代表市场方向不明朗,我通过增大回溯值,让策略更难触发交易;小的波动率常代表趋势市场,通过减少回溯值,让系统更容易交易。这样这样可以使系统锁定长期趋势利润而又能在趋势发生改变时及时出场。当然利用市场波动率作为参数调节并不是唯一选择,完全可以选用其它效果类似的指标来自动调节参数,从而来决定出场点。 需注意的是,自适应参数的调节区间是有范围的。在这个例子中,动态突破II的回溯值在20—60之间,参数也设在这个范围内。 对于进场点,动态突破II一开始用过去20天来计算买卖界限,第一次买点就是过去20天最大的最高价,第一次卖点就是20天的最小值。每天结束后用30天收盘价的标准差作为市场波动率(也可以其他指标来估计波动率,如平均波动幅度,真实波动幅度,收盘价变化的标准差等等。确定当天的市场波动率后,按数值与前一日做比较,按波动的幅度来确定回溯值,如果波动率增长了10%,那么相应的回溯值也增大10%。 除此以外,还将采用一个自适应布林带 ——其作为一个“确认”技术指标。 至于出场点,该策略使用X周期收盘价移动平均值,当然也是由回溯值决定。 代码: //策略:动态突破II //类型:中长期 //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,回溯值); //交易条件 开多条件:=CLOSEX周期最高价 AND CLOSEUPPER; 开空条件:=CLOSEX周期最低价 AND CLOSELOWER; 平多条件:=CLOSEX周期收盘移动平均; 平空条件:=CLOSEX周期收盘移动平均; //交易系统 平多:sell(平多条件 and holding0,手数,market); 平空:sellshort(平空条件 and holding0,手数,market); 开多:buy(开多条件 and holding=0,手数,market); 开空:buyshort(开空条件 and holding=0,手数,market); //其他 资金:asset,noaxis,colorred; 持仓:holding,linethick0; // Reference: Building Winning Trading Systems with TradeStation Inputs: ceilingAmt(60),floorAmt(20),bolBandTrig(2.00); Vars: lookBackDays(20),todayVolatility(0),yesterDayVolatility(0),deltaVolatility(0); Vars: buyPoint(0),sellPoint(0),longLiqPoint(0),shortLiqPoint(0),upBand(0),dnBand(0); todayVolatility = StdDev(Close,30); yesterDayVolatility = StdDev(Close ,30); deltaVolatility = (todayVolatility - yesterDayVolatility)/todayVolatility; lookBackDays = lookBackDays * (1 + deltaVolatility); lookBackDays = Round(lookBackDays,0); lookBackDays = Min(lookBackDays,ceilingAmt); lookBackDays = Max(lookBackDays,floorAmt); upBand = BollingerBand(Close,lookBackDays,+bolBandTrig); dnBand = BollingerBand(Close,lookBackDays,-bolBandTrig); buyPoint = Highest(High,lookBackDays); sellPoint = Lowest(Low,lookBackDays); longLiqPoint = Average(Close,lookBackDays); shortLiqPoint = Average(Close,lookBackDays); if(Close upBand) then Buy("DBS-2 Buy") next bar at buyPoint stop; if(Close dnBand) then Sell("DBS-2 Sell") next bar at sellPoint stop; if(MarketPosition = 1) then ExitLong("LongLiq") next bar at longLiqPoint stop; if(MarketPosition = -1) then ExitShort("ShortLiq") next bar at shortLiqPoint stop; 经典的Bollinger系统留下两个问题,一个是时间窗需要多长,一个是带宽需要多宽。自适应布林线解决了上述2个问题。它的唯一的直接参数就是LBD(LookBackDays),且随着市场的变化而变化。 {自适应布林带 DZH} VARIABLE:CLA=60,FLA=20,BBT=2; VARIABLE:LBD=20; IF BARPOS=60 THEN BEGIN TV:=STD(Close,30); YV:=STD(REF(close,1),30); deltaV:=(TV-YV)/TV; LBD:=LBD*(1+deltaV); LBD:=INTPART(LBD); LBD:=Min(LBD,CLA); LBD:=max(LBD,FLA); MID:MA(CLOSE,LBD); UP:MID + BBT*STD(CLOSE,LBD); DN:MID - BBT*STD(CLOSE,LBD); end; STICKLINE(CO,H,C,0,1),COLORRED; STICKLINE(CO,L,O,0,1),COLORRED; STICKLINE(CO,O,C,8,1),COLORRED; STICKLINE(CO,H,O,0,0),COLORCYAN; STICKLINE(CO,L,C,0,0),COLORCYAN; STICKLINE(CO,O,C,8,0),COLORCYAN; STICKLINE(C=O,H,C,0,1),COLORWHITE; STICKLINE(C=O,L,O,0,1),COLORWHITE; STICKLINE(C=O,O,C,8,1),COLORWHITE;
个人分类: 成熟的程序交易系统|144 次阅读|0 个评论
GMT+8, 2025-12-24 23:15