使用TA-Lib在vn.py上开发CTA交易策略

2018-07-26 11:21:13 浏览数 (1)

TALIB简介

作为一套被业界广泛应用的开源技术分析库(包含技术指标计算和K线模式识别等),TA-Lib自2001年发布以来已经有了十多年的历史。TA-Lib中一共包含大约125个技术指标的计算函数,同时提供了包括C/C 、Java、Perl、Python等多种语言的API。

有什么用?

简单来说TA-Lib就是提供了一堆经过长期实践检验的技术指标计算函数。基于现成的计算函数,开发新策略雏形、快速验证某个灵感的时间可以大幅缩短,否则想象一下每开发个策略都要自己实现要用的技术指标,未免太浪费时间。

但是除此以外,TA-Lib还可以有一些其他的用法,举两个例子。

百科全书

坚持每天收盘后选一个自己没用过的指标,输入数据,画个图、跑个回测,开发量化策略和很多其他的技术一样都是熟能生巧。

另外,所有的技术指标在被开发出来的时候,背后都有一定的金融逻辑原理(行为金融学)的支撑,生搬硬套固然不可取,但是放着前人经验完全不看,整天凭自己的空想就弄个机器学习算法在数据上瞎折腾岂不是更浪费时间?

Alpha库

很大一部分CTA类的策略可以总结为几个简单的逻辑框架,比如趋势策略通常可以分解成以下部分:趋势信号(通常是基于某几个参数计算出来的指标值超过某个阈值)、信号过滤(和趋势信号类似)、出场方案(固定点数/百分比的止盈和止损,移动止损)。

因此把逻辑框架的代码搭好后,就可以通过机器学习算法来实现一种自动的策略开发方式:

1. 从TA-Lib中选取两个指标分别作为趋势信号信号过滤,结合止损止盈方案,生成一个策略;

2. 基于某一组历史数据(如股指的1分钟行情),通过遗传算法来对以上的参数进行光滑与优化;

3. 两个指标的参数加起来通常不会超过10个,再加上止盈、止损、移动止损的参数,总参数不会超过15个,在一组高达十几万个数据点的时间序列上进行回测,过度拟合的可能性不大;

4. 现在云服务器价格也不贵,租一个核多一点的,把算法和数据丢上去7×24小时的跑,Alpha值达到一定标准的策略存下来;

5. 把上一步中保存下来的策略作为雏形,研究员再来进行针对性的有效性验证和精细化的策略改进,把策略开发变成有的放矢,而不是盲人摸象。

这种策略开发方式使用传统的商业软件(如TB、MC等)几乎不可能实现,而Python这类开源软件就成为了最好的选择,用户可以自行决定几乎所有的算法(指标如何选择、遗传算法优化参数时如何迭代等)。

安装教程

尽管TA-Lib原生提供了基于SWIG封装的Python API,但是由于性能和编译不方便的原因,作者推荐Github上的一位开发者mrjbq7基于Cython封装的版本。

windows安装步骤:

  1. 打开 https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib 下载TA_Lib-0.4.9-cp27-none-win32.whl放到桌面上,也就是vn.py建议的运行环境Anaconda 2.7 32位
  2. 在桌面上按住Shift点击鼠标右键后,选择在此处打开命令窗口打开cmd
  3. 安装wheel包,在cmd中运行: pip install wheel
  4. 安装TA-Lib,在cmd中运行:
  5. pip install TA_Lib-0.4.9-cp27-none-win32.whl
  6. 打开Python,运行: import talib
  7. 没有报错则说明安装成功

ubuntu linux安装步骤:

  • 如果安装了anaconda,执行下面名命令:conda install -c https://conda.anaconda.org/quantopian ta-lib
  • 如果是标准的Python,执行如下步骤:
  1. 下载源代码 http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
  2. tar xzvf http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
  3. cd ta-lib
  4. ./configure
  5. make
  6. sudo make install
  7. 下载 https://pypi.python.org/pypi/TA-Lib
  8. 解压安装即可。

也可参考如下页面进行安装:

https://github.com/mrjbq7/ta-lib

DEMO

vn.py的trade/app/ctaStrategy/ strategy模块给出了几个策略demo,计算了Atr、Ma等指标,TA-Lib的使用方式在策略中找不到,是因为1.7之后的版本将常用的技术指标封装在ctaTemplate.py中,如有更多需要,请自行添加。

策略下载地址:

https://github.com/vnpy/vnpy/tree/master/vnpy/trader/app/ctaStrategy/strategy

ctaTemplate.py地址:

https://github.com/vnpy/vnpy/blob/master/vnpy/trader/app/ctaStrategy/ctaTemplate.py

其他资料

1. homepage:

https://mrjbq7.github.io/ta-lib/

2. Github:

https://github.com/mrjbq7/ta-lib

3. 知乎:

talib金融库怎么用? - 王克勤的回答 - 知乎

https://www.zhihu.com/question/39951384/answer/141187837

基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5563,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。

项目官网:http://www.vnpy.org

论坛地址:www.vnpie.com

知乎专栏:https://zhuanlan.zhihu.com/vn-py

Developed by Traders,

for Traders

0 人点赞