全天保持 FIX 连接连接或定期重新登录是标准做法吗?

Is it standard practice to keep a FIX connection connected all day long, or relogin periodically?

我在 Python 中使用 quickfix 包编写了一个程序,该程序包通过 FIX 连接到供应商。我们在早上登录,但直到一天结束才真正通过连接发送消息。问题是,我们不想让程序开一整天,而是宁愿在下午需要发送消息时重新登录。

供应商要求我们在配置中指定的开始和停止时间之间的整个持续时间内保持登录状态。这只能通过让我的程序全天保持打开状态来实现,因为如果我关闭它,那么供应商发送的消息就不会注册为我收到的消息。不过我没有发送注销消息。

编写一个程序通过 FIX 连接并在整个会话时间内保持 运行 是常见的做法吗?或者关闭程序是否可以接受,因为我不发送注销消息,并在当天晚些时候重新连接?

任何设计或最佳实践建议在这里都会有所帮助。

Is it common practice to write a program to connect via FIX and leave it running for the entire session time? Or is it acceptable to close the program, given I don't send a logout message, and reconnect at a later time in the day?

我不知道其他人做了什么,但我将 QuickFIX 与 Python 一起使用多年,从来没有遇到过任何问题 运行 我的系统一整天,或者出于任何原因定期关闭它并重新连接。最后,我一次让系统保持连接状态数周,因为这样我就可以记录数据。

我会说你的两个问题的答案都是肯定的。离开它是很常见的运行。此外,关闭程序也是可以接受的。

您的实施和您的交易对手总是存在边缘情况和特殊特征,因此您应该设法更多地了解他们为什么要求您不要断开连接。这对我来说听起来很奇怪。他们的 FIX 引擎不能做一些非常简单和标准的事情吗?

是的,长时间保持 FIX 会话 运行 是很常见的。那应该不是问题。

你不能只关闭你的程序,作为会话级 FIX.Heartbeat(35=0) 消息,定期发送(通常为 30 秒),以保持底层 TCP 连接 "open",并检查两端仍然向上并且 运行 正常。

根据您提供的详细信息,如果您的供应商(很可能是接受方)提出要求,可能是因为他们需要向您发送消息,而不会出现延迟。 如果您(发起方)当时未登录,他们将无法发送这些消息,因为他们将无法与您发起会话。

供应商也可能会监控会话,但作为发起者,这听起来很奇怪。 因为启动器正在等待连接。 他们更有可能监视意外的会话下降。

总而言之,这完全取决于您的供应商,您必须按照他们的说法...