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

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

原文发布于微信公众号 - 维恩的派VNPIE(vn-pie)

原文发表时间:2018-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏喔家ArchiSelf

2.4G上的无线共存问题

2.4 GHz无线共存已经存在至少20年了。真正的问题在于,不同的2.4 GHz无线技术满足了同一设备的不同需求,因此必须要在同时运行而不会出现明显的性能退化。...

12830
来自专栏安智客

基于可信环境的远程人脸识别认证系统技术要求

本篇针对目前信安标委《基于可信环境的远程人脸识别认证系统技术要求》标准规范征集意见稿进行学习!

28930
来自专栏SAP最佳业务实践

SAP最佳业务实践:MM–批次管理的库存物料采购(901)-1业务概览

用途 我们的目的是描述与批次管理的库存物料采购相关的业务流程。目标组是仓库人员和财务。 处理流程中涉及的公司角色: 采购员 仓库管理员 应付会计 包含的关...

36540
来自专栏大数据和云计算技术

Automatic Management of Data and Computation in Datacenters

image.png 最近在研究数据中心的数据管理和性能优化,看了一篇2010的论文Nectar:Automatic Management of Data and...

366100
来自专栏大魏分享(微信公众号:david-share)

云时代企业如何建设绿色数据中心(第一篇)

建设绿色数据中心的必要性 中国目前是是全球最大的温室气体排放国,节能减排是“十二五”的重要工作内容。发改委在2013年就明确了首批10个行业的企业温室气...

36560
来自专栏软件

Lumion4.0安装图解

链接:https://pan.baidu.com/s/1ge7PaYv 密码:ast4 lumion4.0.2是一款辅助Quest3D的工具,主要作用是实现3d...

19750
来自专栏机器人网

基于嵌入式Linux的移动机器人控制系统

随着科学技术的发展和社会的需要,移动机器人技术得到了迅速发展,正在渗透到各行各业中,使人们的生活更加便利。现今以单片机为核心的移动机器人存在处理数据量有限、控制...

52550
来自专栏数据小魔方

shiny动态仪表盘应用——中国世界自然文化遗产可视化案例

这一篇很早就想写了,一直拖到现在都没写完。 虽然最近的社交网络上娱乐新闻热点特别多,想用来做可视化分析的素材简直多到不可想象,但是我个人一向不追星,对明星热文和...

65170
来自专栏大数据挖掘DT机器学习

机器学习数据采集入门经验分享

在新的一年里,很多人都在思考如何利用机器学习(ML)算法来提高产品或服务的质量。 PredictionIO公司与许多公司合作,部署他们的第一个ML系统和大数据基...

42880
来自专栏专知

【观点】漫谈推荐系统及数据库技术

点击上方“专知”关注获取更多AI知识! 【导读】推荐系统和数据库技术,一个是偏机器学习数据挖掘相关的应用,一个是偏系统存储相关的技术,这两者在实际中有很大的应用...

46090

扫码关注云+社区

领取腾讯云代金券