VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 42
声望: 4

实盘时发现有三个单子因价格达到触发价被触发,但单子一直处于“提交中”的状态。用的CTP接口,网络状态应该也是正常的,行情一直在正常刷新。
搜了下论坛,好像不少人也出现同样的问题,答复里提到唯一可能有用的解决办法是及时重启vnstation,但这应该不是个正常的解决办法,没有找到问题的根源。
还在查代码中,搜帖子发现这个问题出现一年多了,最新的2.1.8版本还是存在这个问题。
因为经常开单失败,这个bug某种程度上导致了整个框架基本不可用,也希望开发团队也重视下这个问题,你们查找和解决问题应该比用户要快速有效。

description

Member
avatar
加入于:
帖子: 42
声望: 4

看了下日志,发现了一些线索,也许可以解答我上述的问题,以及其他有类似情况(一直处于提交但无法成交的状态)的问题:

2021-01-20 20:21:53,292 INFO: 交易服务器连接成功
2021-01-20 20:21:53,308 INFO: 行情服务器连接成功
2021-01-20 20:21:53,636 INFO: 交易服务器授权验证成功
2021-01-20 20:21:53,636 INFO: 行情服务器登录成功
2021-01-20 20:21:53,667 INFO: 交易服务器登录成功
2021-01-20 20:21:53,714 INFO: 结算信息确认成功
2021-01-20 20:21:59,870 INFO: 合约信息查询成功
2021-01-20 20:22:54,100 INFO: 交易服务器连接成功
2021-01-20 20:22:54,110 INFO: 行情服务器连接成功
2021-01-20 20:22:54,435 INFO: 交易服务器授权验证成功
2021-01-20 20:22:54,436 INFO: 行情服务器登录成功
2021-01-20 20:22:54,467 INFO: 交易服务器登录成功
2021-01-20 20:22:54,502 INFO: 结算信息确认成功
2021-01-20 20:23:00,850 INFO: 合约信息查询成功
2021-01-21 02:37:12,008 INFO: 行情服务器连接断开,原因4097
2021-01-21 02:37:12,055 INFO: 交易服务器连接断开,原因4097
2021-01-21 07:35:43,568 INFO: 行情服务器连接成功
2021-01-21 07:35:43,599 INFO: 行情服务器登录成功
2021-01-21 07:39:02,583 INFO: 交易服务器连接成功
2021-01-21 07:42:58,141 INFO: 交易服务器授权验证失败,代码:8,信息:CTP:前置不活跃

我每天的习惯是晚上21点开盘前启动程序,直到第二天下午15点收盘后再关闭,其间程序一直开着不关闭。
看日志,凌晨2:30上期所收盘后,行情和交易服务器都断开了与客户程序的连接。到早上7:35 vntrader重连上行情服务器,7:39重连上交易服务器,但7:42的时候交易服务器授权验证失败,信息为“CTP前置不活跃”,暂时不知道确切意思是什么,是否是其授权验证模块未启动工作?
所以这时候,交易服务器是连接成功,但未完成授权登录,即账户处于不可交易状态。这个状态一直会保持到下一个交易时段结束。在这期间,所有触发的单子都是不可能成交的。
按以往使用的期货公司的软件经验看,一般每个交易时段开盘前1小时内才能登录交易账户,假设早上9点开盘,那么8点之前一般是登录不了交易账户的,可能这个时候登录验证没有开,或者开了也不让登录。看交易日志,早上8点前尝试了登录授权,然后失败了。这之后没有再继续尝试,可能就导致了大家反映的这个问题。有些人重启程序后下单就正常,就是在正常的时间重新授权验证成功了,所以下单也正常了。
解决办法其实很简单,就是如果授权验证失败,程序就每隔一个周期(如60秒)重复尝试授权验证,直到成功为止。虽然可以手动关闭程序再启动,但始终觉得是种比较弱的解决办法。自动化交易系统即使不能724小时运行,做到124小时连续运行应该是个基本要求。
另外,软件的主界面上建议增加一个“交易授权成功”或”登录“成功的状态标识,能显式地反映授权状态。
上述是根据日志做的一个分析,大家也可以一起验证一下。

Member
avatar
加入于:
帖子: 5080
声望: 306

现在CTP夜盘会关闭系统,早上开盘前重启了。

所以夜盘收盘后也要关闭VN Trader盘前再重启了

Member
avatar
加入于:
帖子: 42
声望: 4

这个问题原因在于授权未成功,如果在框架的连接处理模块里增加授权状态的监测,检查到授权失败时定时重新申请授权,直到授权成功,应该可以解决这个问题。这样的话,用户可以在一个完整交易日内不用重启程序,做到1 * 24小时的不间断运行。
请问团队是否会考虑做个这么个小的修改?

Member
avatar
加入于:
帖子: 7
声望: 0

帮顶

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】