本帖最后由 技术003 于 2021-5-20 16:38 编辑
//转自旧论坛版主_RogarZ
布林强盗交易系统 布林带(BOLL)是由John Bollinger在20世纪60年代创建的。最初,布林带是用来判断市场走势的边界,现在国内很多人也依然这么用,即当价格移动到上轨或下轨附近后,预测价格将会回归到中轨。但是经过测试,已经发现将上、下轨作为突破指标的效果要远好于做为阻力指标。 布林强盗交易系统是一个中长线策略(本例假想的使用周期是日线),将采用后者的规则,价格超过50日移动平均线上方1个标准差作为买进信号的标准,跌破50日移动平均线下方1个标准差作为卖出信号的标准(主体交易条件)。 除了上文讲到的主体交易系统外,作为通道趋势交易,布林强盗交易系统还增加了确认模块。 之前我们提到过上轨下轨是潜在的买入卖出点。这里潜在的是一个关键字眼。在建立头寸前我们必须进行多次确认:当日收盘价必须高于30日前的收盘价才能做多,当日收盘价必须低于30 日前的收盘价才能做空。这个额外的要求是一个趋势过滤器。我们只希望在上升趋势中做多或者在下降趋势中做空。 接下来要介绍一个该系统最具特色一个部分——出场:我们都知道常规3条线组成的通道策略,都是以突破上下轨开仓,回归中轨平仓。但是这种平仓方式,将舍弃很大一块利润。布林强盗交易系统采用了一个较另类、较积极的方式(主条件):当建立仓位时,保护性止损设置在50 日均线(中轨)。之后持有头寸的时间每多一天,计算移动平均线的天数减一。持有头寸时间越长,我们越容易带着利润离场。计算移动平均线的天数最小可以递减到10。如果达到10,则不再递减。除了主条件,次交易为如果持多仓,移动平均低于上轨发出平仓信号;如果持空仓,移动平均(代码中的出场MA)高于下轨发出平仓信号。加入这个离场条件是为了防止布林强盗系统在止损之后重复入场。如果我们不使用这个离场条件,当移动平均在上轨上方时,多头入场条件仍然成立,因此多头头寸将会建立。 总结: 入场条件: 价格突破布林带上轨,收盘价大于30周期收盘价最高值,即做多; 价格跌破布林带下轨,收盘价小于30周期收盘价最低值,即做空; 出场条件: 持多仓的情况下,收盘价小于出场MA,出家MA小于上轨,平仓。 持空仓的情况下,收盘价大于出场MA,出家MA大于下轨,平仓。 出场MA的值根据持仓周期变化。刚开仓为50,持仓每增加一个周期,减1,最小到10。
//策略:布林强盗系统 //类型:中长期通道突破 //版本:1.0 //修订时间:2012.11.4 //Designed By Rogarz //中间变量 input:m(50,5,300,30),N(1.25,0.1,10,0.1),d(30,1,100,1),ss(1,1,100,1); variable:x:=50; MID:MA(CLOSE,M);//布林中轨 UPPER:MID + N*STD(CLOSE,M);//布林上轨 LOWER:MID - N*STD(CLOSE,M);//布林下轨 CYC:=enterbars+1,noaxis;//开仓至今的周期数 HC30:=ref(hhv(c,d),1);//30周期收盘价高点 LC30:=ref(LLV(c,d),1);//30周期收盘价低点 手数:=ss; 出场MA:ma(close,if(holding<>0,if(cyc>=40,10,51-cyc),50)); //交易条件 开多平空条件:=c>HC30 and h>ref(upper,1);//收盘价大于30周期收盘价最高值,且最高价上穿上轨 开空平多条件:=c<LC30 and L<ref(lower,1);//收盘价小于30周期收盘价最高值,且最低价下穿下轨 多头出场条件:=c<出场MA and 出场MA<upper; 空头出场条件:=c>出场MA and 出场MA>LOWER; //交易系统 多头出场:sell(多头出场条件 and holding>0,手数,limitr,c); 空头出场:sellshort(空头出场条件 and holding<0,手数,limitr,c); 平空:sellshort(开多平空条件 and holding<0,手数,limitr,c); 平多:sell(开空平多条件 and holding>0,手数,limitr,c); 开空:buyshort(开空平多条件 and holding>=0,手数,limitr,c); 开多:buy(开多平空条件 and holding<=0,手数,limitr,c);
//注意先平后开原则 这个策略的出场规则也可以用于开拓止盈止损思路。
|