写在前面
由于6月14日当天,所有期货公司的柜台系统全部强制升级为穿透式监管版本,所有非穿透式的柜台全部下线,所以基于原来的CTP API的用户将无法交易,所以进行程序化交易的个人或者机构如果想继续实盘交易,都将需要接入穿透式CTP API。下面还是以vn.py的官方教程进行配置。
由于本文主要内容是来自vn.py的官方教程,教程地址在文末,所以本着自己操作一遍再整理,也是为了加深自己对穿透式CTP API接入的过程和理解其这样做的目的。
vn.py官方教程将穿透式CTP API接入分为了六步,一般来说,按照这个流程配置就没有什么问题。
一、申请穿透式接入
对你的交易终端提出穿透式接入申请时,只需要电话联系你的客户经理,然后向期货公司提出申请穿透式接入测试。
二、填表提交AppID
提交表单信息其实就是将你的终端的网络地址、硬件信息、交易软件信息等。不同期货公司需要的信息不同,整体上包括:
- CPU序列号
- 硬盘序列号
- 硬盘主分区盘符和大小
- 网卡MAC地址
- 内网IP和外网IP
- 交易程序的AppID
获取各种信息的方式在vn.py的教程中也贴心的提供了,下面再整理一下:
1、CPU序列号
从cmd中输入以下命令:
wmic cpu get processorid
2、硬盘序列号以及硬盘主分区盘符和大小:
从cmd中输入以下命令分别获取:
diskpart
select disk 0
detail disk
3、网卡MAC地址、内网IP和外网IP
在cmd中输入以下命令,“以太网适配器”中的“物理地址”就是MAC地址;“IPV4地址”就是内网IP。
ipconfig /all
访问www.ip138.com获取你的外网IP,或者直接百度搜索“IP”就可以获取你的外网IP。
4、AppID
AppID就是你的交易程序的ID,是以个人身份申请的,格式为:
client_xxxx_yyyy
其中xxxx是软件名称,yyyy是版本号,这两个字段都是自己定义的,为了避免重复,所以需要设置的稍微不同一些。
以vn.py为例的话,AppID可以设置为以下,其中888的部分,是自定义的一个字符串,主要为了避免你的AppID和其他人重复。
client_vnpy888_2.0
三、拿到AuthCode
提交申请表后,一般当天或者第二天就能拿到期货公司针对你的这个AppID提供的测试账号信息,然后就可以以这个测试账号进行测试,测试账号信息包括:
- 用户名、密码
- 经纪商代码、仿真测试服务器地址(交易、行情)
- 产品名称(你填的AppID)、授权编码(AuthCode)
四、仿真测试
下面以VN Studio为例进行操作。在打开VN Trader Pro之后的对话框中,由之前的CTP接口换成CTPTEST接口,注意两者不能同时存在。之前一直不太了解CTPTEST这个接口的作用是什么,现在终于知道是为了专门进行穿透式CTP API接入测试用的。
登录之后,原来登录CTP的地方现在是登录CTPTEST了,然后在登录信息框中输入期货公司提供的测试账号等信息:
如果底部的日志监控组件中刷新出日志信息并看到“合约信息获取成功”时,就意味着我们完成了测试。
五、期货公司校验
搞定上面的测试服务器连接登录后,就可以联系期货公司进行校验工作了,通常可以一次性直接通过。
六、实盘接入
期货公司校验通过后,会将客户申请的AppID和AuthCode添加到实盘CTP的服务器上,此时只要把启动VN Trader Pro时,加载的接口由CTPTEST改为CTP,就可以连接上实盘交易环境,和以往一样进行量化交易了。
其他
关于 CTP 6.3.13 和 CTPTEST 6.3.15,这俩是两套不同的API地址,具体的区别如下:
6.3.13
CTP穿透式柜台的仿真测试版本,也是CTPTEST接口中使用的API版本,所有客户的仿真接入认证测试都必须使用该版本!主要因为该版API采集客户的信息是没有加密的,期货公司可以在后台查看来进行认证工作。
6.3.15
CTP穿透式柜台的实盘交易版本,也是CTP接口中使用的API版本,完成仿真接入测试后,必须使用该版本才能连接实盘交易的CTP柜台。该版本的采集信息是安全加密的,期货公司的IT用后台系统也看不到。
API的内部工作流程:
以CTP为例:
- 调用Init,开始连接
- 收到OnFrontConnected,确认连接成功
- 调用ReqAuthenticate,这一步填入AppID和AuthCode,进行认证
- 收到OnRspAuthenticate,确认认证成功
- 调用ReqUserLogin,这一步同样需要填入AppID,进行登录
- 收到OnRspUserLogin,确认登录成功
- 只有交易接口TD需要进行认证,MD直接登录就行。每一步出错的话都会有相- 应的报错输出提示,查看错误信息内容后照着修改就行。
注意:
6.3.13的测试环境目前仅仅为了满足用户的穿透式版本测试需求(也就是能成功登录上来查询一下合约信息等),尚未提供第一套或者第二套环境中的仿真行情以及仿真交易功能,所以是没有行情的。
6.3.15的实盘穿透式API目前只有中信证券提供了仿真测试环境。