我正在与一个经纪人合作,该经纪人告诉我不要在登录时重置序列号,除非在本周初 . 但是,如果序列号没有出现问题,我应该在登录消息中使用标记141来请求序列号重置 . 显然我可以检查被拒绝的登录因为序列号被拒绝而被拒绝,并在onlogon中设置标签,但是如何告诉quickfix它需要重置它的序列号?这是一个难以测试的功能,因为连接问题使得序列号不会经常发生 .
我使用的是Quickfix的C版本 .
您可以在 LOGOUT 消息中监视正确的消息 . 如果它像"msgseqnum too low"那样设置一个标志来重置下一个 LOGON 消息 . 这是来自 FIX::Application::fromAdmin 实现 .
LOGOUT
LOGON
FIX::Application::fromAdmin
然后在 FIX::Application::toAdmin 实现中检查消息是否为 LOGON 并且设置了重置标志 . 如果是,请查找您的会话( FIX::Session::lookupSession )并调用 setNextSenderMsgSeqNum(1) 和 setNextTargetMsgSeqNum(1) . 同时重置你的旗帜:)
FIX::Application::toAdmin
FIX::Session::lookupSession
setNextSenderMsgSeqNum(1)
setNextTargetMsgSeqNum(1)
1 回答
您可以在
LOGOUT
消息中监视正确的消息 . 如果它像"msgseqnum too low"那样设置一个标志来重置下一个LOGON
消息 . 这是来自FIX::Application::fromAdmin
实现 .然后在
FIX::Application::toAdmin
实现中检查消息是否为LOGON
并且设置了重置标志 . 如果是,请查找您的会话(FIX::Session::lookupSession
)并调用setNextSenderMsgSeqNum(1)
和setNextTargetMsgSeqNum(1)
. 同时重置你的旗帜:)