此后修复序列重置和状态访问

FIX sequence reset & status access thereafter

买家通常可以将传出和传入序列都重置为 1 并仍然查询与过去序列相关的活动位置吗?或者这是丢失了吗?

如果您遇到数据故障并丢失了所有记录,哪些 FIX 消息和标签用于识别活动位置?如果您只丢失了最后一小时的 activity 记录,同样,您如何查询仅最后一小时的交易 activity?

首先,买家通常不应自行(即手动)重置任何序列号。序列号的处理应该由功能良好的会话层来处理。幸运的是,任何体面的 FIX 引擎都会为您处理这个会话层,并且任何 QuickFIX 引擎(QuickFIX、QuickFIX/J、QuickFIX/N、...)都能很好地实现会话层。

话虽如此,如果您选择手动重置这些序列号,您当然仍然可以 "query" 活跃头寸,如果您的意思是通过状态消息检索订单状态。与订单有关的信息不会因此在交易对手处丢失。在你这边,你应该自己跟踪订单状态,同样,重置序列号对此没有影响(除非你这样实现它,这是错误的)。

例如如果订单在市场上仍然未平仓,例如它的数量为 50,满分 100,您仍会在序列重置后收到任何后续订单的执行报告。您还可以发送状态消息以获取订单的状态概览。

现在关于数据丢失,买方(或卖方)有责任保证数据的完整性。您应该在您的数据库(或任何算作您的数据存储)中维护您自己的订单状态。 FIX 只是用于通信的协议,而不是为您存储数据的协议。

除了存储与订单状态相关的数据外,您还应该制定合适的备份策略和数据完整性策略来应对灾难。这意味着完整备份和事务性备份存储在与您的数据中心等不同的位置。

A​​FAICT 4.2 中没有 FIX 消息来从你的交易对手处检索过去的订单状态(我不熟悉 > 4.2 的版本)。