非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】mplfinanceでローソク足チャートの下にMACDチャートを表示してみた

   

ローソク足チャートを分析する際、テクニカル指標を併用することでトレンドや転換点をより正確に把握できます。今回はmplfinanceを用いてMACD(移動平均収束拡散法)をローソク足の下に表示する方法を解説します。

MACDは短期と長期の移動平均線の差分を元にトレンドの勢いを可視化する指標です。ゼロラインを軸にトレンドの強弱を把握し、シグナルラインとの交差で売買タイミングを探ります。

import pandas as pd
import mplfinance as mpf

# CSVファイル読み込み
# USDJPYDaily.csvには日付、始値、高値、安値、終値が含まれるデータを想定
df = pd.read_csv('USDJPYDaily.csv')
df['Date'] = pd.to_datetime(df['Date'])  # 'Date'列をdatetime型に変換

# 日付をインデックスにセット
# mplfinanceはインデックスに日付データを要求するため
df.set_index(keys='Date', inplace=True)

# ダミーのVolume列を追加
# ボリューム(取引量)がない場合、0で埋めることでエラーを防止
df['Volume'] = 0  # 必要に応じて適切な値に変更

# 必要なカラムが揃っているか確認
# チャート描画には 'Open', 'High', 'Low', 'Close' のカラムが必須
if not all(col in df.columns for col in ['Open', 'High', 'Low', 'Close']):
    raise ValueError("CSVに 'Open', 'High', 'Low', 'Close' カラムが必要です。")

# MACD計算
# 短期移動平均 (12期間)、長期移動平均 (26期間)、シグナルライン (9期間) を設定
short_window = 12  # 短期EMA
long_window = 26   # 長期EMA
signal_window = 9  # シグナルライン

# 短期と長期の指数移動平均を計算
df['EMA_short'] = df['Close'].ewm(span=short_window, adjust=False).mean()
df['EMA_long'] = df['Close'].ewm(span=long_window, adjust=False).mean()

# MACD = 短期EMA - 長期EMA
df['MACD'] = df['EMA_short'] - df['EMA_long']

# シグナルラインを計算 (MACDの9期間EMA)
df['Signal'] = df['MACD'].ewm(span=signal_window, adjust=False).mean()

# プロットするデータ数
# 最新100件分のデータをプロット対象とする
PLOT_DATA_COUNT = 100
last_100_df = df.tail(PLOT_DATA_COUNT)

# プロット用にMACDデータを整形
# MACDとシグナルラインをローソク足の下に描画する設定
add_plot = [
    mpf.make_addplot(last_100_df['MACD'], panel=1, color='blue', ylabel='MACD'),  # MACDライン
    mpf.make_addplot(last_100_df['Signal'], panel=1, color='red')  # シグナルライン
]

# チャートのデザイン(スタイル)を設定
# カスタムスタイルを定義(例: Yahooスタイルをベースに細部を変更)
my_style = mpf.make_mpf_style(
    base_mpf_style='yahoo',  # Yahooスタイルをベースに設定
    marketcolors=mpf.make_marketcolors(
        up='red', down='darkblue', edge='inherit', wick='black', volume='inherit'  # 上昇は赤、下降は濃い青
    ),
    facecolor='white',  # 背景色を白に設定
    gridcolor='lightgray',  # グリッド線の色をライトグレーに
    gridstyle='--'  # グリッド線を点線スタイルに変更
)

# チャート描画
mpf.plot(df.tail(PLOT_DATA_COUNT),  # 最新100件分のデータを描画
         type='candle',  # ローソク足チャート
         style=my_style,  # カスタムスタイルを適用
         # mav=(5, 25),  # 移動平均線(例: 5日と25日)
         addplot=add_plot,  # MACDとシグナルラインを追加
         figratio=(10, 5))  # 図の縦横比を指定
 

 

こちらが実行結果です。

 

解説

MACDの計算:

  • 短期EMAと長期EMAを計算して差分をMACDとします。
  • SignalはMACDのEMA(9期間)で算出します。

mplfinanceのカスタムチャート:

  • mpf.make_addplot()を使って新しいチャートを作成。
  • panel=1を指定すると、ローソク足チャートの下に新たなパネルを追加します。
  • 複数のデータを重ねて描画するため、リスト形式でaddplotに渡します。

チャートのプロット:

  • type=’candle’でローソク足を指定。
  • volume=Trueでボリュームを有効化。
  • style=’yahoo’で見た目を変更。

 

スポンサーリンク

 - Python