自适应均线(一) 我们跟踪股票的走势,必然离不开均线作为参考。均线系统是我们观察股票走势的基础。 短期均线不能很好地屏蔽市场的噪声,往往产生虚假的进场信号;长期均线在判断趋势上一般比较准确,但是长期均线有着严重滞后的问题。一个股票的10日内的突发性的上涨,如果用200日均线去观察,几乎看不出变化。 均线系统存在的问题,让我们每一个股市的参与者感到左右为难。寻找最佳的移动平均值就成了大家乐此不疲的一种日常活动。由于每次市场的波动,趋势的速度都是不同的,所以在每一波的波动中,采用多少周期的移动平均值才能最好地反映趋势的方向呢? 有一个流行的解决方法,就是针对某一只股票测试其历史数据的最佳移动平均值。并且根据最近的、最符合其趋势的移动平均值去进行操作。但是历史数据只代表已经走过的趋势,我们不可能回到过去进行交易。 通过分析我们使用的移动平均线,可以得出如下的结论: 当价格沿一个方向快速移动时,短期的移动平均线是最好的。 当价格在横盘的过程中,长期移动平均线是最好的。 我们理想中的移动平均线是什么样子的呢? 当价格无目标地移动时,它的反映会比较慢,像长期移动平均线; 当价格有了快速变化的时候,它又能很快地跟上价格的走势,像短期移动平均线。 这样的移动平均线存在吗? 当然存在! 很多国外的股票技术分析书籍中都提到过这样的均线,把这种自适应的均线系统作为计算机自动交易系统中趋势判断最主要的手段。其实这样的自适应均线每一个股票的软件都可以做到,并且非常简单。 当自适应均线横向移动的时候,表明市场处于横盘过程中; 只有在自适应均线向上移动的时候,才是我们进场操作的时机。
自适应均线(二) 要构建自适应的均线,我们就必须先确定股票价格的趋势和速度。当股票价格持续上涨或持续下跌的时候,自适应均线就应该采用短周期均线的平滑系数;而当市场处于横盘波动过程中的时候,自适应均线就应该采用长周期的平滑系数。 如果采用指数平滑移动平均线的平滑系数,最短周期采用2日EMA,长周期采用30日EMA。那么自适应均线应该在2日-30日EMA之间平滑过渡。 还有一个问题:如何测量价格变动的速率。 采用的方法是,在一定的周期内,计算每个周期价格的变动的累加,用整个周期的总体价格变动除以每个周期价格变动的累加,我们采用这个数字作为价格变化的速率。如果股票持续上涨或下跌,那么变动的速率就是1;如果股票在一定周期内涨跌的幅度为0,那么价格的变动速率就是0。变动速率为1,对应的最快速的均线-2日的EMA;变动速率为0
,则对应最慢速的均线-30日EMA。 以通达信软件的公式为例(其他软件也可以用): 每个周期价格变动的累加:=sum(abs(close-ref(close,1)),n); 整个周期价格的总体变动:=abs(close-ref(close,n)); 变动速率:=整个周期价格的总体变动/每个周期价格变动的累加; 在本文中,一般采用周期n=10。 ·使用10周期去指定一个从非常慢到非常快的趋势; ·在10周期内当价格方向不明确的时候,自适应均线应该是横向移动;
自适应均线(三)
上面两部分已经把自适应均线系统的原理做了比较粗略的介绍。其实自适应均线系统是一个很简单的指标公式,似乎没有必要很罗唆地说那么多原理性的东西。 现在很多人喜欢“黑匣子”式的指标公式,只要系统能够发出买卖信号就可以了。但是“黑匣子”并不告诉你买卖的理由,你也不知道市场到底因为发生了些什么“黑匣子”才会发出“买”和“卖”的指令。 如果自适应均线系统的周期n=10,那么: 1。自适应均线系统横向移动时,系统告诉你:最近的10个周期中,价格上涨的幅度和下跌的幅度基本相当,(是幅度,而不是周期数); 2。自适应均线系统向上翘起时,系统告诉你:最近10个周期中,价格上涨的幅度要大于下跌的幅度,价格逐渐进入强势的状态。 3。自适应均线系统向下垂时,系统告诉你的情形和2的情形正好相反。 有关原理性的东西就说到这里了,下面给出自适应均线系统的指标公式,此公式在通达信、大智慧、飞狐软件中均调试通过: {主图公式,或者附图叠加K线公式} {n=10} DIR:=ABS(CLOSE-REF(CLOSE,n)); VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),n); ER:=DIR/VIR; CS:=ER*(2/3-2/31)+2/31; CQ:=CS*CS; AMA:DMA(CLOSE,CQ),COLORGREEN; AMA1:IF(AMA>REF(AMA,1),AMA,DRAWNULL),COLORRED; 这样做出的自适应均线已经可以使用,但是如果对自适应均线做一次2周期的EMA,也是可以接受的,代码如下: {主图公式,或者附图叠加K线公式} {n=10} DIR:=ABS(CLOSE-REF(CLOSE,n)); VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),n); ER:=DIR/VIR; CS:=ER*(2/3-2/31)+2/31; CQ:=CS*CS; AMA:EMA(DMA(CLOSE,CQ),2),COLORGREEN; AMA1:IF(AMA>REF(AMA,1),AMA,DRAWNULL),COLORRED,LINETHICK2;
自适应均线系统(四)
一、考夫曼的做法: 自适应均线系统的交易法则,根据考夫曼《精明交易者》一书中的介绍,其基本交易法则为: 1.当自适应移动平均值向上拐头时,买入; 2.当自适应移动平均值向下拐头时,卖出。 当价格横向移动时,上述的交易方式将频繁产生进出交易的假信号。为了避免假信号的干扰,应该向AMA交易系统中添加一个过滤器。这个过滤器是根据自适应均线变化的标准差的百分比来确定。 根据这个原理,自适应均线的公式可做如下的完善: DIR:=ABS(CLOSE-REF(CLOSE,10)); VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),10); ER:=DIR/VIR; CS:=ER*(2/3-2/14)+2/14; CQ:=CS*CS; AMA:EMA(DMA(CLOSE,CQ),2),COLORGREEN; FIL:=STD(AMA-REF(AMA,1),20); DRAWICON(FILTER(AMA-LLV(AMA,3)>FIL*0.1,10),AMA,1);
二、我实际的操作方法:
本人在使用自适应均线的中,并没有采用考夫曼的方式。 当自适应均线拐头向上时,必须使用连续两天的日K线确认趋势,当连续两根日K线均处于自适应均线上方时,方可确认上升趋势。 1.第一根日K线应该从自适应均线的下方向上穿越自适应均线; 2.第二根日K线,不论是阴线还是阳线,均不应跌破自适应均线,这时,可确认股价进入上升趋势。 3.以第一根穿越自适应均线的最高点【或者K线实体的高点】为标准,在后面的3天之内,股价高于这个标准的时候,为买入点。 4.卖出点也是以连续2日的K线低于自适应均线为卖出信号,如果连续两条价格不能收在自适应均线的上方,则必须卖出。
自适应均线(五) 通过在MACD股票论坛中的交流,对自适应均线的使用做了一些改动。根据网友baifq的建议,采用两条自适应均线,分别适用短周期和长周期。并且对长周期均线做了三色处理。 交易法则: 1、长周期均线为绿色时,不可操作; 2、长周期为蓝色,股价穿越短周期均线时,可建50%的仓位; 3、股价穿越长期均线时,可再建50%仓位; 4、股价跌破短周期均线时,减掉50%仓位; 5、股价跌破长周期均线时,卖出全部股票; 6、长周期均线为红色时,代表持股。
以下是修改后的代码:【通达信】 DIR1:=ABS(CLOSE-REF(CLOSE,5)); VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),5); ER1:=DIR1/VIR1; CS1:=ER1*(0.8-2/8)+2/8; CQ1:=CS1*CS1; AMA1:EMA(DMA(CLOSE,CQ1),2)
,COLORWHITE; DIR2:=ABS(CLOSE-REF(CLOSE,10)); VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),10); ER2:=DIR2/VIR2; CS2:=ER2*(0.8-2/24)+2/24; CQ2:=CS2*CS2; AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2; AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2; 经过上述修改后,短期均线更适合短线操作,并能为长期趋势提供比较准确的买卖点。 长期来说,价格会显示一种回归其本来价值的特性,在二维图形上显示一种收敛或者说回归均值的图形。这似乎也反映了政府金融或利息政策改变所带来的影响。 一个超出市场平均波动周期的趋势则可能是一个好的趋势,一个波动周期如有特别变化的关键变量,则趋势有可能发生改变,在股市上通常表现为量能和价格区间的变化。 以下为Perry
J.Kaufman的自适应移动平均系统,资料来源于其著作《Smarter Trading》。 关于移动平由一个时间周期的价格平均值构成,并以单位时间的价格周期不断计算,加入新的一个单位时间的价格时去掉第一个单位时间的价格,并计算平均值。一个过去几天的平均值,减少了人为的由消息引起的过激反应的影响。平均较长的数据周期,给出了较平滑的趋势,其结果经常是长期市场方向的一个很好的代表,也反映了市场运行状况和人们对于利率和政策的预期。
趋势系统
趋势计算把价格移动归纳为一个净方向,并假设价格将会继续沿着这个方向运动。趋势跟踪系统则是对趋势作出反应,而不是对它们进行预期。
噪音 一个持续横盘的期的波动水平,可以很方便的用来测量内在噪音。如果一个趋势是由一个不大于市场内在噪音水平移动所引起的,那么这个趋势就是不可靠的。
自适应 当市场沿着一个方向快速移动时,快得移动平均值是最好的。 当市场在横盘的市场中立拉锯时,慢的移动平均值是最好的。
三种价格波动性测量 a.
简单地计算价格的净变化,从开始点到结束点。这倾向于最保守的测量,因为它平滑了从开始到结尾之间发生的任何价格移动。 b. 高-低范围更好地描述了在周期内可能产生的任意极端值。 c.
所有变化总和,它是最概括的测量,因为能识别一个价格移动从高到低的次数。
自适应移动平均值
步骤1:价格方向 价格方向被表示为整个时间段中的净价格变化。比如,使用n天的间隔(或n小时): 步骤2:波动性 波动性是市场噪音的总数量,计算了时间段内价格变化的总和 volatility= @ sum( @
abs(price-price[1]),n) 步骤3:效率系数(ER) 方向移动对噪音之比,成为效率系数ER Efficiency_Ratio =
direction/volatility 步骤4:变换上述系数为趋势速度 为了应用于一个指数式移动平均值,比率将被变换为一个平滑系数c,依靠使用下面的公式,每天的均线速度可以简单地用改变平滑系数来改变,成为自适应性的。公式: @exp_ma=@exp_ma[1]+c*(price- @ exp_ma[1]) 公式表明,EMA以一个百分比c来接近于今日的收盘价。系数c与一个标准移动平均值中天数密切相关,这关系是2/(n-1),其中n是天数。 在横盘的市场中这个过程选择了非常慢的趋势,而在高度趋势化的周期中加速至非常快的趋势(但不是100%)。这个平滑系数是:
fastest =2/(N+1) =2/(2+1) =0.6667 slowest =2/(N+1)
=2/(30+1) =0.0645 smooth
=ER*(fastest-slowest)+slowest c=smooth*smooth
平方平滑迫使c的数值趋向于0,这意味着较慢的移动平均值将比快速的移动平均值用得更多。这和在出现不确定状况时你就更加保守是一样的道理。
AMA = AMA[1] + c * (price -
AMA[1])
考夫曼自适应变色均线系统
N:1 100
10 M:1 100
30
通达信主图源码(日线及以上周期)
DIR1:=ABS(CLOSE-REF(CLOSE,N)); VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N); ER1:=DIR1/VIR1; CS1:=ER1*(0.8-2/8)+2/8; CQ1:=CS1*CS1; AMA1:EMA(DMA(CLOSE,CQ1),2)
,COLORWHITE; DIR2:=ABS(CLOSE-REF(CLOSE,M)); VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M); ER2:=DIR2/VIR2; CS2:=ER2*(0.8-2/24)+2/24; CQ2:=CS2*CS2; AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2; AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;
博易大师主图源码(日线及以上周期)
DIR1:=ABS(CLOSE-REF(CLOSE,N)); VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N); ER1:=DIR1/VIR1; CS1:=ER1*(0.8-2/8)+2/8; CQ1:=CS1*CS1; AMA1:EMA(DMA(CLOSE,CQ1),2)
,COLORWHITE; DIR2:=ABS(CLOSE-REF(CLOSE,M)); VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M); ER2:=DIR2/VIR2; CS2:=ER2*(0.8-2/24)+2/24; CQ2:=CS2*CS2; AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2; PARTLINE(AMA2/REF(AMA2,1)>0.997,AMA2),COLORBLUE,LINETHICK2; PARTLINE(AMA2/REF(AMA2,1)>1.001,AMA2),COLORRED,LINETHICK2;
通达信主图源码(日线及以上周期)
DIR1:=ABS(CLOSE-REF(CLOSE,5)); VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),5); ER1:=DIR1/VIR1; CS1:=ER1*(0.8-2/8)+2/8; CQ1:=CS1*CS1; AMA1:EMA(DMA(CLOSE,CQ1),2)
,COLORWHITE; DIR2:=ABS(CLOSE-REF(CLOSE,10)); VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),10); ER2:=DIR2/VIR2; CS2:=ER2*(0.8-2/24)+2/24; CQ2:=CS2*CS2; AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2; AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;
|