项目:商品cta策略的自动化交易程序

  • Program

posted on 30 May 2018 under category Project

程序化交易在当今的市场上已经越来越频繁,特别对于大机构而言,手工交易已经无法满足交易对价位和价差的要求,程序化交易不仅能满足交易的实时盯盘功能,当价格有异常波动的时候可以实时监控,同时通过程序化交易,可以快速的完成交易,使得交易的成本和效率大大提高。

一、背景

项目的背景是这样的,由于我们公司之前是做信用债的私募公司,最近成立了一个量化投资团队,但是我们团队中又缺少富有经验的成员,从策略研发到最后实盘都需要我们自己一路去尝试和探索,之前开发的一个商品CTA策略效果还不错,通过老板自己的实盘账户去验证,一个月盈利达到10%,对一个完全没有量化经验的团队来说,这个是超过我们的预期的,由于之前这个策略的回归测试和程序化实现主要是由我来负责,当时遗留了一个问题就是手动下单问题,我们可以根据我们的策略形成交易列表,但是之后是通过手工下单的方式进行交易的,因为每次要交易16个品种,每次到换仓的时候都特别紧张,一个是担心下单的价格是不是最好的,一个是担心下单时是否正确执行了。为了跟策略程序完美对接,实现自动化下单就显的十分必要。

二、实现

1.尽职调研

由于笔者之前有比较长的一段软件行业从业经验,首先想到的是Github有没有可参照的项目,后来找了一圈并没有合适的项目,有些专业的团队需要付费才能帮忙开发,结合当时公司和项目的情况,发挥编程人员自己动手丰衣足食的作风,首先,我发现现在各大期货交易软件是通过上期所的交易接口去交易的,后来找到上海期货信息技术有限公司有提供相关的行情和交易接口,并提供了相关说明文档和Demo程序,之后我们组织团队力量用基于C++版本开发了一个自动下单程序,但是在功能扩展和稳定性方面,效果很差,而且开发新功能效率很低,维护成本很高,特别是跟我们之前的策略程序用的语言Python不是很兼容,所以这个过渡方案很快就淘汰了。后来无意中在CSDN网站上看到有一个VNPY的框架,这个框架几乎集成了主流的交易接口(CTP、XTP、飞马、宽睿、富途证券、IB、OKEX、火币),涉及股票、期货、期权和数字货币等品种,同时还是通过Python实现的一个开源项目,既方便项目扩展功能开发,又能兼顾开发效率和维护的便捷性。

2.安装部署流程

因为VNPY考虑到Python版本之间的差异性,也是开发了两个版本Python2和Python3,笔者这里是基于Python3版本做的开发,当然Python3的版本在VNPY项目团队合理的设计规划之后,开发和应用更加方便和简洁,这里不做过多论述。

2.1 安装VNPY及相关依赖包

这里主要是从Github上下载VNPY源代码,执行install.bat程序完成安装部署操作,依赖包主要包括anancoda、requirements.txt列表和微软的运行时库,VNPY整个项目目录结构如下: VNPY项目目录结构

2.2 导入VNPY模块

成功配置第一步之后,我们的环境基本上已经符合VNPY的运行条件了,这个时候我们需要把VNPY的模块功能引入到我们的自动化程序中去,在Python中首先需要引入VNPY相关的模块包,如下: 导入VNPY模块包

2.3 实现自动化交易程序

在这里我们主要通过VNPY的EventEngine和MainEngine两个引擎,实现CTP接口的调用,主要包括行情接口的查询和交易接口的调用,这里我们可以通过调用VNPY程序的打印日志看到内部实现流程。 CTA自动下单程序运行结果图

2.4 实现与验证

通过以上几个步骤,我们可以登录我们的测试账号,观察并验证交易的执行情况,如下: CTA自动下单结果图 通过执行的结果图来看,从策略生产交易清单到程序执行,以及执行的完成度上都有比较好的结果,基本上完成我们当时对CTA自动化下单程序的预期,同时也给我们拓展程序功能指明了方向,通过这个项目完成了项目对自动化下单的需求、同时提高了交易的效率和降低了交易的成本,是一举三得的项目。

三、效果

效果一:实现完CTA自动化交易程序之后,我们的交易效率和交易成本大大降低,我们管理的账户也慢慢多起来,这个时候通过扩展我们的自动化交易程序,我们可以做到自动化维护管理批量账户,同时实时监控我们的账户和交易风险,每天根据不同账户和策略的表现,优化改进我们的策略,为公司的自动化交易打下坚实的基础。

效果二:提高私募信息化程度,之前我们每周需要对交易和账户做一些总结,每个月需要向重要客户汇报我们账户的管理情况,我们通过自动化程序,把账户在交易过程中的一些状态信息和数据记录下来,并生成相应的指标数据,最终保存在我们的数据库中,每到时间点的时候,我们程序资金从数据库中抓取相应数据,生成报告发送给指定用户,提高了我们工作的效率和准确率。

参考信息

  1. 上海期货信息技术有限公司官网
  2. VNPY项目官网