穿透测试流程

这是知乎很多年前进行穿透测试的流程,与现在大差不差。如知乎连接
我的申请流程是:
1.申请穿透式接入
2.填写表格。其中appid可以随便填。但是要记得跟其他人有区分度。
3.期货公司返回测试信息,期货公司返回的信息如下。

description

4.回到vnpy,启动vnpy的ctp测试。
description

先登录评测系统,然后登录仿真系统,即可。
注意,这里不是用的实盘账号,用的是期货公司给的评测CTP账号和仿真CTP账号。如果报“CTP用户不活跃”,大概就是账号用错环境了

这里还有个巨坑,期货公司用的评测系统的CTP版本可能和仿真系统的CTP版本不一致,一定要确认好用哪个CTP版本,要来.dll或者.so文件后,然后在按照下面的decode err的解法处理。

常见问题

1.行情服务器段看,原因4097,但没有其他提示

description
这个大概率是因为期货公司服务器没有开,一般需要在期货开盘的时间登录,非期货开盘的时间是登录不上去的。

2.行情服务器断开,shake hand error:decode err

description
这是因为期货公司使用的CTP版本和你目前使用的CTP版本不一致,所以报了上述错误。找期货公司要CTP的连接文件,要来的文件会是这个样子。分为Linux和windows,根据自己的系统版本安装即可。

description

① 对于windows
在网上找到的资料都是编译后重新安装,问题是linux编译重新安装我理解,windows是什么怎么重新安装啊,windows用的是VeighNa Station又不是github上下载的项目ε=ε=ε=(#>д<)ノ
经过艰苦探索,总算成功了

首先,本地准备一份vnpy_ctptest, 直接从github克隆下来即可。
1.替换dll文件,路径是vnpy_ctptest\vnpy_ctptest\api\
2.替换.h头文件,路径是vnpy_ctptest\vnpy_ctptest\api\include\ctp\
3.在vnpy_ctptest环境下,打开cmd,使用pip install -e .
注意命令后面有个点,代表当前目录。这一步主要是将vnpy_ctptest重新编译

description

4.编译过后,在vnpy_ctptest\build\cp313会生成.pyd文件

description

5.找到VeighNa Station的安装位置,进入vnpy\Lib\site-packages\vnpy_ctptest\api文件夹。使用期货公司给的.dll文件替换此文件夹中的dll文件,使用刚才编译成功的.pyd和.lib文件替换此目录中的.lib和.pyd文件。
可以在操作之前将vnpy_ctptest备份一份,如果搞岔劈了,可以复制回来。不然又得使用VeighNa Station的安装包安装,巨慢。

description

② 对于Linux
1.从git克隆一份vnpy_ctptest到vnpy的同级目录。

description

2.替换掉vnpy_ctptest/api/include/ctp/文件夹下的.h文件,替换掉vnpy_ctptest/api文件夹下的.so文件。
注意,期货公司给的.so文件可能缺少lib前缀,需要加上。

description

3.替换掉之后,回到vnpy文件夹。删除掉现有的依赖库中的vnpy_ctptest。我使用的是venv,路径在.venv/lib/python3.13/site-packages/vnpy_ctptest,将vnpy_ctptest和vnpy_ctptest-6.7.2.0.dist-info都删除掉。
description

5.从本地安装vnpy_ctptest,pip install ../vnpy_ctptest

description