ExcelでMACDを計算する2つの方法|VBAとワークシート関数で株式投資を効率化!

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
アイキャッチ

「Excelでテクニカル分析のMACDって計算できるの?」
そんなことを思ったことありませんか?


・株式投資をExcelで管理してみたい!

・インジケーターのMACDってどんなもの?

・VBAやワークシート関数で計算はどうしたらできるの?

私もエクセルで株式投資を行っています。

その中で実際に私が行っているMACDの計算方法を紹介しますね。


2024年からスタートした新NISA制度をきっかけに、投資を始めた方も多いのではないでしょうか?
「投資信託は始めたけど、次は株式投資にも挑戦してみたい!」と考えている方もいらっしゃるはずです。

そんな時に役立つのが、株価のトレンドを分析するためのインジケーター「MACD」です。
「でも、MACDを計算するには専門的なツールが必要なんじゃないの?」と思うかもしれませんね。

実は、Excelを使えば初心者でも簡単にMACDを計算できるんです!

この記事では、Excelの「ワークシート関数」「VBA」を使った2つの方法で、MACDを計算する具体的な手順を解説します。
株価管理の第一歩として、Excelでできることを一緒に学んでいきましょう!

この記事を書いた人

元残業40時間/月のサラリーマン。
このままではいけないと思い、残業削減のためのエクセル関数やVBAの勉強を開始。
その結果、2023年に残業0を達成!
現在も、どのようにしたら業務が改善できるか?研究中。
エクセル推しです。

現在は株式投資を始め、 「エクセルを使えば投資の管理も効率化できる!」 をテーマに運用を研究しています。


【 この記事の概要 】

便利度
難しさ
やってみたくなる度

Excelだけでも株式分析は可能ですが、リアルタイムの株価や高度なチャート分析をもっと簡単に行いたい方には、トレーディングビュー(TradingView)がおすすめです。

これ一つで、株式だけでなくFXや仮想通貨、金などのチャートも確認でき、無料プランでも多機能なのが魅力です。

TradingView 画像出典:TradingView

\  初心者でも簡単!無料で試せます  /

この記事は、投資に関する一般的な情報を提供するものであり、特定の投資を推奨するものではありません。
投資の最終的な判断はご自身の責任で行ってください。
また、投資には元本割れのリスクがあることを十分ご理解ください。

目次

この記事で「できるようになる」こと

スポンサーリンク

MACDとは?エクセルでの計算方法も解説!

MACDは「Moving Average Convergence Divergence」の略で、日本語では「移動平均線収束拡散」と呼ばれます。

株価の移動平均を使い、トレンドの変化を視覚的に捉えるためのインジケーター(指標)です。

MACDの構成
TradingView 画像出典:TradingView

MACDを使いこなすと、次のようなことができます!

使いこなすとできること!

✅ 株価のトレンドの方向性を把握できる
✅ 買い時・売り時のタイミングを判断できる
✅ トレンドの強弱を視覚的に確認できる

MACDの構成と仕組みを分かりやすく解説します

MACDは以下の3つの要素で構成されています。

TradingView 画像出典:TradingView
スクロールできます
項目説明
MACD線短期EMA(12期間)と長期EMA(26期間)の差を計算した線。
トレンドの方向性を示します。
シグナル線MACD線の9期間移動平均。
MACD線より動きが遅く、売買判断の基準になります。
ヒストグラムMACD線とシグナル線の差を棒グラフで表示。
トレンドの強弱を示します。

MACD線とは?【トレンドの勢いを知る】

🔰 MACD線とは?
  • どのような線?
    • 短期EMA(12期間)長期EMA(26期間) の差を計算した線です。
  • どのようなことが分かる?
    • トレンドの方向性を把握するための主要なラインになります。
  • 特徴
    • MACD線は「トレンドの勢い」を示すため、動きが速いのが特徴!
    • 短期EMAと長期EMAの差が大きいほど、トレンドの強さが増します。

シグナル線とは?【売買のタイミングを判断】

🔰シグナル線とは?
  • どのような線?
    • MACD線の9期間移動平均を計算した線。
  • 売買シグナルの見方
    • MACD線がシグナル線を上抜けたら「買いシグナル」 → 上昇トレンド発生の可能性
    • MACD線がシグナル線を下抜けたら「売りシグナル」 → 下降トレンド発生の可能性
  • 特徴
    • シグナル線はMACD線の平均を取るため、MACD線より動きが遅いのが特徴!
    • 単体ではなく、MACD線とのクロスを見て売買判断する。

ヒストグラムとは?【トレンドの強弱を可視化】

🔰 ヒストグラムとは?
  • どのような線?
    • MACD線とシグナル線の差を棒グラフで表示したもの。
  • ヒストグラムの見方
    • プラス圏で拡大 → 上昇トレンドが強まっている
    • マイナス圏で拡大 → 下降トレンドが強まっている
    • ヒストグラムが0に近づく(短くなる) → トレンドが弱まり、転換点の可能性
  • 特徴
    • トレンドの強さを視覚的に判断するのに便利!
    • MACD線とシグナル線がクロスする前に、ヒストグラムの縮小でトレンド転換を察知できる!

エクセルでMACDを計算する方法

エクセルでMACDを求める際は、以下の計算式を使用することで求めることができます。

スクロールできます
項目計算式(Excelで使用)説明
短期EMA(12期間)=終値 × (2/13) + 前日短期EMA × (1 - 2/13)短期指数平滑移動平均(12期間)
長期EMA(26期間)=終値 × (2/27) + 前日長期EMA × (1 - 2/27)長期指数平滑移動平均(26期間)
MACD線=短期EMA - 長期EMA短期EMAと長期EMAの差
シグナル線(9期間)=MACD線 × (2/10) + 前日シグナル線 × (1 - 2/10)MACD線の9期間指数移動平均
ヒストグラム=MACD線 - シグナル線MACD線とシグナル線の差を棒グラフ表示

MACDの正しい使い方と注意点|シグナルの遅れを防ぐ方法

MACDはトレンドの方向性や売買タイミングを把握するのに便利なインジケーターですが、「シグナルの遅れ」や「ダマシ」などの注意点を理解しないと、誤ったエントリーにつながる可能性があります。

ここでは、MACDを正しく活用するためのポイントと、計算時の注意点を解説します。

1 : MACDの買い・売りシグナルの遅行性に注意

MACD線がシグナル線を上抜けたら「買いシグナル」、下抜けたら「売りシグナル」とされますが、エントリーのタイミングが遅れることがあります。
これは、MACDが移動平均をもとに計算されているため、価格変動に対して遅れて反応する(遅行性がある) ことが原因です。

MACDの遅効性について
TradingView 画像出典:TradingView

💡 遅行性を防ぐための3つのポイント

シグナル線とのクロスだけでなく、ヒストグラムの動きも確認しましょう。

ヒストグラムの拡大は、MACDの勢いが強まっていることを示すため、クロスよりも早いサインとなります。
シグナル線とのクロスだけではなく、ヒストグラムが拡大し始めたタイミングでエントリーするのがポイントです!

他のインジケーターと併用しましょう。

MACD単体ではなく、他のインジケーターを組み合わせることで、より精度の高い売買判断が可能になります。

  • RSI(相対力指数)
    • 買われすぎ・売られすぎを判断。
      MACDのシグナルとRSIが同じ方向を示しているときは信頼性が高いです。
  • ボリンジャーバンド
    • 価格がバンドの上限/下限に到達したとき、MACDと組み合わせることでエントリーの精度が向上。
長期と短期のパラメータを調整する

MACDの標準設定(短期EMA:12、長期EMA:26、シグナル線:9)は、多くの市場で有効とされています。
しかし、短期トレード向けに短期EMAを9期間、長期EMAを21期間に変更する方法もあります。

注意

ただし、パラメータを変更すると過去の統計的な有効性が失われる可能性があるため、変更は慎重に行うべきです。

2 : MACDを使う上でのその他のポイント

✅ ダマシに注意!

短期間でMACD線とシグナル線が頻繁にクロスする場合(横ばい相場など)は、ダマシとなる可能性があるため、他の指標と組み合わせて判断しましょう。
特に、ボラティリティ(価格変動幅)が低いときは、MACDの信頼性が低下するので注意が必要です。

MACD線とシグナル線が頻繁にクロスする場合
TradingView 画像出典:TradingView
スポンサーリンク

エクセルでMACDを計算・グラフ化する方法|関数とVBAを活用

それでは、エクセルを使用してMACDを計算しグラフに表記してみましょう。
ここでは、「関数を使用する方法」と「VBAを使って自動計算する方法」の2つを紹介します。

関数を使用して、MACDのグラフを作成する。

VBAを使用して、MACDのグラフを作成する。

使用する元データ

まず、以下のような株価データを用意します。

MACDを計算する元データ
💡 株価データの取得方法

「保有している株価データはどのように取得すればいいの?」と思った方は、こちらの記事で詳しく解説しています!

あわせて読みたい
エクセルで簡単!個別株の管理方法と新NISAに備えた証券会社の選び方 株式投資を始めてみたいけれど、「どうやって管理すればいいの?」このように悩んだことはありませんか? ・新NISAって聞いたことあるけど、どう使えばいいの?・証券会...

エクセル関数を使ってMACDを計算・グラフ化する方法

エクセル関数を使って、MACDを計算し、その結果をグラフにプロットしてみましょう!

📌 ① MACDのヘッダーを作成しよう

まず、エクセルシートに以下のようなヘッダーを設定しましょう。


スクロールできます
A列B列C列D列E列F列G列
日付終値短期EMA (12期間)長期EMA (26期間)MACD線シグナル線 (9期間)ヒストグラム

📌 ② 短期EMA・長期EMAをExcel関数で計算する

短期EMA (12期間)の計算方法
C13セル (短期EMAの初期値) に入力する式
=AVERAGE(B2:B13)

→ 12期間の単純移動平均(SMA)を計算します。

C14セル以降に入力する式
=B14*(2/13) + C13*(1-2/13)

→ EMAの計算では、直近の終値に重みを付けて計算します。

短期EMA (12期間)の計算結果
短期EMA (26期間)の計算方法
C27セル (長期EMAの初期値) に入力する式
=AVERAGE(B2:B27)

→ 初期値には26期間の単純移動平均(SMA)を使用します。

セル「C28」以降
=B28*(2/27) + D27*(1-2/27)

→ 長期EMAは26期間のデータを基に算出します。

短期EMA (26期間)の計算結果

📌③ MACD線を計算する

E35セルに入力する式
=C27 - D27

→ 短期EMAと長期EMAの差を求めます。これがMACD線です。

③ MACD線の計算結果

📌 ④ シグナル線をExcelで計算する方法

F35セル (シグナル線の初期値) に入力する式
=AVERAGE(E26:E34)

→ 初期値にはMACD線の9期間の単純移動平均(SMA)を使用します。

F36セル以降に入力する式
=E36*(2/10) + F35*(1-2/10)

→ 9期間の指数平滑移動平均(EMA)を用いて、シグナル線を計算します。

④ シグナル線をExcelで計算した結果

📌 ⑤ ヒストグラムをExcelで計算する方法

G35セルに入力する式
=E35 - F35

→ MACD線とシグナル線の差を計算し、視覚的にトレンドの強弱を示します。

⑤ ヒストグラムをExcelで計算した結果

📌 ⑥ グラフを作成する

作成が完了したデータでグラフを作成しましょう!

エクセルで作成したMACD

VBAを使ってMACDを計算・グラフ化する方法

以下は、ヘッダーが既に設定されている状態で、VBAを使用してMACDを計算・作成するコードです。

このコードは、「日付」列がA列、「終値」列がB列にある状態から処理を開始します。
また、計算に必要な「短期EMA」「長期EMA」「MACD線」「シグナル線」「ヒストグラム」の各列はC~G列に割り当てられます。

VBAでMACDを計算した結果

📌VBAコード

Sub CalculateMACD()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    '// シートを指定(適宜変更してください)
    Set ws = ActiveSheet
    
    '// データの最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
    
    '// 短期EMA (12期間) 初期値 (C13セル)
    ws.Range("C13").Formula = "=AVERAGE(B2:B13)"
    
    '// 短期EMA (12期間) 計算式 (C14以降)
    For i = 14 To lastRow
        ws.Cells(i, 3).Formula = "=B" & i & "*(2/13) + C" & i - 1 & "*(1-2/13)"
    Next i
    
    '// 長期EMA (26期間) 初期値 (D27セル)
    ws.Range("D27").Formula = "=AVERAGE(B2:B27)"
    
    '// 長期EMA (26期間) 計算式 (D28以降)
    For i = 28 To lastRow
        ws.Cells(i, 4).Formula = "=B" & i & "*(2/27) + D" & i - 1 & "*(1-2/27)"
    Next i
    
    '// MACD線 (短期EMA - 長期EMA) 計算式 (E28以降)
    For i = 27 To lastRow
        ws.Cells(i, 5).Formula = "=C" & i & " - D" & i
    Next i
    
    '// シグナル線 初期値 (F35セル)
    ws.Range("F35").Formula = "=AVERAGE(E26:E34)"
    
    '// シグナル線 (9期間EMA) 計算式 (F36以降)
    For i = 36 To lastRow
        ws.Cells(i, 6).Formula = "=E" & i & "*(2/10) + F" & i - 1 & "*(1-2/10)"
    Next i
    
    '// ヒストグラム (MACD線 - シグナル線) 計算式 (G35以降)
    For i = 35 To lastRow
        ws.Cells(i, 7).Formula = "=E" & i & " - F" & i
    Next i
    
    MsgBox "MACD計算が完了しました!", vbInformation
End Sub

このコードで使用している機能

スクロールできます
機能名説明
Dim変数を宣言するためのキーワードです。
ws(ワークシート)、lastRow(最終行)、i(ループカウンタ)などの変数を宣言しています。
Setオブジェクト変数に値を設定するために使用します。
このコードではSet ws = ActiveSheetで、アクティブなシートをwsに格納しています。
ActiveSheet現在選択されているシートを指します。
このコードでは、計算対象のシートとして使用しています。
Rangeワークシート上のセルやセル範囲を指定するオブジェクトです。
計算式の設定やデータの取得に使用されています。
Formulaセルに数式を挿入するプロパティです。
このコードでは、EMAやMACDの計算式を挿入しています。
For…Next繰り返し処理を実行するためのループ構文です。
ここでは、データの各行に対して計算式を設定するために使用しています。
MsgBoxメッセージボックスを表示するための機能です。
このコードでは、処理完了時に「MACD計算が完了しました!」という通知を表示します。
Cells指定した行番号と列番号のセルを参照します。
このコードでは、各行の計算式を設定する際に使用されています。
End(xlUp)指定した列の最終行を取得します。
このコードでは、B列(終値列)の最終行を取得してlastRowに格納しています。

処理結果

このようなグラフを作成する元データが作成できます。

エクセルで作成したMACD
スポンサーリンク

この記事のまとめ

この記事では、Excelを活用してテクニカル分析の指標「MACD」を計算する方法を解説しました。

MACDの基礎から、エクセル関数を使った計算方法、さらにはVBAを使った自動化まで幅広く取り上げました。

ポイントのおさらい

  • MACDの基礎とその構成を理解する
  • Excel関数を使ってMACDを計算する
  • VBAを使ってMACDを自動計算する
    • VBAを活用して、MACDの計算を自動化するコードを紹介しました。
      以下のポイントに触れています。

今回の学びを活用するために

Excelを使ってMACDを計算する方法をマスターすることで、以下のようなメリットを得られます。

  • 株式投資の効率化
    • 自分の投資スタイルに合わせて、カスタマイズした指標を活用できます。
  • 手作業の削減
    • VBAを使用すれば、反復作業を自動化し、時間を節約できます。
  • 投資判断の精度向上
    • トレンドの変化や売買のタイミングを視覚的に把握できるようになります。

この記事を参考に、ExcelでMACDを自在に扱えるスキルを身につけ、投資判断をさらに効率化してみてください!

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「JavaScr...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次