技术分析在股票,期货,外汇,数字货币等领域运用非常多,说到技术分析,不得不提技术分析里面非常著名的一个库,TA-Lib,talib的简称是Technical Analysis Library,主要功能是计算股价的技术分析指标,虽然TA-Lib是一个比较老的库(如果看github上的大更新都是7,8年前),但是对于时间序列分析和金融,股市指标等等还是包括的比较全的(包括超过200多种技术指标, 比如我们耳熟能详的:ADX,MACD,RS,Stochas,BollingerBands 等)而且这个技术分析库也经历过时间的考验,属于比较稳定的中规中矩的技术分析库,是入门非常好的着手点:
官网网址:http://ta-lib.org/
另外,TA-Lib是用C语言编写的开源软件,其中的Free Open—Source Library也可以实现自定义,执行速度也算较快的。
当然,作为一个好的工具,TA-Lib给我们提供的接口也非常多,有C/C++,JAVA,Python,.NET等,因为WindQuant上等在线策略研究类平台目前只能用Python,可能是为了迎合现在“全民量化”的趋势,所以选用了热门的“脚本语言”,所以我们暂时只用Python接口做快速的策略构建和回测,在交易执行阶段或者需要本地运行,性能要求等再通过C/C++本地重构即可。
但是这个库在国内非常小众,几乎找不到任何API用例和文档,在量化平台上通常是直接调且均只能在云端完成,不能本地分析与操作,所以我们将TA-Lib的常见操作与坑进行了总结如下:
1.首先我们看看如何安装TA-Lib并通过Python调用TA-Lib进行计算与分析:
TA-Lib 最开始用的SWIG进行封装,
附:SWIG官网如下:
http://www.swig.org/
SWIG是一种可以将C/C++代码转换为多种脚本语言封装的工具,TA-Lib最初就是用C写并且用SWIG封装的,但弱势也很明显,异常难安装,而且效率并不高,量化交易与分析中,我们时刻需要牢记效率的重要性,于是接下来我们介绍的是通过Cython封装,是SWIG封装效率的2-4倍左右。
Windows版本:
首先介绍一种我们认为最快速的解决方法,利用国际上比较主流的量化交易Quantopia在Python的集成科学计算开发环境Anaconda里的repo直接进行安装:
附:Quantopia官网如下:
https://www.quantopian.com/
1.首先我们先安装Anaconda
在官网下载windows版本,地址如下:
https://www.anaconda.com/download/#windows
下载后点击安装,可以一路点击确认,但是到环境变量这里需要注意一下:
一般来说我们只需要勾选第二个选项就可以了。
第二个选项的意思是,允许其他程序,例如用于Visual Studio,Pycharm,PyCharm, Wing IDE, PyDev,和MSI二进制包自动
检测Anaconda作为系统上的主要Python 3.6,第一个选项涉及到环境变量,我们其实没有必要设置,只需要每次打开Aanaconda就可以进行操作
2.在安装好Anaconda后打开Anaconda Prompt:
输入
conda install -c quantopian ta-lib
当然,在国内的小伙伴如果因为网络问题导致下载速度缓慢或者无法下载报CondaHTTPError,也可以通过添加国内镜像(我们在很多地方都推荐清华镜像,非常好用)
附:清华镜像官网与教程
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
输入加入清华镜像命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
当然,如果需要挑战一下困难模式也可以手动进行安装ta-lib,编译并再通过pip安装python封包的ta-lib,记住我们是不能直接通过pip进行安装ta-lib的,如果直接这么做会报以下错误:
func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directory
compilation terminated.
所以我们先要安装ta-lib后再通过pip安装:
附:ta-lib安装说明地址
https://mrjbq7.github.io/ta-lib/install.html
关键的几步与常见的坑如下:
1.先下载ta-lib-0.4.0-msvc.zip,地址如下:
http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-msvc.zip
2.下载完毕后解压到:
C:\ta-lib
注意地址一定要正确,set_up.py文件问到这个地址里面去找,不能更改!
3.(64位Python需要手动编译)下载Visual Studio Community 2015,并选中visual C++
在开始菜单中搜索并且打开 VS2015 x64 Native Tools Command Prompt
输入
cd C:\ta-lib\c\make\cdr\win32\msvc
并通过输入以下命令进行编译
nmake
以上操作之后我们就在系统层面安装好了ta-lib,
4.接着就可以进入命令行,直接通过pip进行安装了,输入:
pip install TA-Lib
Mac安装
Mac的安装相比Windows要简单许多,只需要两步就可以完成:
首先通过homebrew安装TA-Lib
输入
brew install ta-lib
第二步输入
pip install TA-Lib
即可搞定
最后,我们可以进入Jupyter Notebook或者jupyterLab等自己最舒服的编辑环境,测试一下,输入:
import numpy as np
import talib
如果没有报错,证明numpy,talib已经没有任何问题了,练练手,创建一个模拟收盘价数据试试SMA,为了大家看得清楚,我们假设某只股票的股价从1块钱开始涨,每天涨1块,涨了30天:
注意我们这里特意一个一个打入,就是因为TA-Lib坑非常非常多,比如
可能会见到的两个错误:
1:TypeError: Argument ‘real’ has incorrect type (expected numpy.ndarray, got list)
2:Exception: real is not double
第一个报错的原因是TA-Lib处理的是数组,这就是为什么我们最开始需要导入pandas,也就是说时间序列需要以数组array的形式输入到TA-Lib进行相应计算
第二个报错的原因是可能你输入的是real数据,需要转换格式,到double float的数据(这就是为什么我们即使测试的收盘价是1块钱,我们也写成1.0)。
未完待续......