mplfinanceでチャートを描写する
概要
背景
トレード関連の書籍を読んでいたところ、自分でもチャートを記載してみたくなりました。そこでpythonを使用してオリジナルのチャートを描写する方法について検討します。
目的
Pythonで株価のオリジナルの株価チャートを作成します。また、チャートのデザインをSBI証券のチャートに近いデザインに変更します。
mplfinance
mplfinanceとは
mplfinanceはDaniel 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)を描写する」に進んでください。