mplfinance は、Pythonの matplotlib をベースにした金融データの可視化ライブラリで、ローソク足チャートや移動平均線などのテクニカル指標を簡単に描画できます
mplfinanceの特徴
- ローソク足チャートの描画:株価や仮想通貨の価格変動を視覚化
- 移動平均線の表示:複数の移動平均線を簡単に追加
- 出来高の表示:出来高データを棒グラフで表示可能
- スタイルのカスタマイズ:色やレイアウトを簡単に変更
- 複数のサブプロット対応:テクニカル指標を別のグラフとして追加可能
今回はyfinanceで取得した株価データからローソク足グラフを作成してみます
必要なライブラリのインストール
pip install mplfinance yfinance pandas
ローソク足チャートを描画するサンプルコード
このコードは、トヨタ(7203.T)の直近1年間の株価データを取得し、ローソク足チャート(キャンドルスティックチャート)を描画するコードです
また、移動平均線(25日、75日)を表示し、出来高(Volume)も併せてプロットします
以下、コードの詳細な解説をしていきます
import pandas as pd
import mplfinance as mpf
import yfinance as yf
# トヨタ(7203.T)の直近1年分の株価データを取得
ticker = "7203.T"
df = yf.download(ticker, period="1y", interval="1d", auto_adjust=False)
# カラム名をリセット(マルチインデックスを解除)
df.columns = df.columns.get_level_values(0)
# 必要なカラムのみを選択
df = df[["Open", "High", "Low", "Close", "Volume"]]
# カスタムカラーを設定
mc = mpf.make_marketcolors(
up='red', # 陽線(上昇)の色
down='blue', # 陰線(下降)の色
wick='black', # ヒゲの色
volume='gray' # 出来高の色
)
# カスタムスタイルを作成
s = mpf.make_mpf_style(marketcolors=mc)
# ローソク足チャートを描画
mpf.plot(
df,
type="candle",
style=s,
volume=True,
mav=(25, 75), # 25日、75日移動平均線
figratio=(10, 6), # グラフ全体の縦横比を調整
panel_ratios=(3, 1) # 価格:出来高の比率を 3:1 に設定(デフォルトは 2:1)
title=f"{ticker} 1-Year Candlestick Chart",
savefig=f"{ticker}_Candlestick.png"
)
コードの解説
1. 必要なライブラリのインポート
import pandas as pd
import mplfinance as mpf
import yfinance as yf
- pandas(データ処理)
- mplfinance(金融データの可視化)
- yfinance(Yahoo!ファイナンスからデータ取得)
2. 株価データの取得
ticker = "7203.T"
df = yf.download(ticker, period="1y", interval="1d", auto_adjust=False)
- ticker:トヨタ(7203.T)の銘柄コードを指定
- ^N225(日経平均)、USDJPY=X(ドル円レート)なども使用可能
- period=”1y”:過去1年間のデータを取得
- 他にも”1d”や”1mo”ような期間でもデータを取得できます
- interval=”1d”:1日ごとのデータを取得(日足)
- 他にも”1m”や”1wk”ような期間でもデータを取得できます
- auto_adjust=False:株式分割や配当調整なしのデータを取得
取得されたデータのカラム(列)は次のようになります:
Date | Open | High | Low | Close | Adj Close | Volume |
---|---|---|---|---|---|---|
2024-03-01 | 2200 | 2250 | 2180 | 2225 | 2225 | 1000000 |
3. カラムの整理
df.columns = df.columns.get_level_values(0)
df = df[["Open", "High", "Low", "Close", "Volume"]]
- df.columns.get_level_values(0):マルチインデックスがある場合に解除
- df = df[[“Open”, “High”, “Low”, “Close”, “Volume”]]
- ローソク足の基本データ(始値・高値・安値・終値・出来高)を抽出
4. チャートのカスタムスタイルを作成
mc = mpf.make_marketcolors(
up='red', # 陽線(上昇)の色
down='blue', # 陰線(下降)の色
wick='black', # ヒゲの色
volume='gray' # 出来高の色
)
s = mpf.make_mpf_style(marketcolors=mc)
- 陽線(終値が始値より高い) → 赤
- 陰線(終値が始値より低い) → 青
- ヒゲ(高値・安値を示す線) → 黒
- 出来高 → グレー
5. ローソク足チャートの描画
mpf.plot(
df,
type="candle", # ローソク足チャート
style=s, # カスタムスタイル適用
volume=True, # 出来高を表示
mav=(25, 75), # 25日・75日移動平均線
figratio=(10, 6), # グラフの縦横比を調整
panel_ratios=(3, 1), # 価格:出来高の比率を 3:1 に設定
title=f"{ticker} 1-Year Candlestick Chart", # タイトルを設定
savefig=f"{ticker}_Candlestick.png" # 画像として保存
)
- type=”candle”:ローソク足チャート
- volume=True:出来高を表示
- mav=(25, 75):25日・75日の移動平均線を追加
- figratio=(10, 6):グラフの縦横比を10:6に調整
- panel_ratios=(3, 1):価格:出来高を3:1の比率で表示
- title:チャートのタイトル
- savefig:画像ファイル(7203.T_Candlestick.png)として保存
6. 出力されるグラフ

このように日本株の可視化などに便利なので、mplfinance を活用すれば、企業の株価や移動平均線を簡単にグラフ化できます
次回以降の記事で、これをDiscord botでticker入力すればローソク足チャートを返してくれるコードを作成したいと思います
コメント