CTP:报单错误:不允许重复报单(原因及解决方案)

CTP:报单错误:不允许重复报单(原因及解决方案)

 

使用QT5.10+上期的CTP平台开发了一整套程序化交易系统,开发的过程中遇到了各种各样的问题,其中关于CTP接口的开发就遇到了很多坑,甚至很多坑是经过了一段时间的实盘测试才能被发现。本文所描述的就是其中一个问题。系统大部分运行时间报单都是正常的,偶尔会出现CTP:报单错误:不允许重复报答。出现该问题的原因有两个:

1、报单时候使用的报单编号重复了。

2、报单引用编号要求是递增的,如果高序号的报单引用编号报单成交后,低序号的报单引用编号再报单时也会出现这个问题。我遇到的就是这种情况。

在设计报单系统时采用了消息队列+线程池机制,将报单命令和普通查询命令放到了同一个消息队列中,为了更加有效的提高报单效率,每当有新的报单到来时,我会将报单插入到消息队列的对首。这样就会导致后入队列的大序号报单比小序号报单先下单的情况,也就是出现该错误。

解决方案:修改消息队列机制,分别存储普通消息和报单消息,报单消息采用队列的操作方式而堆栈的操作方式。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值