mplfinanceでチャートを描写する

2022-12-06

概要

背景

 トレード関連の書籍を読んでいたところ、自分でもチャートを記載してみたくなりました。そこでpythonを使用してオリジナルのチャートを描写する方法について検討します。

目的

 Pythonで株価のオリジナルの株価チャートを作成します。また、チャートのデザインをSBI証券のチャートに近いデザインに変更します。

mplfinance

mplfinanceとは

 mplfinanceDaniel Goldfarb氏によって開発されたファイナンシャルデータを可視化するためのライブラリです。matplotlibをファイナンシャルデータで扱いやすいように便利な拡張機能が組み込まれています。

インストール

 pip経由でインストールが可能です。以下のコマンドをターミナルに入力します。

pip install mplfinance

使い方

 例として「1301【(株)極洋】」の株価のチャートを描写してみます。以下のコードを使用してチャートを描写することができます。

 株価データの取得は「Pythonのyahoo-finance-api2用いて株価を取得する」を参考にしてください。

mplfinanceでは読み取るDataframeのindexをDatetimeIndex型に変換する必要があります。

それでは詳しくスクリプトの内容について説明をしていきます。

ライブラリの呼び出し

まず最初に必要なライブラリをimportします。株価を取得するためには以下の2つのライブラリが必要になります。

%matplotlib inline
import mplfinance as mpf

matplotlib inlineは出力にグラフを表示するための関数です。

グラフを描写する

plot関数を使用してグラフを描写します。株価データのDataframeを渡すことで、チャートが描写されます。typeには出力するグラフの種類を設定します。今回はローソクを表示させるためにcandleを指定しています。

mpf.plot(df, type='candle')

DataframeのindexはDatetimeIndex型であるため、スライサーに日時を指定することでデータの切り取りができます。

datefrom = "2022-12-01"
mpf.plot(df[datefrom:], type='candle')

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

SBI証券のチャートデザインに近づける

プログラム

 SBIのグラフに合わせたいのでスタイルを変えていきます。

 スクリプトの内容について説明をしていきます。

ローソクの色の変更

 make_marketcolors関数を使用することで、描写時のローソクの色を指定できます。

mc = mpf.make_marketcolors(up="#DF0101", down="#00008b", volume="#6E6E6E", edge="inherit", wick="inherit")

今回使用したパラメータは以下になります。

  • up
    上昇時のローソクの色を指定します。
  • down
    下降時のローソクの色をしています。
  • edge
     ローソクの枠線の色を指定します。inheritとすることでローソクの色と同色にできます。
  • wick
     ヒゲの色を指定します。inheritとすることでローソクの色と同色にできます。

グラフのスタイルの変更

make_mpf_style関数を使用することでグラフに関する設定を変更できます。marketcolorsに先程指定したローソクの色を指定します。

cs  = mpf.make_mpf_style(marketcolors=mc, gridcolor="#778899", y_on_right=True,
    rc={"xtick.labelsize":8, "ytick.labelsize":8}

今回使用したパラメータは以下になります。

  • marketcolors
     チャートの色を指定します。
  • gridcolor
     グリッドラインの色を変更できます。
  • y_on_right
     Trueをしてすると、y軸のメモリを右側に変更できます。

グラフを描写する

 最後にグラフを描写するためにplot関数を指定します。

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='')

 ここでもスタイルを変更するために幾つかパラメータを追加します。

  • volume
     出来高のグラフを追加します。
  • datetime_format
     日付の表示形式を変更できます。
  • figsize
     出力するグラフの大きさを指定できます。
  • style
     グラフのスタイルを指定できます。
  • width_adjuster_version
     出来高の棒グラフの棒の間隔を変更できます。
  • ylabel
     チャートのY軸のラベル名を変更できます。
  • ylabel_lower
     出来高のグラフののY軸のラベル名を変更できます。

まとめ

 Pythonで株価のオリジナルの株価チャートを作成しました。全く同じとまではいきませんでしたが、SBI証券のチャートにかなり似せることができました。おかげでデフォルトのチャートよりもかなり見やすくなりました。

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

次のステップ

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