アフィリエイト広告を利用しています

広告

posted by fanblog

広告

posted by fanblog
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セルはシグナル周期です

エクセルファイルです。

    ダウンロード


前へ   次へ

Posted by vbafan at 10:21 | この記事のURL
この記事のURL

×

この広告は30日以上新しい記事の更新がないブログに表示されております。