TA-Lib介绍安装及使用教程
一、TA-Lib简介
TA-Lib,英文全称“Technical Analysis Library”, 中文名称:技术分析库,是一个用于金融量化的第三方库,涵盖了150多种股票、期货交易软件中常用的技术分析指标,如MA、MACD、RSI、KDJ、动量指标、布林带等等。
TA-Lib可分为10个子板块:Overlap Studies(重叠指标),Momentum Indicators(动量指标),Volume Indicators(交易量指标),Cycle Indicators(周期指标),Price Transform(价格变换),Volatility Indicators(波动率指标),Pattern Recognition(模式识别),Statistic Functions(统计函数),Math Transform(数学变换)和Math Operators(数学运算)。
TA-Lib官网地址:https://www.ta-lib.org/。注:官网已很久未更新。
使用Python进行量化分析时,TA-Lib几乎是必经之路。
二、TA-Lib安装
使用本地文件Wheel安装(推荐)
加利福尼亚大学欧文分校 荧光动力学实验室 的 克里斯托夫·戈尔克( Christoph Gohlke)提供了一个非官方的Python扩展库,地址为
https://github.com/cgohlke/talib-build/releases
选择并下载和电脑(32位还是64位)及Python版本相应的库到本地
- TA_Lib-0.4.32-cp310-cp310-win32.whl
- TA\_Lib-0.4.32-cp310-cp310-win\_amd64.whl
- TA_Lib-0.4.32-cp311-cp311-win32.whl
- TA\_Lib-0.4.32-cp311-cp311-win\_amd64.whl
- TA\_Lib-0.4.32-cp311-cp311-win\_arm64.whl
- TA_Lib-0.4.32-cp312-cp312-win32.whl
- TA\_Lib-0.4.32-cp312-cp312-win\_amd64.whl
- TA\_Lib-0.4.32-cp312-cp312-win\_arm64.whl
- TA_Lib-0.4.32-cp313-cp313-win32.whl
- TA\_Lib-0.4.32-cp313-cp313-win\_amd64.whl
- TA\_Lib-0.4.32-cp313-cp313-win\_arm64.whl
- TA_Lib-0.4.32-cp37-cp37m-win32.whl
- TA\_Lib-0.4.32-cp37-cp37m-win\_amd64.whl
- TA_Lib-0.4.32-cp38-cp38-win32.whl
- TA\_Lib-0.4.32-cp38-cp38-win\_amd64.whl
- TA_Lib-0.4.32-cp39-cp39-win32.whl
- TA\_Lib-0.4.32-cp39-cp39-win\_amd64.whl
再使用如下命令,格式为
pip install TA_Lib-0.4.20-cp38-cp38-win_amd64.whl
其中TA_Lib-0.4.20-cp38-cp38-win_amd64.whl 要换成自己下载的文件名
安装过程如下
就能成功安装。
在Python中,输入import talib并且没有错误返回,则表示可以使用了。
使用pip在线安装
在提示符下输入如下命令
$ pip install TA-Lib
但可能会出现错误:
common.obj : warning LNK4197: export 'PyInit_common' specified multiple times; using first specification
Creating library build\temp.win-amd64-3.5\Release\talib\common.cp35-win_amd64.lib and
object build\temp.win-amd64-3.5\Release\talib\common.cp35-win_amd64.exp
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
build\lib.win-amd64-3.5\talib\common.cp35-win_amd64.pyd : fatal error LNK1120: 5 unresolved externals
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64\\link.exe' failed with exit status 1120
该问题可以考虑以下方式解决。
开始 -> 所有程序 -> Mircosoft Visual Studio 2010 -> visual studio tools -> Visual Studio x64 win64 command prompt (2010)
在VS x64 win64命令行下,cd C:\ta-lib\c\make\cdr\win32\msvc 目录下,执行nmake
也可以考虑使用如下命令安装
pip install https://github.com/mrjbq7/ta-lib/archive/TA_Lib-0.4.8.zip
三、TA-Lib的使用
MA均线指标
首先,需要获得金融数据,这里以币安交易所的BTC_USDT日线的K线为数据源
# -*- coding: utf-8 -*-
import talib
from udcei.base.exchange import Exchange
exchange = Exchange('binance')
kline = exchange.kline(symbol = "BTC_USDT", interval = '1day')
stamp, open, high, low, close, volume = kline
#print(close)
将收盘价打印出来如下所示
再将收盘价传入到均线MA指标中,进行计算,计算5日均线的代码如下,
real = talib.MA(close, timeperiod=5)
得到5日均线价格列表
前面4天因为数据不足所以为NAN。
基于均线数据,可以再做进一步的计算,比如金叉、死叉、多头排列、空头排列等。这样就实现了对数据的量化分析。
其他指标
TA-Lib的其他指标列出如下,
周期指标 Cycle Indicators
[‘HT_DCPERIOD’, ‘HT_DCPHASE’, ‘HT_PHASOR’, ‘HT_SINE’, ‘HT_TRENDMODE’],
数学运算 Math Operators
[‘ADD’, ‘DIV’, ‘MAX’, ‘MAXINDEX’, ‘MIN’, ‘MININDEX’, ‘MINMAX’, ‘MINMAXINDEX’, ‘MULT’, ‘SUB’, ‘SUM’],
数学变换 Math Transform
[‘ACOS’, ‘ASIN’, ‘ATAN’, ‘CEIL’, ‘COS’, ‘COSH’, ‘EXP’, ‘FLOOR’, ‘LN’, ‘LOG10’, ‘SIN’, ‘SINH’, ‘SQRT’, ‘TAN’, ‘TANH’],
趋势指标 Momentum Indicators
[‘ADX’, ‘ADXR’, ‘APO’, ‘AROON’, ‘AROONOSC’, ‘BOP’, ‘CCI’, ‘CMO’, ‘DX’, ‘MACD’, ‘MACDEXT’, ‘MACDFIX’, ‘MFI’, ‘MINUS_DI’, ‘MINUS_DM’, ‘MOM’, ‘PLUS_DI’, ‘PLUS_DM’, ‘PPO’, ‘ROC’, ‘ROCP’, ‘ROCR’, ‘ROCR100’, ‘RSI’, ‘STOCH’, ‘STOCHF’, ‘STOCHRSI’, ‘TRIX’, ‘ULTOSC’, ‘WILLR’],
重合研究 Overlap Studies
[‘BBANDS’, ‘DEMA’, ‘EMA’, ‘HT_TRENDLINE’, ‘KAMA’, ‘MA’, ‘MAMA’, ‘MAVP’, ‘MIDPOINT’, ‘MIDPRICE’, ‘SAR’, ‘SAREXT’, ‘SMA’, ‘T3’, ‘TEMA’, ‘TRIMA’, ‘WMA’],
模式识别 Pattern Recognition
[‘CDL2CROWS’, ‘CDL3BLACKCROWS’, ‘CDL3INSIDE’, ‘CDL3LINESTRIKE’, ‘CDL3OUTSIDE’, ‘CDL3STARSINSOUTH’, ‘CDL3WHITESOLDIERS’, ‘CDLABANDONEDBABY’, ‘CDLADVANCEBLOCK’, ‘CDLBELTHOLD’, ‘CDLBREAKAWAY’, ‘CDLCLOSINGMARUBOZU’, ‘CDLCONCEALBABYSWALL’, ‘CDLCOUNTERATTACK’, ‘CDLDARKCLOUDCOVER’, ‘CDLDOJI’, ‘CDLDOJISTAR’, ‘CDLDRAGONFLYDOJI’, ‘CDLENGULFING’, ‘CDLEVENINGDOJISTAR’, ‘CDLEVENINGSTAR’, ‘CDLGAPSIDESIDEWHITE’, ‘CDLGRAVESTONEDOJI’, ‘CDLHAMMER’, ‘CDLHANGINGMAN’, ‘CDLHARAMI’, ‘CDLHARAMICROSS’, ‘CDLHIGHWAVE’, ‘CDLHIKKAKE’, ‘CDLHIKKAKEMOD’, ‘CDLHOMINGPIGEON’, ‘CDLIDENTICAL3CROWS’, ‘CDLINNECK’, ‘CDLINVERTEDHAMMER’, ‘CDLKICKING’, ‘CDLKICKINGBYLENGTH’, ‘CDLLADDERBOTTOM’, ‘CDLLONGLEGGEDDOJI’, ‘CDLLONGLINE’, ‘CDLMARUBOZU’, ‘CDLMATCHINGLOW’, ‘CDLMATHOLD’, ‘CDLMORNINGDOJISTAR’, ‘CDLMORNINGSTAR’, ‘CDLONNECK’, ‘CDLPIERCING’, ‘CDLRICKSHAWMAN’, ‘CDLRISEFALL3METHODS’, ‘CDLSEPARATINGLINES’, ‘CDLSHOOTINGSTAR’, ‘CDLSHORTLINE’, ‘CDLSPINNINGTOP’, ‘CDLSTALLEDPATTERN’, ‘CDLSTICKSANDWICH’, ‘CDLTAKURI’, ‘CDLTASUKIGAP’, ‘CDLTHRUSTING’, ‘CDLTRISTAR’, ‘CDLUNIQUE3RIVER’, ‘CDLUPSIDEGAP2CROWS’, ‘CDLXSIDEGAP3METHODS’],
价格变换 Price Transform
[‘AVGPRICE’, ‘MEDPRICE’, ‘TYPPRICE’, ‘WCLPRICE’],
统计功能 Statistic Functions
[‘BETA’, ‘CORREL’, ‘LINEARREG’, ‘LINEARREG_ANGLE’, ‘LINEARREG_INTERCEPT’, ‘LINEARREG_SLOPE’, ‘STDDEV’, ‘TSF’, ‘VAR’],
强度指标 Volatility Indicators
[‘ATR’, ‘NATR’, ‘TRANGE’],
成交量指标 Volume Indicators
[‘AD’, ‘ADOSC’, ‘OBV’]