2013年08月17日
第25回 MACD
今回はMACD (Moving Average Convergence Divergence、移動平均収束拡散法) についてです。
メーンチャートの下に補助チャートとして表示します。
MACD線とシグナル線の2本の線を引きます。シグナル線が下から上に抜ければ買いサイン、上から下に抜ければ売りサインです。下図では青線がMACD線、赤がシグナル線です。
(1) MACD の計算式
MACD = 短期(n日)の指数平滑移動平均 - 長期(m日)の指数平滑移動平均
シグナル = MACDのs日の指数平滑移動平均
(2) MACD の計算
指数平滑移動平均線の計算が主になります。 こちら を参照して下さい。
(3) MACD の表示
(3-1) MACD の表示
Sub MACD表示(終値配列, 実表示本数)
Set ch = 補助チャート追加("MACD")
短周期 = 配列プロパティ取得("MACD", 2)
短期配列 = 指数平滑移動平均線算出(終値配列, 短周期, 実表示本数)
長周期 = 配列プロパティ取得("MACD", 3)
長期配列 = 指数平滑移動平均線算出(終値配列, 長周期, 実表示本数)
MACD配列 = 配列差計算(短期配列, 長期配列)
Set sr = ch.SeriesCollection.NewSeries
sr.ChartType = xlLine
sr.Values = MACD配列
sr.Name = "MACD"
シグナル周期 = 配列プロパティ取得("MACD", 4)
シグナル配列 = 指数平滑移動平均線算出(MACD配列, シグナル周期, 実表示本数)
Set sr = ch.SeriesCollection.NewSeries
sr.ChartType = xlLine
sr.Values = シグナル配列
sr.Name = "Signal" & シグナル周期
補助チャート後処理 ch
End Sub
(3-2) 指数平滑移動平均線算出
Function 指数平滑移動平均線算出(データ配列, 周期, 実表示本数)
n = UBound(データ配列)
ReDim a(1 To 実表示本数, 1 To 1)
表示開始行 = n - 実表示本数 + 1
移動平均 = データ配列(1, 1)
j = 1
For i = 1 To n
  移動平均 = (2 * データ配列(i, 1) + (周期 - 1) * 移動平均) / (周期 + 1)
  If i >= 表示開始行 Then
     a(j, 1) = 移動平均
     j = j + 1
  End If
Next i
指数平滑移動平均線算出 = a
End Function
(3-3) 配列差計算
Private Function 配列差計算(a, b)
n = UBound(a)
ReDim c(1 To n, 1 To 1)
For i = 1 To n
c(i, 1) = a(i, 1) - b(i, 1)
Next i
配列差計算 = c
End Function
(4) プロパティシートの設定
B15セルを TRUE にするとMACDを表示します。FALSE で非表示です
C15セルは短期周期です
D15セルは長期周期です
E15セルはシグナル周期です
エクセルファイルです。
    ダウンロード
前へ   次へ
【このカテゴリーの最新記事】
-
no image