Github: https://github.com/mrjbq7/ta-lib
TA-Lib
これは、SWIGの代わりにCythonに基づくTA-LIB用のPythonラッパーです。 ホームページから:
TA-Libは、金融市場データの技術分析を必要とするトレーディングソフトウェア開発者によって広く使用されています。
- ADX、MACD、RSI、Stochastic、Bollinger Bandなどの150以上のインジケータが含まれています。
- 燭台パターン認識
- C / C ++、Java、Perl、Python、100%Managed .NET用のオープンソースAPI
TA-Libに含まれているオリジナルのPythonバインディングは、残念なことにインストールが難しく、可能な限り効率的ではありません。 したがって、このプロジェクトでは、CythonとNumpyを使用して、TA-Libに効率的かつクリーンにバインドし、SWIGインターフェイスより2〜4倍の速い結果を得ています。
インストール
PyPIからインストールできます:
$ pip install TA-Lib
あるいは、ソースをチェックアウトし、自分でsetup.py
を実行してください:
$ python setup.py install
トラブルシューティング
時には、インストール時に次のようなビルドエラーが発生します。
func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directory
compilation terminated.
または:
common.obj : error LNK2001: unresolved external symbol TA_SetUnstablePeriod
common.obj : error LNK2001: unresolved external symbol TA_Shutdown
common.obj : error LNK2001: unresolved external symbol TA_Initialize
common.obj : error LNK2001: unresolved external symbol TA_GetUnstablePeriod
common.obj : error LNK2001: unresolved external symbol TA_GetVersionString
これは、通常、インストールが必要なTA-Lib
ライブラリを見つけることができないことを意味します。 Windowsでは、これは、基礎となるTA-Lib
ライブラリの32ビットバイナリディストリビューションをインストールし、64ビットのPythonで使用しようとした場合に発生する可能性があります。
時にはインストールが失敗し、次のようなエラーが発生します。
talib/common.c:8:22: fatal error: pyconfig.h: No such file or directory
#include "pyconfig.h"
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
これは通常、Pythonヘッダーが必要であることを意味し、次のように実行する必要があります。
$ sudo apt-get install python3-dev
時には基礎となるTA-Lib
ライブラリを構築する際にmake
が次のようなエラーをmake
ことがあります:
../libtool: line 1717: cd: .libs/libta_lib.lax/libta_abstract.a: No such file or directory
make[2]: *** [libta_lib.la] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
これは、基礎となるTA-Lib
ライブラリへのディレクトリパスにディレクトリ名にスペースが含まれている可能性があります。 スペースを入れずにもう一度試してみてください。
依存関係
PythonにTA-Libを使用するには、 TA-Libを既にインストールしておく必要があります。 あなたのプラットフォームのインストール手順に従っているはずですが、参考になるようにいくつかの提案が以下に含まれています。
Mac OS X
$ brew install ta-lib
Windows
ta-lib-0.4.0-msvc.zipをダウンロードし、 C:\ta-lib
解凍しC:\ta-lib
これは32ビット版です。 64ビットPythonを使用する場合は、64ビット版のライブラリをビルドする必要があります。
64ビット版のWindows 10でビルドするための非公式な(およびサポートされていない)指示は、参考のためにここにあります。
ta-lib-0.4.0-msvc.zip
ダウンロードと解凍
- 解凍したフォルダ
ta-lib
をC:\
移動しますC:\
- Visual Studio Community 2015をダウンロードしてインストールする
[Visual C++]
機能を選択することを忘れないでください
- TA-Libライブラリを構築する
- Windowsの[スタート]メニューから、
[VS2015 x64 Native Tools Command Prompt]
C:\ta-lib\c\make\cdr\win32\msvc
- ライブラリ
nmake
構築する
32ビットと64ビットの両方の非公式のWindowsバイナリを試すこともできます:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
Linux
ta-lib-0.4.0-src.tar.gzをダウンロードして:
$ untar and cd
$ ./configure --prefix=/usr
$ make
$ sudo make install
make -jX
を使っmake -jX
TA-Lib
をビルドすると失敗しますが、make -jX
ありません! 単にmake -jX
実行しmake -jX
から[sudo] make install
実行make -jX
だけです。
関数API
関数APIは、TA-Libと同様に、公開されたTA-Libインジケータの軽量ラッパーを提供します。
各関数は出力配列を返し、キーワード引数として指定されていない限り、パラメータのデフォルト値を持ちます。 通常、これらの関数は初期のルックバック期間(出力が生成されるまでに必要な観測数)をNaN
設定します。
便宜上、Function APIはnumpy.ndarray
とpandas.Series
両方の入力をサポートしています。
次のすべての例では、関数APIを使用しています。
import numpy
import talib
close = numpy.random.random(100)
近い価格の単純な移動平均を計算する:
output = talib.SMA(close)
トリプル指数移動平均を用いたボーリンジャーバンドの計算:
from talib import MA_Type
upper, middle, lower = talib.BBANDS(close, matype=MA_Type.T3)
近い価格の勢いを計算し、期間は5:
output = talib.MOM(close, timeperiod=5)
抽象API
関数APIの使用に慣れている場合は、抽象APIを使用して自宅で感じるはずです。
すべての関数は、 numpy.ndarray
またはpandas.Series
dict
、またはpandas.Series
の名前付き入力のコレクションをpandas.DataFrame
ます。 pandas.DataFrame
が提供されている場合、出力は名前付き出力列を持つpandas.DataFrame
として返されます。
例えば、典型的な「OHLCV」データに対して入力を提供することができる。
import numpy as np
# note that all ndarrays must be the same length!
inputs = {
'open': np.random.random(100),
'high': np.random.random(100),
'low': np.random.random(100),
'close': np.random.random(100),
'volume': np.random.random(100)
}
関数を直接インポートすることも、名前でインスタンス化することもできます。
from talib import abstract
# directly
sma = abstract.SMA
# or by name
sma = abstract.Function('sma')
そこから、呼び出し関数は基本的に関数APIと同じです:
from talib.abstract import *
# uses close prices (default)
output = SMA(inputs, timeperiod=25)
# uses open prices
output = SMA(inputs, timeperiod=25, price='open')
# uses close prices (default)
upper, middle, lower = BBANDS(inputs, 20, 2, 2)
# uses high, low, close (default)
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0) # uses high, low, close by default
# uses high, low, open instead
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0, prices=['high', 'low', 'open'])
サポートされているインジケータと関数
TA-LibでサポートされているすべてのTA機能を、 list
またはグループ別に並べ替えて表示することができます(例:「重複調査」、「モーメンタム指標」など)。
import talib
# list of functions
print talib.get_functions()
# dict of functions by group
print talib.get_function_groups()
インジケータグループ
- 重複研究
- モメンタム指標
- ボリュームインジケータ
- ボラティリティ指標
- 価格変換
- サイクルインジケータ
- パターン認識
重複研究
BBANDS Bollinger Bands
DEMA Double Exponential Moving Average
EMA Exponential Moving Average
HT_TRENDLINE Hilbert Transform - Instantaneous Trendline
KAMA Kaufman Adaptive Moving Average
MA Moving average
MAMA MESA Adaptive Moving Average
MAVP Moving average with variable period
MIDPOINT MidPoint over period
MIDPRICE Midpoint Price over period
SAR Parabolic SAR
SAREXT Parabolic SAR - Extended
SMA Simple Moving Average
T3 Triple Exponential Moving Average (T3)
TEMA Triple Exponential Moving Average
TRIMA Triangular Moving Average
WMA Weighted Moving Average
モメンタム指標
ADX Average Directional Movement Index
ADXR Average Directional Movement Index Rating
APO Absolute Price Oscillator
AROON Aroon
AROONOSC Aroon Oscillator
BOP Balance Of Power
CCI Commodity Channel Index
CMO Chande Momentum Oscillator
DX Directional Movement Index
MACD Moving Average Convergence/Divergence
MACDEXT MACD with controllable MA type
MACDFIX Moving Average Convergence/Divergence Fix 12/26
MFI Money Flow Index
MINUS_DI Minus Directional Indicator
MINUS_DM Minus Directional Movement
MOM Momentum
PLUS_DI Plus Directional Indicator
PLUS_DM Plus Directional Movement
PPO Percentage Price Oscillator
ROC Rate of change : ((price/prevPrice)-1)*100
ROCP Rate of change Percentage: (price-prevPrice)/prevPrice
ROCR Rate of change ratio: (price/prevPrice)
ROCR100 Rate of change ratio 100 scale: (price/prevPrice)*100
RSI Relative Strength Index
STOCH Stochastic
STOCHF Stochastic Fast
STOCHRSI Stochastic Relative Strength Index
TRIX 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
ULTOSC Ultimate Oscillator
WILLR Williams' %R
ボリュームインジケータ
AD Chaikin A/D Line
ADOSC Chaikin A/D Oscillator
OBV On Balance Volume
サイクルインジケータ
HT_DCPERIOD Hilbert Transform - Dominant Cycle Period
HT_DCPHASE Hilbert Transform - Dominant Cycle Phase
HT_PHASOR Hilbert Transform - Phasor Components
HT_SINE Hilbert Transform - SineWave
HT_TRENDMODE Hilbert Transform - Trend vs Cycle Mode
価格変換
AVGPRICE Average Price
MEDPRICE Median Price
TYPPRICE Typical Price
WCLPRICE Weighted Close Price
ボラティリティ指標
ATR Average True Range
NATR Normalized Average True Range
TRANGE True Range
パターン認識
CDL2CROWS Two Crows
CDL3BLACKCROWS Three Black Crows
CDL3INSIDE Three Inside Up/Down
CDL3LINESTRIKE Three-Line Strike
CDL3OUTSIDE Three Outside Up/Down
CDL3STARSINSOUTH Three Stars In The South
CDL3WHITESOLDIERS Three Advancing White Soldiers
CDLABANDONEDBABY Abandoned Baby
CDLADVANCEBLOCK Advance Block
CDLBELTHOLD Belt-hold
CDLBREAKAWAY Breakaway
CDLCLOSINGMARUBOZU Closing Marubozu
CDLCONCEALBABYSWALL Concealing Baby Swallow
CDLCOUNTERATTACK Counterattack
CDLDARKCLOUDCOVER Dark Cloud Cover
CDLDOJI Doji
CDLDOJISTAR Doji Star
CDLDRAGONFLYDOJI Dragonfly Doji
CDLENGULFING Engulfing Pattern
CDLEVENINGDOJISTAR Evening Doji Star
CDLEVENINGSTAR Evening Star
CDLGAPSIDESIDEWHITE Up/Down-gap side-by-side white lines
CDLGRAVESTONEDOJI Gravestone Doji
CDLHAMMER Hammer
CDLHANGINGMAN Hanging Man
CDLHARAMI Harami Pattern
CDLHARAMICROSS Harami Cross Pattern
CDLHIGHWAVE High-Wave Candle
CDLHIKKAKE Hikkake Pattern
CDLHIKKAKEMOD Modified Hikkake Pattern
CDLHOMINGPIGEON Homing Pigeon
CDLIDENTICAL3CROWS Identical Three Crows
CDLINNECK In-Neck Pattern
CDLINVERTEDHAMMER Inverted Hammer
CDLKICKING Kicking
CDLKICKINGBYLENGTH Kicking - bull/bear determined by the longer marubozu
CDLLADDERBOTTOM Ladder Bottom
CDLLONGLEGGEDDOJI Long Legged Doji
CDLLONGLINE Long Line Candle
CDLMARUBOZU Marubozu
CDLMATCHINGLOW Matching Low
CDLMATHOLD Mat Hold
CDLMORNINGDOJISTAR Morning Doji Star
CDLMORNINGSTAR Morning Star
CDLONNECK On-Neck Pattern
CDLPIERCING Piercing Pattern
CDLRICKSHAWMAN Rickshaw Man
CDLRISEFALL3METHODS Rising/Falling Three Methods
CDLSEPARATINGLINES Separating Lines
CDLSHOOTINGSTAR Shooting Star
CDLSHORTLINE Short Line Candle
CDLSPINNINGTOP Spinning Top
CDLSTALLEDPATTERN Stalled Pattern
CDLSTICKSANDWICH Stick Sandwich
CDLTAKURI Takuri (Dragonfly Doji with very long lower shadow)
CDLTASUKIGAP Tasuki Gap
CDLTHRUSTING Thrusting Pattern
CDLTRISTAR Tristar Pattern
CDLUNIQUE3RIVER Unique 3 River
CDLUPSIDEGAP2CROWS Upside Gap Two Crows
CDLXSIDEGAP3METHODS Upside/Downside Gap Three Methods