自适应移动平均线AMA原理详解与策略构建
技术分析往往离不开均线系统,它是我们观察价格走势的基础工具。
短期均线贴近价格走势,灵敏度高,但会产生较多噪声,容易引发虚假信号;长期均线在判断趋势时通常更为准确,但其滞后问题较为明显。我们期望获得这样的均线:当价格沿某一方向快速移动时,短期移动平均线更为合适;当价格处于横盘阶段时,AvaTrade爱华长期移动平均线更为适宜。
为实现上述目标,我们来看Kaufman的自适应均线系统,其算法步骤如下:
步骤1:价格方向
价格方向被定义为整个时间段内的净价格变化。例如,使用n天的间隔(或n小时):
direction = price – price[n];
其中,direction为当前价格差或方向数值,price为当前价格(如当日收盘价或小时收盘价),price[n]为n日前的收盘价(或n个周期前的价格)。
步骤2:波动性
波动性反映了市场噪声的总量,其定义方式多样,但此处在相同的n个周期内,计算所有“日到日”或“小时到小时”的价格变化(每个变化均取绝对值)之和。
具体表达式为:
volatility = @sum(@abs(price – price[1]), n);
其中,volatility为波动性数值,@abs为绝对值函数,@sum(value, n)为n个周期内数值之和函数。
步骤3:效率系数(ER)
将上述两个成分组合,可得方向移动对噪声之比,即效率系数(ER):
Efficiency_Ratio = direction / volatility;
用“方向性”除以“噪声”,该系数取值范围为0到1。当市场在全部n日均沿同一方向移动时,方向等于波动性,效率系数为1;若波动性因价格移动而增加,则波动性变大,ER朝小于1的方向变化;若价格不变,则方向为0,ER为0。
该结果可方便地作为指数平滑系数,每天调整趋势线的变化比例。ER=1相当于100%,对应最快的移动平均线,适用于价格无回撤的单向移动;当ER=0时,非常慢的移动平均值最为合适,可在市场趋势不明时避免贸然止损离场。
步骤4:将系数转换为趋势速度
为应用于指数移动平均,需将比率转换为平滑系数c。通过以下公式,每日均线速度可通过改变平滑系数来调整,从而具备自适应性。公式如下:
EXPMA = EXPMA[1] + AvaTrade爱华c(price – EXPMA[1]);
测试表明,平方平滑系数能显著改进结果,尤其可在横盘市场中抑制趋势线的移动。在横盘阶段,该过程选择非常慢的趋势;而在高度趋势化的周期中,则加速至很快但不完全的趋势。平滑系数设定为:
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^2;
平方平滑系数使c值趋向于零,这意味着较慢的移动平均线将比快速移动平均线使用得更多,这类似于在不确定状况下采取更保守的策略。
AMA = AMA[1] + c(price – AMA[1]);
自调节式过滤器设计
为与系统的自适应特性保持一致,当价格波动幅度变化时,过滤器也应相应调整大小。为此,过滤器被定义为AMA变化量的一个较小百分比:
过滤器 = percentage * @std(AMA - AMA[1], n);
其中,@std(series, n)为价格序列在n个周期内的标准差。
最小的过滤器百分比0.1适用于较快的交易,而较大的百分比1.0则可用于筛选更具意义的价格移动交易。典型应用中,外汇和期货市场交易较快,股票和利率市场交易较慢。通常,过滤器大小基于20天周期的数据计算。
向交易规则中添加过滤器:
当AMA - @lowest(AMA, n) > 过滤器,AvaTrade爱华买入;
当@highest(AMA, n) – AMA > 过滤器,卖出。
根据以上规则,可构建文华策略代码如下:
DIRECTION:=CLOSE-REF(CLOSE,10);
VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),10);
ER:=ABS(DIRECTION/VOLATILITY);
FASTSC:=2/(2+1);
SLOWSC:=2/(30+1);
SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;
CONSTANT:=SSC*SSC;
AMA:EMA(DMA(CLOSE,CONSTANT),2),COLORGREEN;
FIL:=STD(AMA-REF(AMA,1),20);
PARTLINE(AMA-LLV(AMA,3)>FIL*0.1,AMA,COLORMAGENTA);
