【Pythonでテクニカル分析】MACDを計算して視覚化する方法を解説

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

株式や為替、仮想通貨など、様々な金融市場でトレードを行う際に欠かせないのが、適切な分析ツールです。トレード分析において、MACDは非常に人気のあるインジケーターの一つです。

トレンドの変化を視覚的に捉え、売買のタイミングを判断するために役立つので、初心者からベテランまで幅広く活用されています。

この記事では、Pythonを使ってMACDを計算し、視覚的に理解しやすいグラフで表示する方法を解説します。

データを分析してトレンドを見極めたい方や、自分でトレードの戦略を構築したい方にとって、基本的なテクニカル分析手法として押さえておきたい内容です。

MACDとは

MACD(Moving Average Convergence Divergence、移動平均収束拡散法)は、短期と長期の移動平均の差を利用してトレンドの方向性や強さを示すインジケーターです。

まず、MACDの基本的な構成要素について理解しておきましょう。

  • MACDライン: 短期EMA(指数平滑移動平均)から長期EMAを引いたものです。一般的には12期間のEMAと26期間のEMAを使用します。
  • シグナルライン: MACDラインのEMAです。一般的には9期間を使用します。MACDラインがシグナルラインを上回ると買いシグナル、下回ると売りシグナルとされます。
  • ヒストグラム: MACDラインとシグナルラインの差を示します。ヒストグラムがプラスなら買い、マイナスなら売りを示唆します。

MACDの使い方

MACDはテクニカル指標の一つで、トレンドの転換点を予測することができます。

MACDは比較的使いやすい指標ですが、レンジ相場ではダマシが出やすいので単独での使用には限界があります。他の指標や分析手法と併用することで、より信頼性が高まります。

トレンド判断

  • MACDラインがゼロラインを上回る:上昇トレンド
  • MACDラインがゼロラインを下回る:下降トレンド

売買シグナル

  • ゴールデンクロス(買いシグナル):MACDラインがシグナルラインを下から上に突き抜ける
  • デッドクロス(売りシグナル):MACDラインがシグナルラインを上から下に突き抜ける

ダイバージェンス

価格の動きとMACDの動きが乖離する現象で、相場転換の兆候を示すことがあります。

MACDの計算方法

MACDの計算は、以下の3つのステップで行います。

  • 短期のEMAを計算する。
  • 長期のEMAを計算する。
  • 短期EMAから長期EMAを引いてMACDラインを求め、MACDラインのEMAをシグナルラインとして計算する。

これらの計算をPythonで実装することで、自動的にMACDを算出し、グラフ化することができます。

PythonでMACDを計算するコード

MACDを計算しグラフで表示するには、以下のライブラリを使用します。

  • pandas: 時系列データを処理するためのライブラリ。
  • yfinance: 価格データを取得するためのライブラリ。
  • mplfinance: グラフの描画に使用します。

以下のコードを使って、MACDの計算とグラフの表示をします。使用するデータは、2023年の日経平均株価です。

Python
import pandas as pd
import yfinance as yf
import mplfinance as mpf

short_period = 12
long_period = 26
signal_period = 9

# 株価データを取得(例:日経平均株価のデータを使用)
ticker = '^N225'
data = yf.download(ticker, start='2023-01-01', end='2023-12-31')

# 短期と長期のEMAを計算
data['EMA_short'] = data['Close'].ewm(span=short_period, adjust=False).mean()
data['EMA_long'] = data['Close'].ewm(span=long_period, adjust=False).mean()

# MACDラインを計算
data['MACD'] = data['EMA_short'] - data['EMA_long']

# シグナルラインを計算
data['Signal'] = data['MACD'].ewm(span=signal_period, adjust=False).mean()

# MACDヒストグラムを計算
data['MACD_Histogram'] = data['MACD'] - data['Signal']

# MACDとシグナルラインをプロットするためのデータ準備
macd_plot = mpf.make_addplot(data['MACD'], panel=1, color='b', ylabel='MACD')
signal_plot = mpf.make_addplot(data['Signal'], panel=1, color='r')
histogram_plot = mpf.make_addplot(data['MACD_Histogram'], type='bar', panel=1, color='gray', alpha=0.5)

# ローソク足チャートとMACDをプロット
mpf.plot(data, type='candle', style='yahoo', addplot=[macd_plot, signal_plot, histogram_plot],
         volume=False, figsize=(12, 8), title='NIKKEI with MACD', ylabel='Price')

上記のコードを実行すると、以下のようにローソク足とMACDのグラフが出力されます。

ポイントの解説

Python
short_period = 12
long_period = 26
signal_period = 9

短期線、長期線、シグナルの期間を設定しています。期間の変更をしたい場合は、ここの数値を変更してください。

Python
# 短期と長期のEMAを計算
data['EMA_short'] = data['Close'].ewm(span=short_period, adjust=False).mean()
data['EMA_long'] = data['Close'].ewm(span=long_period, adjust=False).mean()

# MACDラインを計算
data['MACD'] = data['EMA_short'] - data['EMA_long']

# シグナルラインを計算
data['Signal'] = data['MACD'].ewm(span=signal_period, adjust=False).mean()

# MACDヒストグラムを計算
data['MACD_Histogram'] = data['MACD'] - data['Signal']

data['EMA_short'] = data['Close'].ewm(span=short_period, adjust=False).mean()data['EMA_long'] = data['Close'].ewm(span=long_period, adjust=False).mean()で、取得した価格データの終値に対して、短期と長期の指数平滑移動平均線を計算しています。

次にdata['MACD'] = data['EMA_short'] - data['EMA_long']で、短期の指数平滑移動平均線-長期の指数平滑移動平均線をして、MACDラインを計算します。

data['Signal'] = data['MACD'].ewm(span=signal_period, adjust=False).mean()で、MACDラインの移動平均線を計算して、シグナルラインとします。

最後にdata['MACD_Histogram'] = data['MACD'] - data['Signal']で、MACD-シグナルをして、MACDヒストグラムを計算します。

Python
# MACDとシグナルラインをプロットするためのデータ準備
macd_plot = mpf.make_addplot(data['MACD'], panel=1, color='b', ylabel='MACD')
signal_plot = mpf.make_addplot(data['Signal'], panel=1, color='r')
histogram_plot = mpf.make_addplot(data['MACD_Histogram'], type='bar', panel=1, color='gray', alpha=0.5)

計算したMACDとシグナルラインをプロットするためのデータ準備をします。

MACDはローソク足チャートとは別のグラフに表示するためにpanel=1を設定します。

MACDとシグナルラインの区別をするために、MACDはcolor='b'で青色に、シグナルラインはcolor='r'で赤色を指定します。また、MACDヒストグラムは、color='gray'で灰色を指定します。

おわりに

この記事では、Pythonを使ってMACDを計算し、グラフで視覚化する方法を解説しました。

MACDは、トレンドの強さや転換点を捉えるための有効な指標であり、トレードの売買判断に役立ちます。視覚的に理解しやすいグラフを作成することで、より効果的にテクニカル分析ができるようになります。

Pythonを活用すれば、MACDに限らず様々な指標を簡単に計算できます。この記事をきっかけに、ぜひ他のテクニカル指標にも挑戦してみてください。