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的函數
1SetBarMode(1); 2 3// MACD function 4// Input: Price序列, FastLength, SlowLength, MACDLength 5// Output: DifValue, MACDValue, OscValue 6// 7Input: Price(numericseries), FastLength(numericsimple), SlowLength(numericsimple), MACDLength(numericsimple); 8Input: DifValue(numericref), MACDValue(numericref), OscValue(numericref); 9 10DifValue = XAverage(price, FastLength) - XAverage(price, SlowLength); 11MACDValue = XAverage(DifValue, MACDLength) ; 12OscValue = DifValue - MACDValue;
指標腳本
1// XQ: MACD指標 2// 3input: FastLength(12), SlowLength(26), MACDLength(9); 4variable: price(0); 5 6SetInputName(1, "DIF短天數"); 7SetInputName(2, "DIF長天數"); 8SetInputName(3, "MACD天數"); 9 10price = WeightedClose(); 11 12Value1 = XAverage(price, FastLength) - XAverage(price, SlowLength); 13Value2 = XAverage(Value1, MACDLength) ; 14Value3 = Value1 - Value2 ; 15 16// 前面區段資料變動較大, 先不繪出 17// 18if CurrentBar <= SlowLength then 19begin 20 Value1 = 0; 21 Value2 = 0; 22 Value3 = 0; 23end; 24 25Plot1(Value1, "DIF"); 26Plot2(Value2, "MACD"); 27Plot3(Value3, "Osc");
參考的圖