python mplfinanceでローソク足グラフ作成

Python

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:株式分割や配当調整なしのデータを取得

取得されたデータのカラム(列)は次のようになります:

DateOpenHighLowCloseAdj CloseVolume
2024-03-01220022502180222522251000000

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入力すればローソク足チャートを返してくれるコードを作成したいと思います

コメント