【Python】テクニカル分析ライブラリTA-Libの使い方を解説

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

FXや株の取り引きをサポートをしてくれるツールがインジケーターです。

Pythonを利用すれば自力でインジケーターの計算をすることは可能ですが、計算方法を調べてプログラムに記述する必要があるので大変です。

Pythonは金融向けのライブラリが充実しています。TA-Libはテクニカル分析に特化したPythonで利用できるライブラリです。

本記事では、テクニカル分析ライブラリTA-Libの使い方を解説していきます。

TA-Libとは

TA-Libとは、Technical Analysis Libraryの略で、テクニカル分析に特化したPythonで利用できるライブラリです。

ADX、MACD、RSI、ストキャスティクス、ボリンジャーバンドなどの200種類ほどのインジケーターの計算やローソク足のパターン認識をすることができます。

200種類を全て網羅することは難しいですが、順次、使い方の解説をしていければと思います。

TA-Libのインストール

TA-Libのインストールは、pip install TA-Libではエラーが出てインストールできません。TA-Libのソースコードをビルドする必要があるようです。

私のWindows環境では、Anaconda Promptで下記のコマンドでインストールできました。

Python
conda install -c conda-forge ta-lib

TA-Libの使い方

価格データの準備

TA-Libでインジケーターを出力させるためには、当然ですが価格データが必要です。必要な価格データは、始値・高値・安値・終値・出来高の5種類です。

今回は、色々な情報をAPIを使って簡単に取得できるpandas_datareaderで2023年の日経平均の価格データを取得します。

Python
import pandas_datareader

start = '2023-1-01'
end = '2023-12-31'

df = pandas_datareader.DataReader('^NKX', 'stooq', start, end)

df.sort_index(inplace=True)

TA-Libのコード

TA-Libの使い方は、talib.TA-Libのクラス名(引数)で結果が出力されます。

例えば、下記のコードで移動平均線を計算できます。

Python
import pandas_datareader
import talib

start = '2023-1-01'
end = '2023-12-31'

df = pandas_datareader.DataReader('^NKX', 'stooq', start, end)

df.sort_index(inplace=True)

df['MA'] = talib.MA(df['Close'], timeperiod=20)

print(df)

移動平均線をdataframeのMAという新しいカラムに代入しています。

計算結果は、下記のように表示されます。

インジケーターの一覧

インジケーターを計算するコードだけ記載していくので、上記のコードに追加して試してみてください。

移動平均線

Python
df['MA'] = talib.MA(df['Close'], timeperiod=20)
  • 第1引数:終値
  • timeperiod:期間

指数平滑移動平均線

Python
df['EMA'] = talib.EMA(df['Close'], timeperiod=20)
  • 第1引数:終値
  • timeperiod:期間

二重指数移動平均線

Python
df['DEMA'] = talib.DEMA(df['Çlose'], timeperiod=20)
  • 第1引数:終値
  • timeperiod:期間

加重移動平均線

Python
df['WMA'] = talib.WMA(df['Close'], timeperiod=20)
  • 第1引数:終値
  • timeperiod:期間

パラボリックAR

Python
df['SAR'] = talib.SAR(df['High'], df['Low'], acceleration=0, maximum=0)
  • 第1引数:高値
  • 第2引数:安値
  • acceleration:加速度
  • timeperiod:最大値

ボリンジャーバンド

Python
df['BBANDS_U'], df['BBANDS_M'], df['BBANDS_L'] = talib.BBANDS(df['Close'], timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
  • 第1引数:終値
  • timeperiod:期間
  • nbdevup:上側の標準偏差
  • nbdevdn:下側の標準偏差
  • matype:移動平均線のタイプ

MACD

Python
df['MACD'], df['MACDsignal'], df['MACDhist'] = talib.MACD(df['Close'], fastperiod=12, slowperiod=26, signalperiod=9)
  • 第1引数:終値
  • fastperiod:短期EMA
  • slowperiod:長期EMA
  • signalperiod:シグナル

RSI

Python
df['RSI'] = talib.RSI(df['Close'], timeperiod=14)
  • 第1引数:終値
  • timeperiod:期間

ATR

Python
 df['ATR'] = talib.ATR(df['High'], df['Low'], df['Close'], timeperiod=14)
  • 第1引数:高値
  • 第2引数:安値
  • 第3引数:終値
  • timeperiod:期間

平均方向性指数

Python
 df['ADX'] = talib.ADX(df['High'], df['Low'], df['Close'], timeperiod=14)
  • 第1引数:高値
  • 第2引数:安値
  • 第3引数:終値
  • timeperiod:期間

方向性指数

Python
df['DX'] = talib.DX(df['High'], df['Low'], df['Close'], timeperiod=14)
  • 第1引数:高値
  • 第2引数:安値
  • 第3引数:終値
  • timeperiod:期間

モメンタム

Python
df['MOM'] = talib.MOM(df['close'], timeperiod=10)
  • 第1引数:終値
  • timeperiod:期間

標準偏差

Python
df['STDDEV'] = talib.STDDEV(df['Close'], timeperiod=10, nbdev=1)
  • 第1引数:終値
  • timeperiod:期間
  • nbdev:標準偏差

指定期間の最高値

Python
df['CCI'] = talib.MAX(df['Close'], timeperiod=30)
  • 第1引数:終値
  • timeperiod:期間

指定期間の最安値

Python
df['MIN'] = talib.MIN(df['Close'], timeperiod=30)
  • 第1引数:終値
  • timeperiod:期間

CCI

Python
df['CCI'] = talib.CCI(df['High'], df['Low'], df['Close'], timeperiod=14)
  • 第1引数:高値
  • 第2引数:安値
  • 第3引数:終値
  • timeperiod:期間

おわりに

TA-Libを使用することで簡単にインジケーターの計算をすることができます。

まだまだ知らないインジケーターもあるので、順次追加していきたいと思います。