转:彻底搞定期货穿透式CTP API接入
资料来源:https://www.vnpy.com/forum/topic/603-kan-wan-zhe-pian-che-di-gao-ding-qi-huo-chuan-tou-shi-ctp-apijie-ru#1操作流程不多废话先上结论(操作流程图):description下面是步骤说明,只要照着做100%可以搞定!!!第一步:申请穿透式接入电话联系你的客户经理,向期货...
中信期货看穿式监管认证操作指南(CTP系统)
https://www.citicsf.com/static/download/soft/%E4%B8%AD%E4%BF%A1%E6%9C%9F%E8%B4%A7%E7%9C%8B%E7%A9%BF%E5%BC%8F%E7%9B%91%E7%AE%A1%E8%AE%A4%E8%AF%81%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97%EF%BC%88CTP%E7%B3%BB%E7%BB%9F%EF%BC%89.pdf
尊敬的客户:
根据证监会《关于进一步加强证券期货经营机构客户交易终端信息等客户信息管理的规定》和期货市场监控中心《期货公司客户交易终端信息采集及接入认证技术规范》的通知要求,期货公司应于2019年6月14日前完成信息系统的改造升级并对客户使用的交易终端软件进行认证管理和报送采集信息。
为落实以上要求,所有非标准客户端接入的客户(CTP二席客户,且非使用快期、文华、博易、TB、达钱、金字塔客户端)需按照要求对客户端软件进行改造,联系信息技术部进行测试,测试完成后即可接入新站点进行交易。如未在规定时限内按要求完成升级改造,按照监控中心要求,可能会影响后续接入。
具体测试流程请可参看《**期货看穿式客户端接入指引》,测试完成后,未报备客户端需按照《信息系统外部接入管理办法》进行报备,已报备客户端仅需完成测试。
特此通知。
穿透监管说明
AppID/RelayAppID是指什么?
AppID是客户交易终端软件的唯一标识码,由终端软件商按照规范要求编制,AppID由终端厂商名称、终端软件名称和版本号三部分构成。RelayAppID是中继代理软件的唯一标识码,由中继代理软件商按照规范要求编制,RelayAppID由中继厂商名称、中继软件名称和版本号三部分构成。
AppID和RelayAppID标准格式是啥?
CTP API在哪里获得?
CTP API是CTP系统提供的编程接口,可以在上期技术官网直接下载得到。
直连模式、中继代理模式是指什么?
直连模式是客户交易终端软件与期货公司交易软件直接通讯,进行交易的模式。
中继代理模式是客户交易终端软件与期货公司交易软件间接通讯,进行交易的模式。
看穿式监管授权码是什么?
授权码由期货公司依据终端软件商或中继代理软件商提交的AppID或RelayAppID生成派发,用于AppID或RelayAppID的合法性校验。
资料来源:
https://www.vnpy.com/forum/topic/603-kan-wan-zhe-pian-che-di-gao-ding-qi-huo-chuan-tou-shi-ctp-apijie-ru
#1
操作流程
不多废话先上结论(操作流程图):
description
下面是步骤说明,只要照着做100%可以搞定!!!
第一步:申请穿透式接入
电话联系你的客户经理,向期货公司申请进行穿透式接入测试。如果期货公司服务质量较好,可能已经主动联系你邀请测试了。
第二步:填表提交AppID
填写申请表,每家期货公司有所区别,但整体上需要提供的信息可能包括:
CPU序列号
硬盘序列号
硬盘主分区盘符和大小
网卡MAC地址
内网IP和外网IP
交易程序的AppID
以上多条信息的获取,就需要用到cmd中的系统命令工具了。
输入以下命令获取CPU序列号:
wmic cpu get processorid
逐条输入以下命令,获取硬盘序列号、主分区盘符和大小:
diskpart
select disk 0
detail 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官方社区论坛www.vnpy.com的登录账号),如果已经有账号了可以直接输入后点击“登录”。
登录完成后会看到VN Station主界面,此时请点击底部的“VN Trader Pro”,并在弹出的目录选择对话框中直接点“选择文件夹”按钮(即在默认的Windows用户目录下启动VN Station):
随后会弹出配置VN Treader的对话框,注意此时请一定只勾选加载CTPTEST接口,千万不要同时勾选加载CTP接口,会因为dll冲突导致后续测试失败!!!!
在VN Trader主界面上,点击左上角的“系统”->“连接CTPTEST”,在弹出的登录配置对话框中输入期货公司提供的测试账号信息(产品名称就是AppID),点击连接按钮后登录CTP穿透式测试用服务器:
当VN Trader左下角的日志监控组件中,刷新出熟悉的日志信息,看到“合约信息获取成功”的时候,就意味着我们已经完成测试了!
第五步:期货公司校验
搞定上面的测试服务器连接登录后,就可以联系期货公司进行校验工作了,通常可以一次性直接通过,如果遇到不通过的情况请查看本文最后的常见问题来解决。
第六步:实盘接入
期货公司校验通过后,会将客户申请的AppID和AuthCode添加到实盘CTP的服务器上,此时只要把启动VN Trader Pro时,加载的接口由CTPTEST改为CTP,就可以连接上实盘交易环境,和以往一样进行量化交易了。
名词解释
穿透式监管
新的监管模式主要是明确了期货公司对于其客户交易行为的管理责任,因此需要对所有接入交易柜台系统的交易终端软件进行认证管理,防止坏人耍流氓后一走了之,难以追查。
穿透式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为例:
调用Init,开始连接
收到OnFrontConnected,确认连接成功
调用ReqAuthenticate,这一步填入AppID和AuthCode,进行认证
收到OnRspAuthenticate,确认认证成功
调用ReqUserLogin,这一步同样需要填入AppID,进行登录
收到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版本和服务器的版本不一致导致的,请按照以下流程排查:
是否同时import了CTP(CtpGateway)和CTPTEST(CtptestGateway)接口,如有请移除另一个(两个同时加载会冲突)
确保使用CtptestGateway来连接6.3.13穿透式测试环境,用CtpGateway来连接6.3.15穿透式实盘环境
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都对接准备好了。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)