【Python】TA-LibによるRSIの取得・描画

4月 9, 2021

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

本記事のコードを実行することで,以下のような結果が得られます.

RSIについての解説は,テクニカル指標「RSI」とは?計算式からRSIを理解しましょうをご覧ください.

各ライブラリのインストール

今回使用するライブラリは以下の通りです.

  • datatime
  • Numpy
  • matplotlib
  • pandas-datareader
  • TA-Lib

このうちTA-Lib以外のライブラリ(モジュール)はpipで簡単にインストールできます.pandas-datareaderの使い方についてはpandas datareaderをインストールして株価データを取得する方法【日本株・米国株】をご覧ください.

TA-Libのインストールはひと手間いるので,Windowsをお使いの場合はTA-LibをWindowsにインストールする方法【Python】を,それ以外の環境をお使いの場合は各自お調べください.

TA-LibによるRSI描画コード

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

コードと結果は以下の通りです.

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()

実行結果

コード解説

株価データ取得

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

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

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

今回は,S&P500の株価データを取得しています.

pandas-datareaderの詳しい使い方についてはpandas datareaderをインストールして株価データを取得する方法【日本株・米国株】をご覧ください.

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を計算

TA-Libでは,以下のコードだけでRSIを得ることができます.

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

最後に,RSIをグラフにプロットして完了です.

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