HMA簡介
HMA基本上是從WMA(Weighted Moving Average)進化而來,WMA基本上就是給最近的收盤價最高權重,依序等量遞減(WMA與EMA的差別,就是權重遞減方是不同,前者等量遞減,後者以指數式遞減,有興趣進一步了解可參考本文),在MultiCharts裡計算WMA是函式XAverage(Price, Length),接下來,輪到HMA登場,我們先看發明者Hull本人是怎麼發明出HMA的。
以下是從0~9共10個價格數字,平均值為4.5,姑且先稱為MA_all,顯然4.5是離最近的價格9距離太遠,正好顯露出MA反應遲鈍的問題,Hull的做法是再算最近5個值的平均值(5~9),MA_w=7,然後由於MA_w是計算比較近期的價格,應給較高權重,所以他接著以2*MA_w-MA_all的方法來把權重再一次調整。
PowerLanguage程式碼
以上就是HMA的主要精神,接下來我們直接看程式碼:
================================================
inputs:Length(20) ;
vars:MA(0),HMA(0);
MA=2*WAverage(close,IntPortion(Length*0.5))-WAverage(close,Length);
HMA=WAverage(MA,IntPortion(SquareRoot(Length)));
Plot1(HMA,"HMA") ;
================================================
IntPortion()函式是取整數之用。
跟上面解說範例的差異,實際HMA在計算MA_all及MA_w時是以WMA來計算(各位看官也可以採SMA甚至EMA取代看看有何不同效果)。此外,HMA在最後計算WMA時,取的期間再開一次根號,是何用意?如果不這麼做的話,以上面這個程式碼範例Length=20,在計算變數MA及變數HMA,前後做了兩次WAverage計算,其實等於已經把近20+20=40根K棒都抓進來運算,反而讓更多舊的價格來影響均線值,故以程式碼中Length=20,開根號取整數等於4,把權重還給近期價格。
HMA與其他均線比較
我們把HMA、AMA以及SMA放在一起比較,可以發現HMA(水藍色)最為敏感,最為貼著貼著指數走,其次是AMA,最後也就是最鈍的SMA。在盤整時期,HMA也會跟著行情上上下下,顯然對抗雜訊震盪走勢能力不好。此外,在劇烈大行情時,HMA會算出比近日最高還高或是比近日最低還低的數值,這是HMA計算公式所致,可以解讀成最後的末升段或末跌段的強力動能遞延,如果是要開發以HMA為依據的進出策略,可特別留一下。
結論
HMA有短均線敏感度優點,面對盤整盤卻沒有忽上忽下的缺點,如果習慣採5日均線(5-SMA)操作的朋友,或許可以試試HMA。
延伸閱讀:
歡迎加入LINE@
(點擊上方圖示)
沒有留言:
張貼留言
歡迎留言討論!