이것은 SWIG 대신 Cython을 기반으로하는 TA-LIB의 파이썬 래퍼입니다. 홈페이지에서 :
TA-LIB는 금융 시장 데이터에 대한 기술적 분석을 수행 해야하는 소프트웨어 개발자에 의해 널리 사용됩니다.
- ADX, MACD, RSI, 확률 적, 볼린저 밴드 등과 같은 150 개 이상의 지표가 포함되어 있습니다.
- 촛대 패턴 인식
- C/C ++, Java, Perl, Python 및 100% Managed .NET 용 Open-Source API
불행히도 설치가 어려우며 가능한 한 효율적이지 않은 TA-Lib에 포함 된 원래 파이썬 바인딩은 SWIG를 사용합니다. 따라서이 프로젝트는 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 Silicon을 사용하고 혼합 아키텍처 홈 브루 프로젝트를 구축하는 경우 건축을 위해 구축되고 있는지 확인할 수 있습니다.
$ 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 비트 파이썬을 사용하려면 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
라이브러리를 찾을 수 없습니다.
사용자 정의 접두사 (예 : ./configure --prefix=$PREFIX
)가있는 기본 TA-Lib
라이브러리를 설치 한 경우이 파이썬 래퍼를 설치하려고하면 라이브러리를 찾고 파일을 포함시키기 위해 추가 검색 경로를 지정할 수 있습니다. 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 비트 파이썬과 함께 사용하려고합니다.
때로는 다음과 같은 오류로 설치가 실패합니다.
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
이것은 일반적으로 파이썬 헤더가 필요하고 다음과 같은 것을 실행해야 함을 의미합니다.
$ 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
에 STOCHRSI
와 약간 다른 STOCH
STOCHF
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 또는 2GB를 사용해보십시오.
이와 같은 "허가 거부"오류가 발생하면 사용자에게 기본 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
and 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
사용해야합니다.
Visual Studio Code에서 작동하기 위해 코드 자동 완성을 얻는 데 어려움이있는 경우, Python
Extension 설정 및 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 )
트리플 지수 이동 평균을 가진 Bollinger 밴드 계산 :
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 라이브러리는 NAN을 일반적으로 출력 끝으로 전파함으로써 NAN을 때때로 놀라운 방식으로 처리합니다.
>> > 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 ])
당신은 그것을 팬더 롤링 평균과 비교할 수 있습니다. 그들의 접근 방식은 새로운 출력을 생성하기에 충분한 "룩백"값이 관찰 될 때까지 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