最近一直忙著轉換工作跑道,好久沒寫新文章XDD
本次介紹一個算是自適應移動平均線(動態參數均線)的始祖-AMA
(Adaptive Moving Average) 指標,AMA指標由New Trading Systems and Methods的作者Perry J.
Kaufman創造。
AMA使用指數移動平均線(EMA)為基礎,修改的自適應動態參數均線。AMA的基本概念為,先給定一個參數的範圍,接著利用走勢的趨勢度來決定目前均線週期的長短 。
下圖為兩個相似運動方向的市場走勢,但擁有不同的雜訊大小。
上面走勢雜訊比較小、趨勢度較高,因此較適合快速的均線。
下面走勢雜訊比較大、趨勢度較低,因此較適合慢速的均線。
AMA指標程式碼
// Adaptive Moving Average
Inputs: Period(10),LengthF(2),LengthS(30);
Vars:
Noise(0), Signal(0), Diff(0), efRatio(0), Smooth(1),
Fastest(2/(LengthF+1)),
Slowest(2/(LengthS+1)), AdaptMA(0), AMAFltr(0);
Diff = AbsValue(Close - Close[1]);
IF CurrentBar <= Period Then AdaptMA = Close;
IF CurrentBar > Period Then Begin
Signal = AbsValue(Close - Close[Period]);
Noise = Summation(Diff, Period);
if Noise <> 0 then
efRatio = Signal / Noise;
Smooth = Power(efRatio * (Fastest - Slowest) + Slowest, 2);
AdaptMA = AdaptMA[1] + Smooth * (Close - AdaptMA[1]);
End;
AMA指標程式碼介紹
AMA指標計算主要為計算市場上目前的訊雜比(signal
to noise ratio),藉由訊雜比,而動態修改EMA的alpha值,如下式
KAMA = alpha * close + (1-alpha) * KAMA[1]
AMA有三個參數Period(10),LengthF(2),LengthS(30),第一個參數Period(10)為計算在週期10根bar內的雜訊比,而 LengthF(2),
LengthS(30)為動態均線參數的上下限。
以下為訊雜比/效率比efRatio的計算
Diff = AbsValue(Close - Close[1]);
Signal = AbsValue(Close - Close[Period]);
Noise = Summation(Diff, Period);
efRatio = Signal / Noise;
Diff(差值)為今天跟昨天收盤的價差(AbsValue為取絕對值即正值)。
Signal值(訊號值)是今天與Period天前的收盤價差,也就是Momentum動量指標的公式(代表趨勢方向也取其絕對值)。
Noise值(這邊的雜訊值也是一種波動率volatility的計算方式)則使用Summation函式計算Period天內Diff的總和。
最後我們再把efRatio平滑一次求出Smooth值。
Smooth值以Slowest為基礎值加Fastest跟Slowest差值乘上efRatio,讓Smooth能介於2到30天的數據中做變動,最後做平方運算(Power或Pow為平方運算函式)。
Smooth值也是我們最終所要的代入EMA公式的真正平滑因子alpha。最後將Smooth值帶入EMA公式,即可求得AMA的值。
下圖為台指60K的AMA均線及AMA訊雜比的圖,參數為Period(50), LengthF(2),LengthS(50)。
可以從圖中觀察到,AMA均線在趨勢行情時,變化速度較快,均線可以快速跟上價格。而在行情變盤整無趨勢時,AMA均線變化速度較慢。
而AMA訊雜比可以當作一個趨勢程度的指標。走勢越乾淨(越有效率)時,EfRatio值就越大。
版大請問這篇文章可以轉載嗎?
回覆刪除我想貼到我的部落格,
註明引用出處,謝謝。
歡迎轉載~
刪除