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')
ディスカッション
コメント一覧
まだ、コメントがありません