我在卖方客户和进行货币兑换的交易所之间有一个流程。有两个FIX适配器 - 一个接收来自卖方的消息并将消息提供给流程。 另一个FIX引擎从进程中获取消息并将它们以FIX方式发送给交换。
每个FIX消息都有一个由标签34代替的唯一序列号。但是,似乎这些FIX引擎中的每一个都有一个INCOMING SEQUENCE编号(FIX引擎对于对方来说是期望的)和一个OUTGOING SEQUENCE NUMBER(什么是FIX引擎)正在派对方)。
这些内部序列号是否与标签34无关?
在此配置中,Sell side FIX ENGINE的内部序列号在登录时重置为1,1。 FIX ENGINE到交换的内部序列号不会重置为1,1。
我猜这是因为可能会在交易所停留GTC订单,并且两个引擎可能会在成功登录后“沉没”这些静止订单。
但是我不理解标签34和内部序列号之间的关系。
答案 0 :(得分:22)
任何FIX应用程序必须为每个会话维护两组序列号:传入和传出。这些序列号彼此独立。
如果您有两个FIX会话,那么每个会话都会跟踪一对序列。
提供商通常希望在断开连接之间维护序列号。这对于订单管理连接尤为重要,例如,如果由于某种原因连接中断,您肯定想知道您错过的任何订单填充。
这对于市场数据Feed来说并不那么重要。如果您的连接中断了一分钟,您不关心在您关闭时价格是多少 - 您只需要知道现在的最新价格。因此,序列在登录时重置。
但是我不理解标签34和内部序列号之间的关系。
这个问题听起来特定于引擎。您尚未指定正在使用的引擎。
但这应该不重要。您发送的每条消息都应增加34;内部存储用于此目的。您收到的每封邮件应该比最后一封邮件高34;再次,维护内部存储,以便应用程序可以跟踪此。
如果您使用的是任何QuickFIX引擎,那么您不必担心这一点。 QF为您处理所有这些。 (如果你认为你需要弄乱QuickFIX中的序列号,你可能错了。这是一个常见的新手问题。只需正确设置你的配置,引擎将完成其余的工作。)