PythonライブラリTA-Libで色々なテクニカル指標を使ってみる

5月 30, 2021

TA-LibというPythonライブラリを用いることで,様々なテクニカル指標を簡単に計算できます.

今回は,TA-Libの紹介としていくつかのテクニカル指標を計算して表示させてみたいと思います.

例えば,TA-Libでは以下のような指標が計算できます.

TA-Libで計算できるテクニカル指標の例

MACD

ボリンジャーバンド

RSI

モメンタム

SMA(単純移動平均線)

EMA(指数平滑移動平均線)

KAMA(適応型移動平均)

MAMA(MESA 適応型移動平均)

パラボリック SAR

T3(3重指数移動平均)

WMA(重み付き移動平均)

ADX(平均方向性指数)

APO(アブソリュートプライス オシレーター)

MFI(マネーフローインデックス)

TA-Libで計算できる他の指標については,TA-Libのドキュメントをご覧ください.

今回は例として,TA-Libを使ってSMA(単純移動平均線)MACDボリンジャーバンドRSIのテクニカル指標を計算し描画します.

TA-Libのインストール

TA-Libのインストールは環境に合わせて行う必要があるため,少しだけ厄介です(単純なpipではできません).

インストールはTA-Libをインストールする方法【Python】を参考にしてください.

データの取得

今回計算する各テクニカル指標の計算には,株価データが必要です.

TA-Libでは株価データを取得することはできませんから,別のライブラリで行う必要があります.

例えば,ライブラリ『pandas datareader』で株価データを取得します.

pip install pandas_datareader

以下は,2008年1月1日~現在までの日経平均株価を取得する例です.

import pandas_datareader.data as web
import datetime

start = datetime.date(2008,1,1)
end = datetime.date.today()

data = web.DataReader('^N225', 'yahoo', start, end)

data

                    High           Low          Open         Close       Volume     Adj Close
Date
2008-01-07  14667.849609  14438.610352  14549.379883  14500.549805  139800000.0  14500.549805
2008-01-08  14547.799805  14365.860352  14429.299805  14528.669922  146800000.0  14528.669922
2008-01-09  14602.650391  14271.570312  14364.709961  14599.160156  155500000.0  14599.160156
...                  ...           ...           ...           ...          ...           ...
2021-03-16  30026.400391  29755.470703  29770.390625  29921.089844   83800000.0  29921.089844
2021-03-17  29984.970703  29825.160156  29836.830078  29914.330078   74600000.0  29914.330078
2021-03-18  30485.000000  30041.500000  30148.480469  30216.750000          0.0  30216.750000

以降では,このうち終値(Close)を用います.

close = data['Close']

TA-Libで各テクニカル指標を計算

コードしか載せていませんので,詳しい説明は各項目にあるリンクを参考にしてください.

ライブラリのインポート

import talib as ta
import matplotlib.pyplot as plt

SMA(単純移動平均線)

#Simple Moving Average
sma5 = ta.SMA(close, timeperiod=5)
sma25 = ta.SMA(close, timeperiod=25)
sma50 = ta.SMA(close, timeperiod=50)
sma75 = ta.SMA(close, timeperiod=75)
sma100 = ta.SMA(close, timeperiod=100)
plt.plot(close,label='price')
plt.plot(sma5,label='sma5')
plt.plot(sma25,label='sma25')
plt.plot(sma50,label='sma50')
plt.plot(sma75,label='sma75')
plt.plot(sma100,label='sma100')
plt.xlabel('date')
plt.ylabel('price')
plt.legend()
plt.show()

詳しくは以下の記事を参照

【Python】TA-Libで移動平均線(SMA)を引く

MACD

#MACD - Moving Average Convergence/Divergence
macd, macdsignal, macdhist = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
plt.plot(macd,label='macd')
plt.plot(macdsignal,label='macdsignal')
plt.bar(macdhist.index,macdhist ,label='macdhist')
plt.xlabel('date')
plt.ylabel('indicator value')
plt.legend()
plt.show()

詳しくは以下の記事を参照

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

ボリンジャーバンド

#Bollinger Bands
upper1, middle,lower1 = ta.BBANDS(close, timeperiod=25, nbdevup=1, nbdevdn=1, matype=0)
upper2, middle, lower2 = ta.BBANDS(close, timeperiod=25, nbdevup=2, nbdevdn=2, matype=0)
upper3, middle, lower3 = ta.BBANDS(close, timeperiod=25, nbdevup=3, nbdevdn=3, matype=0)
plt.plot(close,label='price',color='k')
plt.plot(upper1,label='upper1',color='b')
plt.plot(lower1,label='lower1',color='b')
plt.plot(upper2,label='upper2',color='g')
plt.plot(lower2,label='lower2',color='g')
plt.plot(upper3,label='upper3',color='r')
plt.plot(lower3,label='lower3',color='r')
plt.xlabel('date')
plt.ylabel('price')
plt.legend()
plt.show()

詳しくは以下の記事を参照

【Python】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()

詳しくは以下の記事を参照

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

参考記事

【Python】株価のテクニカル指標をチェックする(無次元日記)