MACD

By | 2019-02-15

MACD的英文原名為 Moving Average Convergnece & Divergence,也就是收斂發散移動平均線的意思,所以顧名思義它是移動平均線的一種。這個指標在技術分析各指標當中,算是極普遍又有名的一個。以下是MACD的計算步驟,附表1即為MACD的計算範例:

1.      計算出真實成本:

 

 Pt=Ct ´ 1/2 + Ht ´ ¼ + Lt  ´ ¼    其中 Ct為收盤價, Ht為最高價, Lt為最低價

 

2.      計算兩條平滑平均線 12EMA26EMA


Et =  Et-1  +  α  
´  (  Pt  –  Et-1  )

其中 Et為當日平滑平均值, Et-1為前一日平滑平均值,  Pt為當日真實成本,         

α= 2 / ( 1+ MA)   MA = 平均天數 (=1226 )

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");

參考的圖

MACD