【Python】TA-Libでテクニカル指標計算 Part 1. RSIの描画


今回は,テクニカル指標である RSI(Relative Strength Index) をPythonライブラリTA-Libで計算し,描画する方法を紹介します.

【Python】TA-Libでテクニカル指標計算 Part 1. RSIの描画
【Python】TA-Libでテクニカル指標計算 Part 2. ボリンジャーバンドの描画
【Python】TA-Libでテクニカル指標計算 Part 3. SMA(単純移動平均線)の描画
【Python】TA-Libでテクニカル指標計算 Part 4. MACDの描画

TA-Libのインストール

前回の記事

をご覧ください.

TA-LibによるRSI描画

各ライブラリインポート

import datetime
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import talib as ta

株価データ取得

今回は,2019/4/1~2020/4/1におけるS&P500の9日RSIと14日RSIをTA-Libで取得してみたいと思います.

株価は,pandas_datareaderで取得します.もちろんウェブやローカルにあるCSVファイルを読み込むなどでも構いません.

start = datetime.date(2019,4,1)
end = datetime.date(2020,4,1)
df = web.DataReader('^GSPC', 'yahoo', start, end) #get data

pandas-datareaderで取得したデータは以下のように,High(高値),Low(低値),Open(始値),Close(終値),Volume(出来高),Adj Close(調整後終値)を持つDataFarameとなっています.

                   High          Low         Open        Close      Volume    Adj Close
Date
2019-04-01  2869.399902  2848.629883  2848.629883  2867.189941  3500760000  2867.189941
2019-04-02  2872.899902  2858.750000  2868.239990  2867.239990  3246900000  2867.239990
2019-04-03  2885.250000  2865.169922  2876.090088  2873.399902  3550240000  2873.399902
2019-04-04  2881.280029  2867.139893  2873.989990  2879.389893  3015180000  2879.389893
2019-04-05  2893.239990  2882.989990  2884.159912  2892.739990  3146820000  2892.739990
...                 ...          ...          ...          ...         ...          ...
2020-03-26  2637.010010  2500.719971  2501.290039  2630.070068  7753160000  2630.070068
2020-03-27  2615.909912  2520.020020  2555.870117  2541.469971  6194330000  2541.469971
2020-03-30  2631.800049  2545.280029  2558.979980  2626.649902  5746220000  2626.649902
2020-03-31  2641.389893  2571.149902  2614.689941  2584.590088  6568290000  2584.590088
2020-04-01  2522.750000  2447.489990  2498.080078  2470.500000  5947900000  2470.500000

RSIに必要なデータ

pandas-datareaderで取得したデータのうち,RSIを計算するために必要なデータは,終値(Close)だけです.dfの’Close’の列だけをcloseとして取り出します(他のカラムでも計算自体はできます).

close = df['Close']

TA-LibでRSIを計算

#RSI(Relative Strength Index)
rsi9 = ta.RSI(close, timeperiod=9)
rsi14 = ta.RSI(close, timeperiod=14)

描画

plt.plot(rsi9,label='rsi9')
plt.plot(rsi14,label='rsi14')
plt.xlabel('date')
plt.ylabel('RSI')
plt.legend()
plt.show()

まとめコード

import datetime
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import talib as ta

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

df = web.DataReader('^GSPC', 'yahoo', start, end) #get data

close = df['Close']

#RSI(Relative Strength Index)
rsi9 = ta.RSI(close, timeperiod=9)
rsi14 = ta.RSI(close, timeperiod=14)

plt.plot(rsi9,label='rsi9')
plt.plot(rsi14,label='rsi14')
plt.xlabel('date')
plt.ylabel('RSI')
plt.legend()
plt.show()

もう少しだけ丁寧な解説を以下の記事で行っています.