算法交易
FIX 4.2 中 MsgSeqNum 的重新排序
我正在嘗試使用 QuickFIX for FIX 4.2 實現以下功能
- 發送幾個訂單並確保它們已滿。
- 然後斷開連接。
- 將傳入(來自代理)的序列號更改為較小的數字。例如,如果它是 300,我現在將其更改為 260。
- 重新登錄。
- 我的應用程序應該檢測到來自 Broker 的序列號,低於預期,我這邊應該自動向 Broker 發送類型 2(重新發送請求)消息。
- 經紀人將填補/發送缺失的數據。
在我嘗試第 3 步(即,將序列號從代理更改為較低值)然後嘗試登錄時,我的應用程序立即註銷並顯示錯誤消息 MsgSeqNum 低於預期值。
我熟悉 ResetSequenceNumFlag、ResetOnLogon、ResetOnLogout 標誌,但它們似乎不是上述過程的正確選擇。
我正在使用 QuickFIX/n,最初沒有更改序列號的方法,但我們要求 QuickFIX/n 開發人員社區添加更改序列號的方法,並在以後的版本中添加了Session.NextTargetMsgSeqNum和Session.NextSenderMsgSeqNum以進行更改序號。
我可以使用Session.NextTargetMsgSeqNum和Session.NextSenderMsgSeqNum方法根據我的要求輕鬆更改序列號。
您確定這背後有實際案例嗎(尤其是步驟#3)。經紀人不會在會話中間切換回序列號。如果你絕對需要支持這個使用 Sesssion.setNextTargetMsgSeqNum() API