购买者通常可以重置传出和传出输入序列为1并仍然查询与过去序列相关的活动位置或者这是否丢失?
哪些FIX消息&标签用于识别活动位置如果您遇到数据故障并丢失了所有记录?如果您只丢失了过去一小时的活动记录,同样,您如何查询交易活动的最后一小时?
答案 0 :(得分:2)
首先,买家通常不应该自己重置任何序列号(即手动)。序列号的处理应由功能良好的会话层处理。幸运的是,任何体面的FIX引擎都会为你处理这个会话层,任何QuickFIX引擎(QuickFIX,QuickFIX / J,QuickFIX / N,......)都能很好地实现会话层。
话虽如此,如果您选择手动重置这些序列号,您当然可以“查询”活动位置,如果您通过状态消息表示检索订单状态。因此,对方不会丢失与订单有关的信息。在你的结尾,你应该自己跟踪订单状态,再次,重置序列号对此没有影响(除非你这样实现它,这是错误的。)
E.g。如果市场上的订单仍然是开放的,例如它的数量为50,则在序列重置后,您仍会收到任何后续填充的执行报告。您还可以发送状态消息以获取订单的状态概览。
现在关于数据丢失,买方(或卖方)负责保证数据完整性。您应该在数据库中维护自己的订单状态(或者与数据存储一样重要)。 FIX只是通信协议,而不是为您存储数据的协议。
除了存储与订单状态有关的数据外,您还应该有适当的备份策略和数据完整性策略来解决灾难。这意味着备份,完整和事务,存储在与数据中心不同的位置等。
AFAICT 4.2中没有FIX消息来从您的对手方检索过去的订单状态(我不熟悉版本> 4.2)。