算法交易

FIX 4.2 中 MsgSeqNum 的重新排序

  • September 18, 2015

我正在嘗試使用 QuickFIX for FIX 4.2 實現以下功能

  1. 發送幾個訂單並確保它們已滿。
  2. 然後斷開連接。
  3. 將傳入(來自代理)的序列號更改為較小的數字。例如,如果它是 300,我現在將其更改為 260。
  4. 重新登錄。
  5. 我的應用程序應該檢測到來自 Broker 的序列號,低於預期,我這邊應該自動向 Broker 發送類型 2(重新發送請求)消息。
  6. 經紀人將填補/發送缺失的數據。

在我嘗試第 3 步(即,將序列號從代理更改為較低值)然後嘗試登錄時,我的應用程序立即註銷並顯示錯誤消息 MsgSeqNum 低於預期值。

我熟悉 ResetSequenceNumFlag、ResetOnLogon、ResetOnLogout 標誌,但它們似乎不是上述過程的正確選擇。

我正在使用 QuickFIX/n,最初沒有更改序列號的方法,但我們要求 QuickFIX/n 開發人員社區添加更改序列號的方法,並在以後的版本中添加了Session.NextTargetMsgSeqNumSession.NextSenderMsgSeqNum以進行更改序號。

我可以使用Session.NextTargetMsgSeqNumSession.NextSenderMsgSeqNum方法根據我的要求輕鬆更改序列號。

您確定這背後有實際案例嗎(尤其是步驟#3)。經紀人不會在會話中間切換回序列號。如果你絕對需要支持這個使用 Sesssion.setNextTargetMsgSeqNum() API

引用自:https://quant.stackexchange.com/questions/3383