これは、Swigの代わりにCythonに基づいたTa-LibのPythonラッパーです。ホームページから:
Ta-Libは、金融市場データのテクニカル分析を実行することを要求するソフトウェア開発者を取引することで広く使用されています。
- ADX、MACD、RSI、確率的、ボリンジャーバンドなどの150以上のインジケーターが含まれています。
- ろうそく足のパターン認識
- C/C ++、Java、Perl、Python、100%マネージド.NETのオープンソースAPI
Ta-Lib使用に含まれる元のPythonバインディングは、残念ながらインストールが難しく、可能な限り効率的ではありません。したがって、このプロジェクトは、CythonとNumpyを使用してTa-Libに効率的かつきれいに結合します。これは、Swigインターフェイスの2〜4倍速い結果を生成します。
さらに、このプロジェクトは、PolarsおよびPandasライブラリの使用もサポートしています。
Pypiからインストールできます。
$ python -m pip install TA-Lib
または、ソースをチェックアウトし、 setup.py
実行してください:
$ python setup.py install
また、Conda Forgeを介してインストールすることも可能です。
$ conda install -c conda-forge ta-lib
PythonにTa-Libを使用するには、Ta-Libを既にインストールしている必要があります。おそらく、プラットフォームのインストールの指示に従う必要がありますが、参照のためにいくつかの提案を以下に示します。
一部のConda Forgeユーザーは、libta-libパッケージを使用して、基礎となるta-lib Cライブラリのインストールを成功させたと報告しています。
$ conda install -c conda-forge libta-lib
HomeBrewを使用して単にインストールできます。
$ brew install ta-lib
M1プロセッサなどのAppleシリコンを使用しており、Mixed Architecture HomeBrewプロジェクトの構築を使用している場合は、アーキテクチャ用に構築されていることを確認する必要があります。
$ arch -arm64 brew install ta-lib
そして、おそらくあなたはpip
でインストールする前にこれらを設定することができます:
$ export TA_INCLUDE_PATH="$(brew --prefix ta-lib)/include"
$ export TA_LIBRARY_PATH="$(brew --prefix ta-lib)/lib"
また、特に成功せずにいくつかの異なるインストールを試した場合は、これが役立つかもしれません。
$ your-arm64-python -m pip install --no-cache-dir ta-lib
ta-lib-0.4.0-msvc.zipをダウンロードして、 C:ta-lib
に解凍します。
これは32ビットのバイナリリリースです。 64ビットPythonを使用する場合は、64ビットバージョンのライブラリを構築する必要があります。 64ビットWindows 10またはWindows 11に建設するためのいくつかの非公式の指示は、参照のために次のようになります。
ta-lib-0.4.0-msvc.zip
をダウンロードして解凍します- 解凍されたフォルダー
ta-lib
をC:
に移動します- Visual Studioコミュニティをダウンロードしてインストールします(2015以降)
[Visual C++]
機能を選択することを忘れないでください- TA-LIBライブラリを構築します
- Windowsのスタートメニューから、
[x64 Native Tools Command Prompt]
を開始します]C:ta-libcmakecdrwin32msvc
に移動します- ライブラリ
nmake
を構築します
また、32ビットと64ビットの両方で、これらの非公式Windowsバイナリホイールを試すこともできます。
https://github.com/cgohlke/talib-build/
ta-lib-0.4.0-src.tar.gzをダウンロードして:
$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure --prefix=/usr
$ make
$ sudo make install
make -jX
使用してTA-Lib
構築すると失敗しますが、それは大丈夫です!make -jX
に続いて[sudo] make install
実行します。
注:ディレクトリパスにスペースが含まれている場合、 No such file or directory
場合、インストールはおそらく失敗します。
このように見える警告が表示された場合:
setup.py:79: UserWarning: Cannot find ta-lib library, installation may fail.
warnings.warn('Cannot find ta-lib library, installation may fail.')
これは通常、 setup.py
基礎となるTA-Lib
ライブラリを見つけることができないことを意味します。これは、インストールする必要がある依存関係です。
カスタムプレフィックスを備えた基礎となるTA-Lib
ライブラリをインストールした場合(例: ./configure --prefix=$PREFIX
)、このPythonラッパーをインストールすると、ライブラリを見つけるための追加の検索パスを指定してファイルを含めることができます。 TA_LIBRARY_PATH
およびTA_INCLUDE_PATH
環境変数を使用した基礎となるTA-Lib
ライブラリの場合:
$ export TA_LIBRARY_PATH= $PREFIX /lib
$ export TA_INCLUDE_PATH= $PREFIX /include
$ python setup.py install # or pip install ta-lib
インストールがこのようなビルドエラーを生成する場合があります。
talib/_ta_lib.c:601:10: fatal error: ta-lib/ta_defs.h: No such file or directory
601 | #include "ta-lib/ta_defs.h"
| ^~~~~~~~~~~~~~~~~~
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
中のエラーがある場合があります。
../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
ライブラリへのディレクトリパスには、ディレクトリ名にスペースがあることを意味する場合があります。スペースがないパスに入れて、もう一度試してみてください。
このエラーがsetup.py
されている場合がある場合があります。
/usr/include/limits.h:26:10: fatal error: bits/libc-header-start.h: No such file or directory
#include <bits/libc-header-start.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~
これは、32ビットプラットフォームをコンパイルしようとすることの問題である可能性がありますが、適切なヘッダーはありません。この質問に対する最初の答えを見て、いくらかの成功を収めるかもしれません。
このようなmacOSにエラーが発生した場合:
code signature in <141BC883-189B-322C-AE90-CBF6B5206F67>
'python3.9/site-packages/talib/_ta_lib.cpython-39-darwin.so' not valid for
use in process: Trying to load an unsigned library)
この質問を見て、 xcrun codesign
使用して修正することができます。
STOCHRSI
RSI
とは異なる結果を与える理由を疑問STOCHF
思うなら、おそらくSTOCH
STOCHRSI
RSI
適用する必要があります。
>> > import talib
>> > import numpy as np
>> > c = np . random . randn ( 100 )
# this is the library function
>> > k , d = talib . STOCHRSI ( c )
# this produces the same result, calling STOCHF
>> > rsi = talib . RSI ( c )
>> > k , d = talib . STOCHF ( rsi , rsi , rsi )
# you might want this instead, calling STOCH
>> > rsi = talib . RSI ( c )
>> > k , d = talib . STOCH ( rsi , rsi , rsi )
ビルドがハングしているように見える場合は、メモリが足りないVMで実行されている可能性があります。1GBまたは2 GBを試してください。
このような「許可を拒否された」エラーを取得した場合、ユーザーが基礎となるTA-LIB Cライブラリがインストールされている場所にアクセスできるか、ユーザーアクセス可能な場所にインストールする必要がある場合があります。
talib/_ta_lib.c:747:28: fatal error: /usr/include/ta-lib/ta_defs.h: Permission denied
#include "ta-lib/ta-defs.h"
^
compilation terminated
error: command 'gcc' failed with exit status 1
ARM64の基礎となるTa-Lib Cライブラリをコンパイルするのに問題がある場合は、 make
make install
前に明示的なビルドタイプで構成する必要がある場合があります。たとえば、次のようになります。
$ ./configure --build=aarch64-unknown-linux-gnu
これは古いconfig.guess
ファイルによって引き起こされるため、これを解決する別の方法は、config.guessの新しいバージョンを基礎となるTa-lib cライブラリソースにコピーすることです。
$ cp /usr/share/automake-1.16/config.guess /path/to/extracted/ta-lib/config.guess
そして、再実行構成:
$ ./configure
pyinstallerの使用に問題があり、次のようなエラーが発生した場合:
...site-packagesPyInstallerloaderpyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "talib__init__.py", line 72, in <module>
ModuleNotFoundError: No module named 'talib.stream'
次に、おそらくあなたはこれを修正するために--hidden-import
引数を使用できます。
$ pyinstaller --hidden-import talib.stream "replaceToYourFileName.py"
numpy<2
を使用する場合は、 ta-lib<0.5
使用する必要があります。
numpy>=2
を使用する場合は、 ta-lib>=0.5
を使用する必要があります。
Code AutocompletionsをVisual Studio Codeで動作させるのに問題がある場合、 Python
拡張設定とLanguage Server
のオプションを探すように提案され、 Default
から変更します( Pylance if it is installed, Jedi otherwise
を意味します。 、 Jedi
手動で設定するには、機能するために手動でインストールする必要がある可能性があります。
TA-LIBと同様に、関数APIは、露出したTA-LIBインジケーターの軽量ラッパーを提供します。
各関数は、キーワード引数として指定されていない限り、出力配列を返し、パラメーターのデフォルト値を持っています。通常、これらの関数には、 NaN
に設定された最初の「ルックバック」期間(出力が生成される前に必要な数の観測値)があります。
便宜上、関数APIはnumpy.ndarray
とpandas.Series
とpolars.Series
入力の両方をサポートします。
次のすべての例は、関数APIを使用しています。
import numpy as np
import talib
close = np . 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 )
基礎となるTA-LIB Cライブラリは、通常、ナンを出力の終わりまで伝播することにより、時々驚くべき方法でナンを処理します。
>> > c = np . array ([ 1.0 , 2.0 , 3.0 , np . nan , 4.0 , 5.0 , 6.0 ])
>> > talib . SMA ( c , 3 )
array ([ nan , nan , 2. , nan , nan , nan , nan ])
それをパンダのローリング平均と比較することができます。そこでは、新しい出力を生成するために十分な「ルックバック」値が観察されるまでナンを出力するというアプローチがあります。
>> > c = pandas . Series ([ 1.0 , 2.0 , 3.0 , np . nan , 4.0 , 5.0 , 6.0 ])
>> > c . rolling ( 3 ). mean ()
0 NaN
1 NaN
2 2.0
3 NaN
4 NaN
5 NaN
6 5.0
dtype : float64
既に関数APIの使用に精通している場合は、抽象APIを使用して自宅にいると感じる必要があります。
すべての関数には、 numpy.ndarray
またはpandas.Series
またはpolars.Series
、またはpandas.DataFrame
またはpolars.DataFrame
のdict
のいずれかの名前の入力のコレクションが採用されます。 pandas.DataFrame
またはpolars.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.0 , 2.0 )
# 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' ])
ユーザーがインジケータの最新値を計算できるようにする実験的なストリーミングAPIが追加されました。これは、たとえばストリーミングデータを受信し、最新の更新されたインジケータ値のみを知りたい場合、機能APIを使用するよりも速くすることができます。
import talib
from talib import stream
close = np . random . random ( 100 )
# the Function API
output = talib . SMA ( close )
# the Streaming API
latest = stream . SMA ( close )
# the latest value is the same as the last output value
assert ( output [ - 1 ] - latest ) < 0.00001
Ta-LibによってサポートされているすべてのTA関数を、 list
として、またはグループでソートされたdict
として表示できます(例:「オーバーラップ研究」、「運動量インジケーター」など):
import talib
# list of functions
for name in talib . get_functions ():
print ( name )
# dict of functions by group
for group , names in talib . get_function_groups (). items ():
print ( group )
for name in names :
print ( f" { name } " )
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
BETA Beta
CORREL Pearson's Correlation Coefficient (r)
LINEARREG Linear Regression
LINEARREG_ANGLE Linear Regression Angle
LINEARREG_INTERCEPT Linear Regression Intercept
LINEARREG_SLOPE Linear Regression Slope
STDDEV Standard Deviation
TSF Time Series Forecast
VAR Variance