VNPY官网

【探索更真实的量化交易世界】VNPY官网

百度 搜索 “VNPY学习资料全集”,前三行可以找到详细教程导航

点击链接,再按下图选择打开

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=48020221_12_hao_pg&wd=VNPY%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99%E5%85%A8%E9%9B%86&oq=VNPY&rsv_pq=a389283a0002fc92&rsv_t=70e2bfjdu4whTIKLf4%2BQrhXBsI5F7E%2Blgwkf9e1EHVyZIcMM71JwF4j6QMx9UtpMqeYusSicupcU&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&rsv_sug3=48&rsv_sug2=0&inputT=2422&rsv_sug4=2986&bs=VNPY&rsv_jmp=fail

我是一名来自量化基金的CTP开发者,我做CTP已经有5个年头了。

我在这里会分享对CTP开发的一些见解,希望对大家有用。

通常我们从上期网址下载CTP接口的API后,从网上找到1个CTP DEMO就开始搭建第一个CTP程序。

其实CTP的例子很多,但大多只涉及了交易部分的简单例子,对有基础的初学者来说,可以很快理解了如何调用CTP接口,并从CTP回调函数获取数据的方法。

5年前我也是这样开始了CTP开发之路,CTP对我来说已经是生活的一部分。

CTP开发过程中最麻烦的事就是回测问题, 回测涉及到数据的采集。数据清洗,数据回测框架,实盘程序接入回测框架等等步骤。

很多CTP开发者没有自己开发回测框架,就利用上期的SIMNOW (http://www.simnow.com.cn)进行测试,但其实Simnow应该只作为功能测试而不是策略回测。

在大名鼎鼎的CTP体系下,最著名的是Virtualapi (http://www.virtualapi.cn )、VNPY、优矿、聚宽等。

其中Virtualapi久负盛名,可以说是CTP最优秀的回测方案,而且申请了国家发明专利,Virtualapi可用于本地TICK级别回测。

VNPY 以大而全著称,但是回测模块就显的差强人意了。好在Virtualapi可以完美支持VNPY,Virutalapi不仅支持VNPY,还支持所有CTP自编CTP程序和各种CTP框架进行回测,因为Virtualapi本身就是完全仿真了CTP嘛。

策略回测我们应该使用Virtualapi (http://www.virtualapi.cn )这样的TICK级本地仿真API,有了它我们做ctp的工作就简单多了。

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

VirtualApi回测程序流程图(C++)
VirtualApi For CTP回测程序流程图

CTP库文件

CTP Api是C++库,理论上可以用于包括C++、Python、Java、C#、等在内的多种编程语言的调用。

VirtualApi For CTP一样是采用C++开发,目前只支持Windows操作系统,运行采用VirtualApi Api的计算机和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。

VirtualApi库文件

VirtualApi For CTP库文件

包含以下文件:

可以看到VirtualApi 库在原CTP库基础上增加了list.csv,Price.exe,Graph.exe这3个文件,而对于thostmduserapi.dll、thosttraderapi.dll、thostmduserapi.lib、thosttraderapi.dll这4个文件是VirtualApi提供模拟CTP的实现,而ThostFtdcMdApi.h、ThostFtdcTraderApi.h、ThostFtdcUserApiDataType.h、ThostFtdcUserApiStruct.h 这4个头文件则保持和CTP对应版本一模一样。

list.csv作用:该程序放到回测程序的目录下,用于指定csv格式的数据文件的存放路径,并非自己存放Tick数据,在回测时VirtualApi会从上至下依次读取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 (上次结算价),

Graph.exe作用:该程序放到回测程序的目录下。在回测时,回测程序通过API会自动打开Graph.exe,在回测时自动绘制资金曲线分时图;回测完成后,也可以将回测数据文件拖入Graph.exe窗口打开资金曲线分时图;

Price.exe作用:该程序放到回测程序的目录下。在回测的过程中或回测技术后,可以将回测数据文件拖入price.exe窗口,绘制回测时间段内的行情多日分时图,可以和Graph.exe显示的资金曲线进行对照。

C++ Demo

C++ Demo采用Visual Studio2015、Visual Studio2017、Visual Studio2019 编译,运行test.sln打开Demo项目。

微软最新版本的Visual Studio下载: https://visualstudio.microsoft.com/zh-hans/downloads/

 其他量化资源推荐

[量化爱好者福利贴,2012~2015年3年期货全品种TICK数据共享](量化爱好者福利贴,2012~2015年3年期货全品种TICK数据共享)

[《期货跟单软件视频教学4集》](量化林:酷操盘手期货跟单软件教学视频)

[《mdshare财经数据接口包》](mdshare量化交易行情数据共享中心)

[python量化交易](www.lhjhie.net)

[《优秀量化资源导航》](Python量化交易,TICK数据下载,A股交易接口,期货程序化交易,量化交易,CTP回测-量化交易首页)

[《酷操盘手期货跟单软件》](酷操盘手期货跟单软件、期货资管软件、CTP回测系统)

期货程序化交易接口CTP回测框架的选择相关推荐

  1. 通达信期货程序化交易接口是什么?

    通达信期货程序化交易接口是什么?期货办理手续交易先讲期货的程序化交易. 联接国内四大期货交易所的期货交易系统软件关键是前高新科技综合交易服务平台(CTP ).金仕达.易盛(关键联接郑商所)等. 在其中 ...

  2. python量化回测框架_股票量化交易回测框架pyalgotrade源码阅读(一)

    PyAlgoTrade是什么呢? 一个股票量化交易的策略回测框架. 而作者的说明如下. To make it easy to backtest stock trading strategies. 简单 ...

  3. 用Python徒手撸一个股票回测框架

    通过纯Python完成股票回测框架的搭建. 什么是回测框架? 无论是传统股票交易还是量化交易,无法避免的一个问题是我们需要检验自己的交易策略是否可行,而最简单的方式就是利用历史数据检验交易策略,而回测 ...

  4. 6款优秀的量化交易回测框架!VNPY位居第一

    一个策略从想法,到测试,在到实盘,然后改进,进入另一个循环,需要很多的时间和精力.这时候选择一款高效.灵活的测试系统就是当务之急了.即使最后你可能需要写自己的系统,但是这些框架的软工架构还是很值得借鉴 ...

  5. 量化交易如何进行回测+模拟+实盘?包括哪些回测框架?

    大家在进行实盘交易前,必须对量化交易策略进行回测和模拟,以确定策略是否有效,并进行改进和优化.作为一般人而言,你能想到的,一般都有人做过了.回测框架也如此.当前小白看到的主要有如下五个回测框架: 1. ...

  6. 股票交易接口回测框架

    股票交易接口回测框架提供完整的数据,以及回测机制进行策略评估研究,并能够实时进行模拟交易.

  7. 《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

    点击:QTYX最新版本使用指南[文字版] 点击:QTYX最新版本使用指南[视频版] 点击: QTYX历史版本更新说明 赠送"回测框架"的目的 为了帮助读者再建立一座从书本知识到实战 ...

  8. python量化策略源码_Python量化交易进阶讲堂-创建自定义量化回测框架

    欢迎大家订阅<Python实战-构建基于股票的量化交易系统>小册子,小册子会陆续推出与小册内容相关的专栏文章,对涉及到的知识点进行更全面的扩展介绍,并且会有选择地收录至小册中,更便于广大读 ...

  9. Pyalgotrade量化交易回测框架

    现在就开始干活了.先要测试一下pyalgotrade回测数据对不对.我找了个参照标准:在聚宽上开通了个账号,按入门教程写了个策略:2016-2018年每个交易日买入100股平安银行(000001),回 ...

  10. 量化交易 简易回测框架

    量化交易 简易回测框架 import datetime import osimport dateutil import matplotlib.pyplot as plt import pandas a ...

最新文章

  1. Python培训中有哪些是必须学的运算符
  2. linux 卡在grub_安装Linux系统,Ubuntu时卡在这个界面不动了,有3个小时了。。显示:“正在运行update_grub”......
  3. 【优达学城测评】SELECT 子句(6)
  4. ActiveMQ与xml rpc
  5. Tungsten Fabric SDN — 与 OpenStack 的集成部署
  6. spwm逆变器双极性matlab教程,基于MATLAB/Simulink的SPWM逆变电源的建模与仿真
  7. css背景渐变的技巧与方法
  8. java 并发编程 aqs_Java并发编程之AQS
  9. 休眠锁定模式– PESSIMISTIC_READ和PESSIMISTIC_WRITE如何工作
  10. ssm前端时间格式转换
  11. 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头
  12. Spring 类管理机制
  13. TiDB在360云平台的落地
  14. 服务器搭建及微信开发
  15. 如何使用WeKan管理您的工作
  16. 基于C++的P2P穿透文件传输
  17. python语言的实验心得体会范文_实验心得体会四篇
  18. ipad怎么压缩文件?教你一招快捷压缩图片
  19. CorelDRAW常用工具之渐变工具
  20. 高精地图语义分割标注

热门文章

  1. 【精品整站】WordPress自适应美女写真网站源码/美图整站源码带数据/安装即可运营
  2. 诺德舞台电钢琴采样-Nord Stage 3 Ultimate Stage Pianos
  3. java 基站定位_android基站定位 | 学步园
  4. matlab seawater,seawater Matlab seawater工具包 联合开发网 - pudn.com
  5. 我们系有个计算机中心英语,吉大自考计算机专业英语(一)
  6. DNN硬件加速器设计2 -- Survey of DNN Development Resouces and DNN Hardware(MIT)
  7. 音量控制 单片机c 语言,单片机可调音量一线控制语音芯片程序
  8. 区块链在图书馆中应用
  9. ubantu 搭建我的世界java服务器 spigot核心
  10. v8引擎编译全记录2020-10-17(保姆级教程)