MACD的英文原名為 Moving Average Convergnece & Divergence,也就是收斂發散移動平均線的意思,所以顧名思義它是移動平均線的一種。這個指標在技術分析各指標當中,算是極普遍又有名的一個。以下是MACD的計算步驟,附表1即為MACD的計算範例:
1. 計算出真實成本:
Pt=Ct ´ 1/2 + Ht ´ ¼ + Lt ´ ¼ 其中 Ct為收盤價, Ht為最高價, Lt為最低價
2. 計算兩條平滑平均線 12EMA與26EMA
Et = Et-1 + α ´ ( Pt – Et-1 )
其中 Et為當日平滑平均值, Et-1為前一日平滑平均值, Pt為當日真實成本,
α= 2 / ( 1+ MA) ; MA = 平均天數 (即=12或26 )
3. 計算正負差線
DIF = 12EMA – 26EMA
4. 計算MACD線(或稱EDA線)
將DIF線取九天EMA平均值即得
5.柱線 = DIF線–MACD線
一般說來,MACD指標可以說是一個非常優秀的指標,也正因為如此,所以它才會那麼廣受歡迎。
MACD的函數
SetBarMode(1); // MACD function // Input: Price序列, FastLength, SlowLength, MACDLength // Output: DifValue, MACDValue, OscValue // Input: Price(numericseries), FastLength(numericsimple), SlowLength(numericsimple), MACDLength(numericsimple); Input: DifValue(numericref), MACDValue(numericref), OscValue(numericref); DifValue = XAverage(price, FastLength) - XAverage(price, SlowLength); MACDValue = XAverage(DifValue, MACDLength) ; OscValue = DifValue - MACDValue;
指標腳本
// XQ: MACD指標 // input: FastLength(12), SlowLength(26), MACDLength(9); variable: price(0); SetInputName(1, "DIF短天數"); SetInputName(2, "DIF長天數"); SetInputName(3, "MACD天數"); price = WeightedClose(); Value1 = XAverage(price, FastLength) - XAverage(price, SlowLength); Value2 = XAverage(Value1, MACDLength) ; Value3 = Value1 - Value2 ; // 前面區段資料變動較大, 先不繪出 // if CurrentBar <= SlowLength then begin Value1 = 0; Value2 = 0; Value3 = 0; end; Plot1(Value1, "DIF"); Plot2(Value2, "MACD"); Plot3(Value3, "Osc");
參考的圖