MACD指標是怎麼來的?如何理解MACD及其手動實現

MACD的很多資料裡叫他“指數平滑移動平均線”,但是他的英文名叫“Moving Average Convergence / Divergence”,我的英文很糟糕但我還是自信的覺得直譯為“移動平均線的收斂/發散”其實更代表這個指標。還有幾個關鍵名詞。EMA指數移動平均線,和他相區別的是算數移動平均線MA。兩者的最大差異是權重的使用。在EMA中設計者人為的賦予了他權重。DIFF是差值的意思。DEA則是差值DIFF的指數平均值。注意,這裡的指數其實是經濟學含義,而不是數學意義上的指數。

對於數據來說MACD是一種工具,工具本身和市場無關。所以你在股市、期市、匯市你都可以看到它的身影。MACD是用來統計分析市場交易結果的一個工具。就像一把可以彎曲鋼筋還可以剪切鋼筋的鉗子,MACD可以對任意段落的交易數據進行統計分析。對於交易系統的設計,MACD又可以像節拍器一樣作為交易系統中的節奏控制工具。

在進一步講解之前我們要確定一個概念。什麼是週期?週期是我們人為對交易數據劃定的一個循環時間段落。為了符合交易節奏,我們通常採用以自然時間段為週期,比如:日線、周線、月線。這是一個基礎的概念,無論你的交易是什麼方式的,這都是交易系統建立的根基。週期是連續而大量的,所以在處理數據的時候我們會對週期進行“系統抽樣”,這就是眾多指標的骨骼框架。比如20均線、40均線。這可能代表20或40個1分鐘週期,也可能代表20或40個日週期。對這個抽樣我們再進行分析處理,就形成我們的指標。MACD就是這樣一種指標。

MACD的抽樣方法就是以最近收盤價為起始按時間順序依次倒序抽取指定容量的收盤價。MACD的骨骼是三組抽樣,我們命名為短週期、長週期、中間週期。其靈魂是權重的計算。首先我們來看MACD的這三組抽樣,通常我們設置樣本容量為12、26、9(個週期)。這裡有個疑問,就是為什麼是這三個數值呢?其實單純按照MACD的設計來說,這個值是完全可以調整的。在MACD誕生之初,這三個數值代表的是時間上的一週、一個月和一週半。這並不符合現在我們使用的時間週期,我們現在一週五個工作日,一個月大約20個工作日。但是因為這三個數字被廣泛使用,所以即便他並不符合當前的時間週期,但是他符合眾多交易者的操作週期。關於這個問題這裡不多講。

完整MACD需要通過四大步運算得到:

一、計算短週期、長週期的EMA值(即:EMA最近)。

二、計算短、長週期間EMA差值(即:DIFF值)。

三、計算差值DIFF的EMA值(即:DEA)。

四、計算DIFF的離差(即:MACD值)。

現在我們開始分步計算。三組抽樣有了,剩下都是基於這三組抽樣對交易數據的統計分析。對這三組抽樣的運算用的同一個公式(如下):

MACD指標是怎麼來的?如何理解MACD及其手動實現


這個公式看上去是不是很怪異,一個帶有遞歸特性的公式。EMA是加權平均值運算的方法。以分數形式出現的乘數其實就是權重或者叫頻率。在市場中更多的被叫做平滑因子,因為這個值決定了EMA曲線的平滑度。如下:


MACD指標是怎麼來的?如何理解MACD及其手動實現


而且注意:

  • 有一個小細節,就是分母的“樣本容量+1”。這個“+1”的目的是為了在只有1週期時計算上的正確性,否則會出現意外的負值。
  • 這個權重是MACD的設計者為了達到計算目的人為增加的。而且權重總體單位數量等於“樣本容量+1”。當然這並不絕對,但如果把這個值設置的大於“樣本容量+1”整個曲線將變形而失去意義。

EMA這個平均值計算公式由兩部分組成。加號前面的一部分計算的是最近收盤價的加權平均值,EMA公式默認賦予它2個單位的權重。而加號後面計算的是上一個週期EMA(EMA上一週期)

的加權平均值,默認賦予它剩餘權重。這個遞歸設計很巧妙,使得MACD整體分析計算有了延續性,也使得這個指標即表現了最近價格的特點也表達了歷史價格的重要。也就是說加號前的計算和權重設計得到一個最近收盤價權重更大的均值體系。結果就是使得這個均值比普通算術移動平均值更加接近最近收盤價。而且對最近收盤價賦予的權重越大EMA均值越接近最近收盤價,EMA曲線越不平滑。直到權重與“樣本容量+1”相等時EMA等於最近收盤價,具體這裡就不給出運算過程了,好奇者可以自己將值帶入公式進行計算。如圖1:

MACD指標是怎麼來的?如何理解MACD及其手動實現


圖1:12個週期EMA(白線)與MA(黃線)值的比較

在得到短週期和長週期的EMA之後,對這兩個EMA相減得到兩個均值的差DIFF值。公式如下:


MACD指標是怎麼來的?如何理解MACD及其手動實現


注意:這是一個帶有正負方向性的值。方向如下:


MACD指標是怎麼來的?如何理解MACD及其手動實現


這裡“DIFF = 0”是一種特例,這個值只在起始計算MACD時實際行情週期數量“小於或者等於”短週期時出現。但多數客戶端都在這個位置重新設定值,所以雖然有這種可能,但沒有意義。

因為DIFF是MACD分析過程的中間數據,所以這裡對其分析用的樣本起名為中間週期。用這個中間週期對DIFF進行EMA計算,也就是得到DEA值。使用的還是上面的EMA計算公式。使用了相同的權重分配規則。那麼這裡有個問題,這個中間週期為什麼要設定為9?其實這個值同樣並不是一個固定值,但是這個值會對MACD分析效果起著至關重要的作用。因為這個值是用來建立MACD快速線和慢速線的機制的。這個值的過小或者過大會有如下兩個效果:

  • 如果這個值過小會使得MACD快慢雙線過於糾纏,而起不到發散的效果。
  • 如果這個值過大,雙線收斂的又過慢使得其對市場的方向發現嚴重滯後而失去意義。

所以總結來說9是一個經驗值。得到DEA之後其實到這裡MACD指標大體已經建立完成了,現在還差一個MACD值。通常我們會在客戶端裡看到以直方圖形式表現的MACD值。這個值其實是DIFF的均值離差,公式如下:

MACD=2×(DIFF-DEA)

公式中的乘2其實沒有特別的含義,只是為了放大這個數值使其更容易被觀察而已。重點是這個公式中值的方向。決定MACD方向的因素如下:

MACD指標是怎麼來的?如何理解MACD及其手動實現


在具體的MACD使用過程中,MACD這個數值本身並沒有什麼特殊含義,而形成序列之後的規律才是MACD值的意義所在。

知道了上面計算MACD的方法,其實我們也可以手動的來計算MACD。手動計算MACD的好處是你可以預測第二天或者第三天價格收盤在什麼位置得到一個什麼樣的MACD值。這裡我們用EXCEL來還原這個公式。依據公式手動計算MACD值需要四個要素:最近收盤價、上一短週期EMA、上一長週期EMA、上一週期DEA。這幾個要素都可以通過行情客戶端獲得。具體如下圖2:

MACD指標是怎麼來的?如何理解MACD及其手動實現


運算結果如下圖3:

MACD指標是怎麼來的?如何理解MACD及其手動實現


如果你手頭有完整的行情交易數據也可以從頭計算數據,公式還是同樣的公式。只是從頭計算有一個頭部週期不夠用而需要進行處理的問題。比如行情起始階段的5週期,這時小於我們設定的短週期12和長週期26。我們就需要按照實際的週期進行計算,所以公式不變但是短和長週期將改為5。頭部的處理很特別,只是為了後續處理進行鋪墊。所以按照12、26、9樣本容量來設計的MACD的真正有意義的值是從第27週期開始的。如果使用R語言能快速的對完整的交易數據進行MACD計算。只需要在R中加載TTR包中的MACD函數就能很簡單快速的實現。但是這個函數只計算出DIFF和DEA就結束了,最終MACD值需要自己單獨計算一下。

開篇我說MACD表達的是指數移動平均線的收斂與發散。MACD的應用也是圍繞著這個理念進行的。利用短週期與長週期的速度差來表現當前價格與歷史價格均值比較後的趨勢。當行情處於震盪狀態時,短週期與長週期的差值較小。體現在MACD值較小並且快速的進行正負切換,震盪的時間越久最近收盤價格與歷史價格之間的差值就越小這種表現就越明顯。當震盪趨近於結束,價格開始走出新的方向時,最近收盤價會持續的遠離歷史價格均值。此時MACD值會持續的放大,發散也就持續擴大。當行情持續一段時間之後,市場開始出現新的分歧,價格也就開始止步且回調。這時因為最近價格開始止步甚至回調,也就開始重新趨近正在不斷追趕的歷史價格均值。此時MACD開始表現出收斂特徵,如果市場重新回到均衡狀態,那麼MACD值也開始縮小並且重新頻繁的切換正負方向。

大量的文章和資料基於MACD對數據規整出的這種規律性而預測未來行情的走向。但我認為初級交易者或許很多交易者會在此有一個誤區。其實MACD只是對當前收盤價格與歷史價格均值的一個處理分析,所以他並沒有給出所謂預測的一個明確相關性。而依此對行情做出預測的依據是一個假設前提就是“行情具有慣性的延續”,但是這個前提條件也和MACD本身的分析處理是無關的。MACD本身沒有計算任何歷史週期價格走向的概率,所以可以肯定的說MACD本身並不適合作為價格預測的依據。但是MACD這麼複雜的運算到底預測了什麼呢?

如果說的專業一點MACD是將交易數據這種非平穩時間序列通過離差(差分)轉換為了平穩時間序列。用較為通俗的話來說就是MACD通過兩次最近值與歷史值的差值(計算DIFF一次,計算MACD值一次)將交易數據處理成一組均值趨近於零的全新的時間序列(MACD的算數平均值趨近於零,視覺上MACD值圍繞零軸上下分佈)。這個序列顯現出非常穩定的週期特性,所以MACD得到的是一個週期的預測。那麼既然是週期的預測,那和未來市場行情預測的區別在哪呢?區別在於這個週期是由我們自己設定的而不是一個自然週期,也就是說我們的MACD在某一段時間可能和歷史週期是吻合的,也可能是不吻合的。例如市場的長時間小幅度高頻率震盪階段。所以就其特性來說MACD不適合作為市場未來行情的預測,而在交易系統的設計中更適合“節拍器”的位置,依此來控制交易系統中開倉的節奏。

我們說到這裡對於MACD的分解就結束了。我想告訴你的是MACD其實只是一個數據處理的工具,而如何賺錢這其實是另外一個事情。但是對MACD的理解這是一個基礎,在具體的使用中這卻是系統化的,這應該是你的交易系統的一部分。我再一次的強調MACD之於數據就像一把鉗子,之於交易系統可以像節拍器一樣都只是一個工具。不同的是MACD是一把統計學工具。一把鉗子可以在建築工地使用,也可以在家電維修中心使用。所以具體你如何使用MACD這取決於你整個交易系統是如何設計的。而交易系統的設計這是另外一門學問。


分享到:


相關文章: