この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
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で下記のコマンドでインストールできました。
conda install -c conda-forge ta-lib
TA-Libの使い方
価格データの準備
TA-Libでインジケーターを出力させるためには、当然ですが価格データが必要です。必要な価格データは、始値・高値・安値・終値・出来高の5種類です。
今回は、色々な情報をAPIを使って簡単に取得できるpandas_datareaderで2023年の日経平均の価格データを取得します。
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のクラス名(引数)で結果が出力されます。
例えば、下記のコードで移動平均線を計算できます。
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という新しいカラムに代入しています。
計算結果は、下記のように表示されます。
インジケーターの一覧
インジケーターを計算するコードだけ記載していくので、上記のコードに追加して試してみてください。
移動平均線
df['MA'] = talib.MA(df['Close'], timeperiod=20)
- 第1引数:終値
- timeperiod:期間
指数平滑移動平均線
df['EMA'] = talib.EMA(df['Close'], timeperiod=20)
- 第1引数:終値
- timeperiod:期間
二重指数移動平均線
df['DEMA'] = talib.DEMA(df['Çlose'], timeperiod=20)
- 第1引数:終値
- timeperiod:期間
加重移動平均線
df['WMA'] = talib.WMA(df['Close'], timeperiod=20)
- 第1引数:終値
- timeperiod:期間
パラボリックAR
df['SAR'] = talib.SAR(df['High'], df['Low'], acceleration=0, maximum=0)
- 第1引数:高値
- 第2引数:安値
- acceleration:加速度
- timeperiod:最大値
ボリンジャーバンド
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
df['MACD'], df['MACDsignal'], df['MACDhist'] = talib.MACD(df['Close'], fastperiod=12, slowperiod=26, signalperiod=9)
- 第1引数:終値
- fastperiod:短期EMA
- slowperiod:長期EMA
- signalperiod:シグナル
RSI
df['RSI'] = talib.RSI(df['Close'], timeperiod=14)
- 第1引数:終値
- timeperiod:期間
ATR
df['ATR'] = talib.ATR(df['High'], df['Low'], df['Close'], timeperiod=14)
- 第1引数:高値
- 第2引数:安値
- 第3引数:終値
- timeperiod:期間
平均方向性指数
df['ADX'] = talib.ADX(df['High'], df['Low'], df['Close'], timeperiod=14)
- 第1引数:高値
- 第2引数:安値
- 第3引数:終値
- timeperiod:期間
方向性指数
df['DX'] = talib.DX(df['High'], df['Low'], df['Close'], timeperiod=14)
- 第1引数:高値
- 第2引数:安値
- 第3引数:終値
- timeperiod:期間
モメンタム
df['MOM'] = talib.MOM(df['close'], timeperiod=10)
- 第1引数:終値
- timeperiod:期間
標準偏差
df['STDDEV'] = talib.STDDEV(df['Close'], timeperiod=10, nbdev=1)
- 第1引数:終値
- timeperiod:期間
- nbdev:標準偏差
指定期間の最高値
df['CCI'] = talib.MAX(df['Close'], timeperiod=30)
- 第1引数:終値
- timeperiod:期間
指定期間の最安値
df['MIN'] = talib.MIN(df['Close'], timeperiod=30)
- 第1引数:終値
- timeperiod:期間
CCI
df['CCI'] = talib.CCI(df['High'], df['Low'], df['Close'], timeperiod=14)
- 第1引数:高値
- 第2引数:安値
- 第3引数:終値
- timeperiod:期間
おわりに
TA-Libを使用することで簡単にインジケーターの計算をすることができます。
まだまだ知らないインジケーターもあるので、順次追加していきたいと思います。