VNPY官方发VNTrader期货CTP接口框架

  VNTrader是由VNPY官方发布的新一代期货CTP接口框架,通过C++架构加持,绕过GIL锁,真正实现了Python 框架的多线程回调,性能比老版本大幅提升。 https://gitee.com/vnpypro/vnpy

  VNTrader代码开源,支持国内商品期货、股指期货、商品期权、股指期权的行情订阅和程序化交易。国内商用产品,接近8000元,而VNTrader是免费开源的,适合基金公司及职业化交易团队使用。

VNtrader开源地址:https://gitee.com/vnpypro/vnpy
实盘期货(支持CTP):http://www.kaihucn.cn/?t=kaihu
Simnow 上期CTP接口官方网站和模拟账户注册:http://www.simnow.com.cn

VNPY VNTrader开发环境

VNTrader开发环境除了采用Python3.X,还需要安装以下模块 PyQT、PyQTGraph

IDE推荐采用PyCharm,按下图操作步骤可直接在PyCharm添加相应的Python模块。

软件架构说明 Python3.0 + PYQT python下载

https://www.python.org/

Pycharm下载

https://www.jetbrains.com/pycharm/

默认英文版,可安装中文版本插件

注意:Python、IDE、VNTrader DLL模块必须一致,必须同时是32位或同时是64位。

支持Windows平台

安装教程

安装Python3.0

安装Pycharm

在Pycharm安装PyQT插件

在Pycharm 中菜单 “运行”-> "运行"


VNPY仿真回测流程图

VNTrader CTP框架支持的市场


VNPY仿真回测流程图

VNTrader实现程序化交易考虑的环节



VNPY CTP仿真回测.产品简介

  VNPY仿真回测是一项底层仿真回测技术,是基于底层而不是应用层,所以是和编程语言无关的,并且没有第3方平台提供的方法,可以在不修改原有代码的前提下实现回测。VNPY仿真回测目前主要提供了上海期货交易所的CTP接口(支持商品期货、股指期货),未来还将提供对券商、服务商、交易所的各种API进行仿真的版本。 本节以CTP接口为例,讲述如何完成实盘量化交易程序转实盘的步骤。
  VNPY底层仿真回测是免费软件,任何人和公司均可免费下载使用。
  现在的量化回测软件和方法有三类,一类是通过文华、TB、MC等商业软件,在商业软件中通过编写交易指标和交易公式,或通过加载用户自己开发的第三方策略库进行交易策略的开发和回测;第二类是直接使用交易所、券商、API软件服务商提供的API或券商等机构提供的行情和交易API直接开发交易策略,或通过一些回测框架调用这些原生API进行回测;第三类是利用聚宽、优矿的网站在线平台进行回测。 若采用第一类商业软件开发量化交易回测系统,虽然对从事量化交易的人来说,开发策略需要的工作量较少,对开发者编程能力要求不高。但缺点也是显而易见的,除了商业软件本身需要收费提高了交易成本以外,采用商业软件开发交易策略不够灵活,使得很多交易策略无法实现。 若采用第二类直接使用API开发策略或采用针对API的回测框架,例如python的各种回测框架、matlaba的各种回测框架、R语言的各种回测框架,PyAlgoTrade、Zipline等、虽然开发策略较为灵活,但缺点是开发交易策略的实盘代码并不能直接进行回测,必须要采用引入回测框架进行回测,待回测完毕,再将回测完成的参数接入实盘策略代码中或删除回测框架部分的代码接入实盘交易的API,使得量化交易回测代码和实盘的代码有较大的改动,增加了策略开发者的工作,也增加了量化交易爱好者时间成本,甚至对很多编程能力有限的量化爱好者来说提搞了研究难度的门槛。 若采用第三类在线回测平台进行回测,由于需要将编写的策略在网站指定的服务器上运行,由于是多用户共享一台服务器,所以回测性能无法得到保证、网站更倾向于采用精度不高的数据进行回测。还由于对策略开发者来说不是使用原生API进行开发策略,所以策略开发的自由度也不够,很多想法也无法实现。更重要的是,选择网站在线平台的方式来开发量化交易策略,就等于默认了网站管理员可随时查看自己辛辛苦苦开发的策略代码,保密性让人担忧,从事量化交易的专业机构几乎不会采用在线网站的回测方式。 近年来,量化交易在金融领域应用的越来越广发,回测系统的设计是量化交易中不可缺失的一部分,但同时也暴露出一些问题,例如商业软件成本高、自己搭建会测框架时间成本高,难度大、采用第三方回测框架难度大、回测到实盘交易的代码改动较大、量化策略保密性不高等等。 为了克服现有技术存在的上述不足,VirtualApi仿真API的回测技术应运而生,它是模拟原生API来实现的。例如通过模拟原生交易API和行情API,例如通过模拟原生API的库方法的定义、头文件的定义等,使得回测和实盘交易代码,简单的将实盘代码替换为仿真API,对底层代码可不作改动或改动较少即可实现回测和参数优化。

VNPY CTP仿真回测.支持的操作系统

VNPY底层仿真回测系统支持Windows操作系统,版本要求Windows7、Windows2008及以上。

VNPY CTP仿真回测.支持语言框架

支持各种自编CTP程序和各种编程语言框架,例如C++、Python、JAVA、C#等。
支持海风、VNPY、Quicklib、PyCTP等所有框架和自编程序。

VNPY CTP仿真回测.实盘回测C++流程图对比

典型C++ CTP程序流程图

标准CTP C++实盘程序化交易程序流程图


VNPY仿真回测流程图

标准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 复制到主程序目录下。