【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’で見た目を変更。
スポンサーリンク