MACD(計算式、チャート、エクセルVBAコード)テクニカル指標


2008年12月2日



 

MACDについて。計算式、チャート、エクセルVBAコード

 

MACDは2本の指数平滑移動平均線の差から求められ、トレンドや乖離などを判断する際に使用される指標です。

 

指数平滑移動平均線は、全期間のデータを考慮した移動平均線ですが、詳細は移動平均線の計算方法についての投稿をご覧下さい。

 

計算式や計算方法、チャート、エクセルVBAコードを掲載しています。

 

 

 

 

MACDの計算式

MACDは上述の通り2本の指数平滑移動平均(EMA)の差から求められますので、下記が計算式となります。(x,y,zはそれぞれ採用本数)

 

MACD = EMA(x) – EMA(y)

 

***EMAの計算***(Nは採用本数)

1本目(期間の最初の計算)=(当日も含め)N本の終値の平均

2本目以降=前日のEMA+Y×{当日終値-前日のEMA}

※Y=2÷(N+1)

 

 

例えば、3本指数平滑移動平均線の場合、1本目は3本の単純移動平均線。

2本目以降は、Y=2÷(3+1)=0.5 で、直前EMA+0.5×(当日終値-直前EMA)

 

**********************************

MACD(シグナル) = MACDのZ本単純移動平均

MACD(OSCI) = MACD ‐ MACD(シグナル)

MACDとMACD(シグナル)のクロスで売買サインとみなします。

MACD(OSCI)は、上昇転換(好転)で買いサイン、下降転換(暗転)で売りサインと見れますし、上昇中は上昇トレンドの継続、下降中は下降トレンドの継続と判断できます。

 

 

 

MACDのチャート

黄色線=MACD、赤線=MACD(シグナル)、青の棒グラフ=MACD(OSCI)

 

 

 

 

MACDはレートに限らず任意の指標の値の指数平滑移動平均線を2本計算すれば、どんな指標でも適用し計算することが可能です。

 

 

 

例えば、下記はストキャスティクス(%K)をMACD化したチャートです。

 

 

次は、一目均衡表の先行スパン1をMACD化したチャートです。

 

 

 

 

 

 

MACDのエクセルVBAコード

 

 

最後にMACDのVBAコードです。

‘※ エクセルの1列目(A列)に行番号、2列目(B列)に日時、
‘※ 3列目(C列)~6列目(F列)に始値・高値・安値・終値
‘********************************
‘ema1 :MACDのEMA(1)の採用本数
‘ema2 :MACDのEMA(2)の採用本数
‘sig :MACD(シグナル)の採用本数
‘num:現在の行
‘cell_ema1:EMA(1)の書込み列
‘cell_ema2:EMA(2)の書込み列
‘cell_macd:MACDの書込み列
‘cell_sig:MACD(シグナル)の書込み列
‘cell_osci:MACD(OSCI)の書込み列
‘********************************

ema1 = 5
ema2 = 10
sig = 3

cell_ema1 = 7
cell_ema2 = 8
cell_macd = 9
cell_sig = 10
cell_osci = 11
‘—–ema1
If num + 1 = ema1 Then
Cells(num, cell_ema1) = Application.WorksheetFunction.Average _
(Range(Cells(num – (ema1 – 1), 6), .Cells(num, 6)))
End If
If num + 1 > ema1 Then
Cells(num, cell_ema1) = Cells(num – 1, cell_ema1) + _
((Cells(num, 6) – Cells(num – 1, cell_ema1)) * 2 _
/ (ema1 + 1))
End If

‘—–ema2
If num + 1 = ema2 Then
Cells(num, cell_ema2) = Application.WorksheetFunction.Average _
(Range(Cells(num – (ema2 – 1), 6), .Cells(num, 6)))
End If
If num + 1 > ema2 Then
Cells(num, cell_ema2) = Cells(num – 1, cell_ema2) + _
((Cells(num, 6) – Cells(num – 1, cell_ema2)) * 2 _
/ (ema2 + 1))
End If

‘—–macd
If Cells(num – 1, cell_ema1) <> “” _
And .Cells(num – 1, cell_ema2) <> “” Then
Cells(num, cell_macd) = Cells(num, cell_ema1) – Cells(num, cell_ema2)
End If

‘—–signal
If num >= ema2 + sig + 1 Then
Cells(num_1, cell_sig) = Application.WorksheetFunction.Average _
(Range(Cells(num – (sig – 1), cell_macd), _
Cells(num, cell_macd)))
End If

‘—–osci
If .Cells(num, cell_macd) <> “” _
And .Cells(num, cell_sig) <> “” Then
Cells(num_1, cell_osci) = Cells(num, cell_macd) – Cells(num, cell_sig)
End If

 

 

テクニカル指標一覧

罫線談義一覧

(外部リンク)テクニカル指標(Wikipedia)

 

 

MACD(計算式、チャート、エクセルVBAコード)テクニカル指標」への1件のフィードバック

  1. ピンバック: 色んな指標をMACD化してみる | IBI-Square

コメントは停止中です。