分享

看完这篇,彻底搞定期货穿透式CTP API接入

 我心已经飞翔 2020-02-02
操作流程

不多废话先上结论(操作流程图):

看完这篇,彻底搞定期货穿透式CTP API接入

下面是步骤说明,只要照着做100%可以搞定!!!

第一步:申请穿透式接入

电话联系你的客户经理,向期货公司申请进行穿透式接入测试。如果期货公司服务质量较好,可能已经主动联系你邀请测试了。

第二步:填表提交AppID

填写申请表,每家期货公司有所区别,但整体上需要提供的信息可能包括:

  • CPU序列号
  • 硬盘序列号
  • 硬盘主分区盘符和大小
  • 网卡MAC地址
  • 内网IP和外网IP
  • 交易程序的AppID

以上多条信息的获取,就需要用到cmd中的系统命令工具了。

输入以下命令获取CPU序列号:

wmic cpu get processorid

逐条输入以下命令,获取硬盘序列号、主分区盘符和大小:

diskpartselect disk 0detail disk

输入以下命令,“以太网适配器”下的“物理地址”就是MAC地址,“IPv4地址”就是内网IP:

ipconfig /all

访问www.ip138.com获取你的外网IP,或者直接百度搜索“IP”也行。

最后的AppID,是一个由用户提供的交易程序代码,以个人身份申请时,格式为:

client_xxxx_yyyy

其中xxxx是你的软件名称,yyyy是版本号,这两个字段都是客户自己填的信息(没有固定规则),以vn.py的v2.0版本为例,AppID可能为:

client_vnpy888_2.0

其中888的部分,是自定义的一个字符串,主要为了避免你的AppID和其他人重复,你可以选择随意选择:姓名拼音缩写、某个数字、幸运词......

第三步:拿到AuthCode

提交申请表后,一般当天或者第二天就能拿到期货公司针对你的这个AppID提供的测试账号信息,包括:

  • 用户名、密码
  • 经纪商代码、仿真测试服务器地址(交易、行情)
  • 产品名称(你填的AppID)、授权编码(AuthCode)

第四步:仿真测试

我们这里测试环节以最新版的VN Studio为例,如果没有的话请点击下载:VNStudio-2.0.3。同样你也可以选择使用任何其他的软件程序来操作,如果不幸掉坑后爬不出来的话再回到VN Station好了。

双击桌面的VN Station图标,启动后会弹出登录框。如果是第一次使用,请点击“微信登录”按钮,扫描二维码后注册VN Station账号(同样也是vn.py官方社区论坛http://www.的登录账号),如果已经有账号了可以直接输入后点击“登录”。

看完这篇,彻底搞定期货穿透式CTP API接入

登录完成后会看到VN Station主界面,此时请点击底部的“VN Trader Pro”,并在弹出的目录选择对话框中直接点“选择文件夹”按钮(即在默认的Windows用户目录下启动VN Station):

看完这篇,彻底搞定期货穿透式CTP API接入

随后会弹出配置VN Treader的对话框,注意此时请一定只勾选加载CTPTEST接口,千万不要同时勾选加载CTP接口,会因为dll冲突导致后续测试失败!!!!

看完这篇,彻底搞定期货穿透式CTP API接入

在VN Trader主界面上,点击左上角的“系统”->“连接CTPTEST”,在弹出的登录配置对话框中输入期货公司提供的测试账号信息(产品名称就是AppID),点击连接按钮后登录CTP穿透式测试用服务器:

看完这篇,彻底搞定期货穿透式CTP API接入

当VN Trader左下角的日志监控组件中,刷新出熟悉的日志信息,看到“合约信息获取成功”的时候,就意味着我们已经完成测试了!

第五步:期货公司校验

搞定上面的测试服务器连接登录后,就可以联系期货公司进行校验工作了,通常可以一次性直接通过,如果遇到不通过的情况请查看本文最后的常见问题来解决。

第六步:实盘接入

期货公司校验通过后,会将客户申请的AppID和AuthCode添加到实盘CTP的服务器上,此时只要把启动VN Trader Pro时,加载的接口由CTPTEST改为CTP,就可以连接上实盘交易环境,和以往一样进行量化交易了。

看完这篇,彻底搞定期货穿透式CTP API接入

名词解释

穿透式监管

新的监管模式主要是明确了期货公司对于其客户交易行为的管理责任,因此需要对所有接入交易柜台系统的交易终端软件进行认证管理,防止坏人耍流氓后一走了之,难以追查。

穿透式API

穿透式监管的主要实现工具,支持对交易终端机器的信息采集功能(即采集之前提到的CPU序列号、MAC地址等信息),并在加密后直接上传期货市场监控中心。除了本文中用到的CTP穿透式API外,其他的柜台也都提供了对应的穿透式API版本:恒生、易盛、飞创等,操作方法基本类似。

执行日期

在6月14日当天,所有期货公司的柜台系统全部强制升级为穿透式监管版本,老的非穿透式柜台会全部下线,没有所谓的“过渡期”,现在就已经是“过渡期”了!!!还有不到两周的时间,所有通过API接入交易的用户请赶紧吧,不要到了那天没法交易才着急,而且普遍的拖拉习惯,目前在申请接入测试的客户与日俱增,也对期货公司每天繁忙的后台IT部门表示感谢。

6.3.13

CTP穿透式柜台的仿真测试版本,也是CTPTEST接口中使用的API版本,所有客户的仿真接入认证测试都必须使用该版本!主要因为该版API采集客户的信息是没有加密的,期货公司可以在后台查看来进行认证工作。

6.3.15

CTP穿透式柜台的实盘交易版本,也是CTP接口中使用的API版本,完成仿真接入测试后,必须使用该版本才能连接实盘交易的CTP柜台。该版本的采集信息是安全加密的,期货公司的IT用后台系统也看不到。

直连模式

指的是所有用交易程序直接使用CTP的API连接CTP柜台,进行行情获取和委托交易的情况,几乎所有自主开发或者使用开源框架的量化交易客户都属于这种情况,直接使用穿透式监管版本的API进行开发就行(带_se后缀的)。

中继模式

指的是:交易客户端->中继服务器->CTP柜台,采用这种连接模式主要包括商业量化交易软件(比如文华财经)以及机构量化资管系统(比如O32),只有中继模式才需要用到那个DataCollect.dll文件。

API内部工作流程

同样以CTP为例:

  1. 调用Init,开始连接
  2. 收到OnFrontConnected,确认连接成功
  3. 调用ReqAuthenticate,这一步填入AppID和AuthCode,进行认证
  4. 收到OnRspAuthenticate,确认认证成功
  5. 调用ReqUserLogin,这一步同样需要填入AppID,进行登录
  6. 收到OnRspUserLogin,确认登录成功

只有交易接口TD需要进行认证,MD直接登录就行。每一步出错的话都会有相应的报错输出提示,查看错误信息内容后照着修改就行。

常见问题

哪个版本的vn.py目前支持穿透式API?

最新的v2.0.3发布版本(Py3 64位),和v1.9.2-LTS版本(Py2 32位),都支持了穿透式API,推荐使用Windows进行相关测试工作(Linux上需要自己调整链接库做编译)。

更新后SimNow环境连不上了!

截止目前的2019年6月1日,SimNow上的交易测试环境(包括第一套和第二套)依旧为非穿透式的老版本,因此用穿透式版本的API都是连不上的。

SimNow的终端厂商测试环境连上后没有行情!

SimNow所提供的6.3.13测试环境,目前仅仅为了满足用户的穿透式版本测试需求(也就是能成功登录上来查询一下合约信息等),尚未提供第一套或者第二套环境中的仿真行情以及仿真交易功能,所以:就是没有行情的~

报错4097,cmd有输出Decrypt handshake data failed

这是因为你的API版本和服务器的版本不一致导致的,请按照以下流程排查:

  1. 是否同时import了CTP(CtpGateway)和CTPTEST(CtptestGateway)接口,如有请移除另一个(两个同时加载会冲突)
  2. 确保使用CtptestGateway来连接6.3.13穿透式测试环境,用CtpGateway来连接6.3.15穿透式实盘环境
  3. v2.0.3以及v1.9.2-LTS(最新Github代码)都已升级到穿透式API,因此无法用于连接SimNow的老版本环境

UserProductInfo字段是用来干嘛的?

该字段是之前非穿透式API时,用来进行客户认证的产品名称字段(配合AuthCode一起)。穿透式版本接入的方案文档并没有对该字段的强制要求,目前我们这边已经对接了的5家期货公司也均未要求使用,但听说某些公司需要:如中信建投等,如果有了解其他公司情况的请在评论中分享。

能否使用云服务器或者虚拟机进行测试认证?

虚拟机和云服务器,对于本文开头部分提到的CPU序列号、硬盘序列号等信息,有可能获取不全或者部分字段不符合规定。目前有些期货公司要求严格,必须全部能正确获取到,且和第二部申请表中填写的内容一致,才能算认证测试成功;另一些公司则是十分宽松,表也不用填,采集信息也不看,只要登录上来就算测试通过。

所以,能否使用云服务器和虚拟机,完全取决于你开户的这家期货公司了。

如果使用v1.9.2之前老版本的vn.py怎么办?

请将v1.9.2的以下内容复制到你的老版本对应的目录下:

  • vnpy/api/ctp
  • vnpy/trader/gateway/ctpGateway
  • vnpy/trader/gateway/ctptestGateway

并采用上文提到的方式去做认证。

6.3.15的穿透式实盘API,想进行下测试怎么办?

目前只发现中信期货提供了6.3.15的仿真测试环境(忍不住竖起大拇指,不愧是中信),但最近估计申请人数过多,新的申请处理非常缓慢,如果大家发现别家提供6.3.15的测试环境也欢迎在评论里告知。

为什么期货公司一定要用6.3.13和6.3.15两个版本,接下来是否会合并都使用6.3.15?

为了满足穿透式监管认证要求,期货公司认证时要看到客户机器采集的信息,就只能通过6.3.13版本的CTP API。而实盘交易的环境中,期货监控中心要求直接上报采集信息,禁止期货公司查看和修改,就必须通过6.3.15版本。

所以目前来看仿真和实盘使用两个版本的API,是监管中心比较放心得过的方案吧,也就意味着交易客户端必须要两套API都对接准备好了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多