テクニカル指標が充実したPythonライブラリTa-lib
テクニカル指標が充実したPythonライブラリTa-libを試しに使ってみました。 きっかけはこちらのQiita記事。
MACDのアルゴリズム #QuantX [Python] on @Qiita https://t.co/QGzPdeVnXK
— しんせいたろう🐷 (@shinseitaro) 2018年7月31日
インストール
先にbrew install ta-lib
して
pip install ta-lib
します。pip installするのはta-libのPython wrapperなので、元のta-lib(c++)を先にbrew installする必要があります。
ソース
import pandas as pd pd.core.common.is_list_like = pd.api.types.is_list_like import pandas_datareader.data as web from datetime import datetime import talib import numpy as np start = datetime(2018, 7, 1) end = datetime(2018, 7, 30) from datetime import datetime df = web.DataReader('6670.JP', 'stooq',start, end) # stooqから取得する価格データは新しい日付が上にくるので、昇順にしてinplace=Trueで元のdfを変更します。 df.sort_index(ascending=True, inplace=True) close = np.array(df['Close']) output = close.copy() cols = ['Close'] # 標準偏差3のボリンジャーバンドを得たい。期間は20日にしました。matypeはmoving averageのタイプらしいです。 0はSMA Simple Moving Average。 for arr in talib.BBANDS(close, timeperiod=20, nbdevup=3, nbdevdn=3,matype=0): output = np.c_[output, arr] cols += ['BBANDS_upperband', 'BBANDS_middleband', 'BBANDS_lowerband'] data = pd.DataFrame(output, index=df.index, columns=cols)
検証
talib.BBANDS(close, timeperiod=20, nbdevup=3, nbdevdn=3,matype=0)
で意図したボリンジャーバンドの値が算出されているか、TradingViewを使って検証してみました。
7月30日分をみると、Ta-libによると-3σが781.84で+3σが867.16。TradingViewの計算では-3σが781.84で+3σが867.16。あってますね!
まとめ
Ta-libはテクニカル指標がかなり充実しています。MESA Adaptive Moving Average
のような初めて聞く指標もありました。算出方法は下記引用したQiitaから。
ファンダメンタル分析で抽出した銘柄群のエントリーポイントを機械的に求める時にこのライブラリを使うことを想定しています。