mplfinanceでSBI証券Likeなチャートを記載してみる

2021-09-26

 本を読んでいたら実際のチャートを書きたくなったので、pythonでチャートの記載をしました。
チャートを記載する用のライブラリとしてmplfinanceが用意されているのでこちらを使用します。

 個人的にデフォルトのチャートは見づらいので、いつも使っているSBI証券のチャートに寄せていきます。

mplfinanceを試してみる

 今回はGoogle Colabを使用してグラフを描写していきます。

 まずは、「yahoo-finance-api2を用いたPythonによる株価の自動取得」の記事に従って株式データを取得して、csv形式でデータを保存します。csvファイルはGoogle Driveに保存をしてください。

 次に必要なモジュールのインストールを行います。

pip install mplfinance

 ライブラリをインポートします。

%matplotlib inline
import pandas as pd
import mplfinance as mpf

 次にGoogle Driveからcsvを読み取ります。今回は1301のデータを読み取ります。
データを読み取る前にGoogle Driveをマウントします。

from google.colab import drive
drive.mount('/content/drive')

 csvのあるパスを指定してデータを読み込みます。

df = pd.read_csv('/content/drive/MyDrive/.../1301.csv', index_col='datetime', parse_dates=True)

※mplfinanceでは読み取るデータのindexをDatetimeIndex型に変換する必要があるので注意をしてください。そうしないとプロットをした際に以下のエラーが発生します。

df = pd.read_csv('/content/drive/MyDrive/.../1301.csv')
mpf.plot(df, type='candle')
/usr/local/lib/python3.7/dist-packages/mplfinance/_arg_validators.py in _check_and_prepare_data(data, config)
     28 
     29     if not isinstance(data.index,pd.core.indexes.datetimes.DatetimeIndex):
---> 30         raise TypeError('Expect data.index as DatetimeIndex')
     31 
     32     if (len(data.index) > config['warn_too_much_data'] and

TypeError: Expect data.index as DatetimeIndex

 mpf.plotに読み込んだDataframeを渡すことで、グラフを描写できます。
この後、SBI証券のグラフと比較をするためにデータは2021-07-14以降のものを取り出しています。

※データの切り取りですが、plotの直前に行ってください。今後、移動平均線などを計算する際に、過去のデータ過去(グラフ外)のデータが必要になります。

datefrom = "2021-07-14"
mpf.plot(df[datefrom:], type='candle')

SBI証券のグラフに近づける

SBIのグラフに合わせたいのでスタイルを変えていきます。以下のコードをplot時の引数に設定します。

mc = mpf.make_marketcolors(up="#DF0101", down="#00008b", volume="#6E6E6E", edge="inherit", wick="inherit")
cs  = mpf.make_mpf_style(marketcolors=mc, gridcolor="#778899", y_on_right=True,
    rc={"xtick.labelsize":8, "ytick.labelsize":8})
mpf.plot(df[datefrom:], type='candle', volume=True, datetime_format='%Y/%m/%d', figsize=(9,5), 
         style=cs, width_adjuster_version='v0', xrotation=False, ylabel='', ylabel_lower='')

 変更にあたり便利なパラメータが何個かあったのでメモしておきます。

  • edge="inherit"
     ローソクの枠の色をupとdownと同色にします。
  • wick="inherit"
     ヒゲの色をupとdownと同色にします。
  • y_on_right
     Trueをしてすると、y軸のメモリを右側に変更できます。
  • width_adjuster_version
     Volume間のグラフの隙間を変更できます。
  • ylabel
     上のグラフのY軸のラベル名を変更できます。
  • ylabel_lower
     下のグラフのY軸のラベル名を変更できます。

 以下が完成したチャートです。

mplfinanceで作成したチャート

 いかがでしょうか?全く同じとまではいきませんでしたが、SBI証券のチャートにかなり似せることができました。おかげでデフォルトのチャートよりもかなり見やすくなりました👍

 普段SBI証券をご利用されていない方も、グラフが見やすくなりますので是非ご活用ください。

 移動平均線を描写したい方は「mplfinanceで指数平滑移動平均線(EMA)を描写する」を参照してください。