2017年7月16日

【MultiCharts】Hull Moving Average(HMA)(附程式碼)

一樣,只要看到有別於傳統簡單移動平均線(SMA)的均線指標,其改良目的就是多不脫針對反應遲鈍或是盤整被巴兩項缺陷,Hull Moving Average(HMA)由一位叫Alan Hull的澳洲專業交易人所發明(請參看他的網站),做為改良版均線指標,HMA在許多報價軟體被廣為運用,不過很可惜,MultiCharts並沒有內建HMA指標,本文向大家介紹這個頗有知名度的均線指標。

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@
加入好友
(點擊上方圖示)

沒有留言:

張貼留言

歡迎留言討論!