CTP:報單錯誤:不允許重複報單(原因及解決方案)

CTP:報單錯誤:不允許重複報單(原因及解決方案)

 

使用QT5.10+上期的CTP平臺開發了一整套程序化交易系統,開發的過程中遇到了各種各樣的問題,其中關於CTP接口的開發就遇到了很多坑,甚至很多坑是經過了一段時間的實盤測試才能被發現。本文所描述的就是其中一個問題。系統大部分運行時間報單都是正常的,偶爾會出現CTP:報單錯誤:不允許重複報答。出現該問題的原因有兩個:

1、報單時候使用的報單編號重複了。

2、報單引用編號要求是遞增的,如果高序號的報單引用編號報單成交後,低序號的報單引用編號再報單時也會出現這個問題。我遇到的就是這種情況。

在設計報單系統時採用了消息隊列+線程池機制,將報單命令和普通查詢命令放到了同一個消息隊列中,爲了更加有效的提高報單效率,每當有新的報單到來時,我會將報單插入到消息隊列的對首。這樣就會導致後入隊列的大序號報單比小序號報單先下單的情況,也就是出現該錯誤。

解決方案:修改消息隊列機制,分別存儲普通消息和報單消息,報單消息採用隊列的操作方式而堆棧的操作方式。

歡迎交流討論:13426137030(同微信)

2019年3月30日於北京銀谷大廈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章