2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-04-09

今回は,テクニカル指標である 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()

image.png

まとめコード

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

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

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?