みなさんこんにちは、ZeroTerasu(@ZeroTerasu)です。
今回は、金融関連の作図に用いられるPythonライブラリの「mplfinacen」を用いて株価チャートの作成を進めていきます。
尚、今回使用するデータフレームは、以前のpandas-datareaderの記事で作成したものを流用しますので、こちらの記事もご参照下さい。
また、今回はボリンジャーバンド、MACD、RSIのインジケーター作成には、「pyti」というライブラリを使用しています。
- mplfinanceのインストール:pip install mplfinance
- pytiのインストール:pip install pyti
- ローソク足チャートの作成:mpf.plot(df, type=’candle’)
- 出来高の追加:mpf.plot(df, type=’candle’, volume=True)
- 移動平均線の追加:mpf.plot(df, type=’candle’, mav=(5, 25, 75))
- ボリンジャーバンドの追加:mpf.plot(df, type=’candle’, addplot=apd)
- MACDの追加:mpf.plot(df, type=’candle’, addplot=apd)
- RSIの追加:mpf.plot(df, type=’candle’, addplot=apd)
mplfinanceのインストール:pip install mplfinance
まずは、通常通りpip install でmplfinanceをインストールします。
pip install mplfinance
pytiのインストール:pip install pyti
同様に、通常通りpip install でpytiをインストールします。
pip install pyti
ローソク足チャートの作成:mpf.plot(df, type=’candle’)
・チャートの作成には、「mplfinance.plot(データフレーム, type=’candle’)」を使用します。
・plotメソッドの引数に「データフレーム」を渡し、属性「type」に「candle」を指定することでローソク足のチャートが作成できます。
・「データフレーム」は、datetime型のデータがインデックスとなり、始値・高値・安値・終値のデータを含んでいる必要があります。
・属性「type」には、「candle」の他に、type=’line’, type=’renko’, or type=’pnf’ があります。また、typeを省略した場合、デフォルトで「ohlc(Open-high-low-close chart)」のチャートが作図されます。
import mplfinance as mpf
mpf.plot(df, type='candle)
# 実行結果は下記画像
出来高の追加:mpf.plot(df, type=’candle’, volume=True)
・出来高を表示するためには、キーワード引数「volume」を「True」に設定するだけだ大丈夫です。
import mplfinance as mpf
mpf.plot(df, type='candle, volume=True)
# 実行結果は下記画像
移動平均線の追加:mpf.plot(df, type=’candle’, mav=(5, 25, 75))
・移動平均線を表示するためには、キーワード引数「mav(moving average)」にタプル型で(短期線の間隔, 中期線の間隔, 長期の間隔)を設定するだけだ大丈夫です。
・例では、5日移動平均、25日移動平均、75日移動平均を表示しています。
import mplfinance as mpf
mpf.plot(df, type='candle, volume=True, mav=(5, 25, 75)
# 実行結果は下記画像
ボリンジャーバンドの追加:mpf.plot(df, type=’candle’, addplot=apd)
・ボリンジャーバンドを表示するためには、キーワード引数「addplot」に「apd=mpf.make_addplot(df[[Pytiで作成した各σのリスト]])」を格納します。
・「apd = mpf.make_addplot()」とは、mplfinanceが、始値・高値・安値・終値・出来高しか認識できないため、その他のデータを認識させるために使用するメソッドです。
・例では、期間を20日間としています。
from pyti.bollinger_bands import upper_bollinger_band as bb_up
from pyti.bollinger_bands import middle_bollinger_band as bb_mid
from pyti.bollinger_bands import lower_bollinger_band as bb_low
data = df['Close'].values.tolist()
period = 20
df['bb_up3'] = bb_up(data, period, 3)
df['bb_up2'] = bb_up(data, period, 2)
df['bb_up1'] = bb_up(data, period, 1)
df['bb_mid'] = bb_mid(data, period)
df['bb_low1'] = bb_low(data, period, 1)
df['bb_low2'] = bb_low(data, period, 2)
df['bb_low3'] = bb_low(data, period, 3)
apd = mpf.make_addplot(df[['bb_up3','bb_up2','bb_up1','bb_mid','bb_low1','bb_low2','bb_low3']])
mpf.plot(df,type='candle',addplot=apd,volume=True)
# 実行結果は下記画像
MACDの追加:mpf.plot(df, type=’candle’, addplot=apd)
・MACDを表示するためには、キーワード引数「addplot」に「apd=mpf.make_addplot(df[[Pytiで作成した各σのリスト]])」を格納します。
・「apd = mpf.make_addplot()」とは、mplfinanceが、始値・高値・安値・終値・出来高しか認識できないため、その他のデータを認識させるために使用するメソッドです。
・例では、MACD短期=12日、MACD長期=26日、SMA=9日を期間として設定しています。
from pyti.bollinger_bands import upper_bollinger_band as bb_up
from pyti.bollinger_bands import middle_bollinger_band as bb_mid
from pyti.bollinger_bands import lower_bollinger_band as bb_low
data = df['Close'].values.tolist()
period = 20
df['bb_up3'] = bb_up(data, period, 3)
df['bb_up2'] = bb_up(data, period, 2)
df['bb_up1'] = bb_up(data, period, 1)
df['bb_mid'] = bb_mid(data, period)
df['bb_low1'] = bb_low(data, period, 1)
df['bb_low2'] = bb_low(data, period, 2)
df['bb_low3'] = bb_low(data, period, 3)
apd = mpf.make_addplot(df[['bb_up3','bb_up2','bb_up1','bb_mid','bb_low1','bb_low2','bb_low3']])
mpf.plot(df,type='candle',addplot=apd,volume=True)
# 実行結果は下記画像
RSIの追加:mpf.plot(df, type=’candle’, addplot=apd)
・RSIを表示するためには、キーワード引数「addplot」に「apd=mpf.make_addplot(df[‘RSI’])」を格納します。
・「apd = mpf.make_addplot()」とは、mplfinanceが、始値・高値・安値・終値・出来高しか認識できないため、その他のデータを認識させるために使用するメソッドです。
・例では、期間を14日間としています。
from pyti.relative_strength_index import relative_strength_index as rsi
data = df['Close'].values.tolist()
period = 14
df['rsi'] = rsi(data,period=period)
apd = mpf.make_addplot(df[['rsi']],color='b',panel=2)
mpf.plot(df, type='candle', addplot=apd, volume=True)
# 実行結果は下記画像
コメント