Pythonのmplfinanceで簡単に株価ローソク足,移動平均線およびボリュームを描画する方法

プログラミングによるテクニカル分析をしたい場合,ローソク足や移動平均線を参考にしたい場面は多いですよね.

そこで今回は,Pythonでこれらを描画する方法を紹介します.

ローソク足や移動平均線を取得できる有名なPythonライブラリとして「TA-Lib」があり,TA-Libでは他のテクニカル分析も取得できるので便利ですが,インストールや扱いが少し難しいので今回は比較的お手軽にローソク足や移動平均線,ボリュームが描画できる『mplfinance』を使用します.

また,「Plotly」もmplfinanceと同じくらい簡単にテクニカルチャートを描画できるライブラリなので,こちらもぜひトライしてみてください.

データの取得

ローソク足や移動平均線を描画するために,株価のデータを用意します.

データの取得は,今回はpandas-datareaderで行います.pipでインストールしておいてください.

pip install pandas_datareader

データを取得するコードは以下の通りです.

import pandas_datareader.data as web
import datetime

start = datetime.date(2020,2,1)
end = datetime.date(2020,4,1)

df = web.DataReader('^N225', 'yahoo', start, end)

これで,Yahoo!financeから2020/2/1~2020/4/1の日経平均株価(’^N225’)を取得することができます.

pandas-datareaderでは他にも米国株,日本株,日経平均株価以外の指数など,色々なデータを取得することができるのでpandas datareaderをインストールして株価データを取得する方法【日本株・米国株】を参考にしてみてください.今回は日経平均株価を例に進めます.

取得したデータは以下のような構造を持っています.

print(df.head())
                    High           Low          Open         Close    Volume     Adj Close
Date
2020-02-03  23023.730469  22775.919922  22874.269531  22971.939453  72500000  22971.939453
2020-02-04  23118.130859  22854.449219  22881.130859  23084.589844  67900000  23084.589844
2020-02-05  23414.689453  23241.640625  23351.470703  23319.560547  70300000  23319.560547
2020-02-06  23995.369141  23625.130859  23641.099609  23873.589844  95100000  23873.589844
2020-02-07  23943.449219  23759.419922  23899.009766  23827.980469  65400000  23827.980469

以下で説明するmplfinanceを用いるには,このように['Open’, 'High’, 'Low’, 'Close’, 'Volume’]のインデックスを持つDataFarameを用意する必要があります.

ローソク足を描画

ローソク足の描画にはPythonライブラリ『mplfinance』を用いると手軽です.mplfinanceはpipでインストール可能です.

pip install mplfinance

先ほど取得したデータdfを使ったローソク足の描画は,次の2行でできます.

import mplfinance as mpf
mpf.plot(df, type='candle')

移動平均線を描画

mplfinanceでは,移動平均線もお手軽に描画できます.

先ほどのプロット部分を,以下のように変更すればOKです.

mpf.plot(df, type='candle',mav=(5, 25))

この場合,5点の移動平均線と25点の移動平均線が出力されます.データが日次なら5日移動平均線と25日平均線です.

ボリュームを描画する

取得データに’Volume’が含まれていれば,ボリュームを描画することも可能です.

先ほどのプロット部分を,以下のように変更すればOKです.

mpf.plot(df, type='candle', volume=True, mav=(5, 25))

描画スタイルの変更

おまけですが,以下のようにすれば描画スタイルが変更できます.

mpf.plot(df, type='candle', volume=True, mav=(5, 25), style='yahoo')

まとめコード

#import
import pandas_datareader.data as web
import mplfinance as mpf
import datetime

start = datetime.date(2020,2,1)
end = datetime.date(2020,4,1)

df = web.DataReader('^N225', 'yahoo', start, end) #データの取得

mpf.plot(df, type='candle', volume=True, mav=(5, 25), style='yahoo')