在 quickfix 中重置序列号

reset sequence number in quickfix

我正在与经纪人合作,经纪人告诉我不要在登录时重置序列号,除非是在本周初。 但是,如果序列号乱七八糟,我应该在登录消息中使用标记 141 来请求重置序列号。显然我可以检查被拒绝的登录是否因为序列号太低而被拒绝,并在 onlogon 中设置标签,但是我如何告诉 quickfix 它需要重置它的序列号?这是一个很难测试的功能,因为影响序列号的连接问题并不经常发生。

我正在使用 C++ 版本的 quickfix。

您可以在 LOGOUT 消息中监视正确的消息。如果它类似于 "msgseqnum too low" 设置一个标志以在下一条 LOGON 消息上重置。这是来自 FIX::Application::fromAdmin 实施。

然后在您的 FIX::Application::toAdmin 实施中检查消息是否为 LOGON 并且是否设置了重置标志。如果是这样,请查找您的会话 (FIX::Session::lookupSession) 并调用 setNextSenderMsgSeqNum(1)setNextTargetMsgSeqNum(1)。同时重置你的旗帜:)