随着这几年量化交易在国内的快速发展,各种API接口、量化平台、量化交易框架匆匆推出,呈现出一片百花齐放,欣欣向荣的景象,但是由于目前国内还处于私募基金发展的初期,大部分平台也都匆匆上马,既有自己的特点也有不足之处。
真正开展CTA 程序化交易,至少要搭建行情数据平台、研究平台和交易平台三大平台,还会涉及到平台之间的对接问题;从数据质量角度,选择准确的行情源,保证研究和交易的行情数据一致,最好采用Level-2 数据;从数据传输速度的角度,需要考虑到服务器的托管;策略设计需要考虑突发行情的处理。
量化平台主要有以下几类:
**商业软件**
文华WH8、TB、金字塔、MC 这些为代表的程序化商业软件,历史悠久,他们的客户群主要面对编程能力较弱的初级策略开发者。
再由于目前中国监管机构对A股程序化表现出限制的态度,所以这类商业软件几乎多为期货程序化软件。
它们实现程序化的方式几乎都采用一个策略编辑器,在策略编辑器了里使用商业软件开发者自定义的一套脚本语音,策略内容本质是文本内容,客户端加载策略后,将文本字符串进行分词处理,将不同的单词映射到程序相应的函数模块进行分析,所以执行效率较低。
商业软件策略编辑器开发出的策略脚本的性能较低,和我们下面说的API方式效率比起来,商业软件的性能可能低1个数量级甚至更多。
这些软件也可能在策略脚本增加对其他语言开发的动态链接库(DLL文件)的支持,例如通过调用自编DLL的方式,但本质上脱离不了脚本性能和功能的限制。而且每年商业软件需要向使用者收取费用,几千甚至10几万不等。
**在线量化平台**
近几年在线量化平台主要有优矿、聚宽等,同花顺也推出了MINDGO,甚至京东也推出了京东量化。
这类平台主要的特点是,在线编辑策略,上传策略到服务器进行回测和运行,并且有良好的社区支持,可以在平台上展示自己策略的回测图表。
但这些平台的不足是,在这类平台开发运行的策略并不是在使用者本地电脑运行的,量化爱好者开发出策略后需要通过网站上传,进行回测和远程执行策略,可能还需要平台管理员进行审核,也就意味着上传策略的同时,就是默许了量化平台可以查看你的策略,在这些WEB平台上的策略没有安全性可言。
在线量化平台有一个优势是可以进行多因子分析,因为在线量化平台通常已经对A股多因子做了因子提纯和调用数据方法封装处理,但也同时存在一个问题:经常策略多次回测的结果并不能保证一致的情况,可能是因为平台的回测服务器是共享的,也可能在性能精度上做了简化处理。
因为这类的平台的优势在于可提供A股的多因子库,所以这些平台以基于A股的多因子回测为主有一定优势。
对策略开发者而言,开发的策略使用的方法依赖于平台提供的函数方法。
所以在不同平台的函数方法并不是一致的。
**自主研发平台**
主要使用交易所和证券公司、软件服务商提供的API进行自主研发。例如上期的CTP API、中泰的XTP API、兴业的UT API等。
综合交易平台CTP 是由上期技术提供的平台,是一个开放、快速、稳定、安全的期货交易、结算系统解决方案,随着接入期货公司的增多,其在期货界也获得了越来越普遍的认同。其开放的接口、优异的性能、集中部署的创新模式以及经验丰富的技术背景都为程序化交易在国内的快速发展提供了最为优异的平台。
采用CTP 开发程序化交易策略具有接入灵活、运算性能高、传输速度快等优点。
CTP 上使用的API 是基于C++程序库,来实现客户端和CTP 服务器之间的数据传输。客户端包括,所有投资者都可以使用的CTP 标准客户端,以及个性化交易工具(由投资者个人或其合作者开发)。通过API,客户端可以发出或撤销普通单、条件单、查询委托或交易状态、查询账户实时信息和交易头寸。
高性能的交易后台综合交易平台8000 笔/秒处理速度的交易引擎,整套系统在0.5 毫秒以内处理完成报单、成交全过程的资金持仓计算的能力,以及无单点故障并实现负载均衡的交易系统体系架构树立了综合交易平台高性能的业界形象。拥有2 万个客户同时在线的处理能力,还可以通过扩展前置机群进一步提升系统对更多客户在线的处理能力。
传输:高速的交易所通信线路
综合交易平台通过千兆局域网接入中金所和上期所交易系统,通过三所联网主干接入大商所和郑州商品交易所。托管于上期技术的程序化交易终端,因为通过局域网接入综合交易平台,其报单和行情速度处于目前业内最快水平。
长远看,应该立足基于CTP 的API 自主开发程序化交易系统,有利于实现更复杂的策略、更灵活的交易操作。用C++这样的编译性语言,相比脚本语言,可以直接把程序编译成机器可读的二进制代码,因此效率更高。
号称"本地SIMNOW"的VNPY CTP的底层仿真回测接口,就是针对CTP开发者提供的一套数据采集、仿真回测、图表绘制的一套非常容易的产品。
具备CTP架构的开发经验,是一种通用的经验,该经验也可以用于其他接口的研发。
我们结合CTP发布了一种面对CTP的TICK级本地仿真回测接口,也就是大家现在看到的我的作品vnpy底层仿真回测 ,vnpy底层仿真回测 for CTP的版本是针对CTP的原生方法和库做了结算仿真,可以在不改变CTP代码的前提下实现TICK级回测,而在vnpy底层仿真回测 出现之前是无法做到这一点的。
**VNPY底层仿真回测系统: www.vnpy.cn 介绍**
VNPY CTP仿真回测.支持编程语言
支持多种编程语言,包括C++、Python、Java、C#、Golang、易语言等 。
VNPY CTP仿真回测.支持的操作系统
VNPY底层仿真回测系统支持Windows操作系统,版本要求Windows7、Windows2008及以上。
VNPY CTP仿真回测.支持语言框架
支持各种自编CTP程序和各种编程语言框架,例如C++、Python、JAVA、C#等。
支持海风、VNPY、Quicklib、PyCTP等所有框架和自编程序。
VNPY CTP仿真回测.实盘回测C++流程图对比
标准CTP C++实盘程序化交易程序流程图
标准CTP C++通过VNPY仿真回测程序流程图
**VNPY CTP仿真回测.库文件**
CTP Api是C++库,理论上可以用于包括C++、Python、Java、C#、等在内的多种编程语言的调用。
VNPY For CTP一样是采用C++开发,目前只支持Windows操作系统,运行采用VNPY For CTP的计算机和TradeAgent.exe的计算机采用要求Windows7、Windows2008及以上系统,对于Windwo7和Windows Server2008这些较为陈旧的Windows系统安装微软运行时库redist2015补丁。 以最常用的CTP无中继代理模式为例(于2019.6.14实施的穿透式和老的非穿透式),CTP API Windows版本含以下文件:
其中ThostFtdcMdApi.h、ThostFtdcTraderApi.h、ThostFtdcUserApiDataType.h、ThostFtdcUserApiStruct.h 是头文件,thostmduserapi.dll、thosttraderapi.dll、thostmduserapi.lib、thosttraderapi.dll。
可以看到VNPY仿真回测库在原CTP库基础上增加了list.csv,Price.exe,Graph.exe这3个文件,而对于thostmduserapi.dll、thosttraderapi.dll、thostmduserapi.lib、thosttraderapi.dll这4个文件是VNPY仿真回测提供模拟CTP的实现,而ThostFtdcMdApi.h、ThostFtdcTraderApi.h、ThostFtdcUserApiDataType.h、ThostFtdcUserApiStruct.h 这4个头文件则保持和CTP对应版本一模一样。
list.csv作用:该程序放到回测程序的目录下,用于指定csv格式的数据文件的存放路径,并非自己存放Tick数据,在回测时VNPY For CTP会从上至下依次读取list.csv种这些文件的Tick数据,并触发CTP方法里的深度行情通知回调函数 virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData),使得和CTP的OnRtnDepthMarketData回调方法一致。 值得注意的是,list.csv指定的数据文件库的字段顺序目前不能更改,将来可能提供字段顺序的自定义设置功能。
localtime (本机写入TICK的时间),
InstrumentID (合约名),
TradingDay (交易日),
ActionDay (业务日期),
UpdateTime (时间),
UpdateMillisec(时间毫秒),
LastPrice (最新价),
Volume(成交量) ,
HighestPrice (最高价),
LowestPrice(最低价) ,
OpenPrice(开盘价) ,
ClosePrice(收盘价),
AveragePrice(均价),
AskPrice1(申卖价一),
AskVolume1(申卖量一),
BidPrice1(申买价一),
BidVolume1(申买量一),
UpperLimitPrice(涨停板价),
LowerLimitPrice(跌停板价),
OpenInterest(持仓量),
Turnover(成交金额),
PreClosePrice (昨收盘),
PreOpenInterest (昨持仓),
PreSettlementPrice (上次结算价)
**VNPY CTP仿真回测.使用说明**
本节以CTP接口为例,讲述如何完成实盘量化交易程序转实盘的步骤。
CTP C++实盘代码转回测:
步骤一: 您已经实现了CTP实盘接入的代码;
步骤二: 将VNPY仿真回测库文件、绘图程序、配置文件复制粘贴到您已经编译好的程序的根目录下,如果是同名的问题,可以直接替换。对C++ 实盘程序转回测,虽然您可以替换.lib文件重新编译一次,但实际上无需重新编译您原有的程序;
步骤三: 修改回测数据配置文件,指定数据文件目路径;
步骤四: 运行您自己的程序,进行TICK级回测。
由于VNPY仿真回测是与编程语言无关的,所以支持所有的CTP自编程序实现TICK级回测。对各种框架而言,也只需要替换thostmduserapi.dll、thosttraderapi.dll文件即可。 另外需要把2个配置文件list.csv和2个绘图程序Price.exe,Graph.exe 复制到主程序目录下。
有疑问加站长微信联系(非本文作者)