快速修复:同一应用程序中的接受器和启动器

Quickfix: acceptor and initator in same application?

本文关键字:启动 应用程序      更新时间:2023-10-16

我是快速修复的新手(我是一个试图自学的学生),并且已经从 quickfix.org 下载了示例(在 C++ 中),并且能够将 ordermatch 连接到 tradeclient 并让他们相互交谈。 我更改了订单匹配的配置文件以允许多个客户端并使其正常工作(ordermatch 可以从多个客户端接收订单并管理订单簿)。

我一直在尝试找到一种方法来更改订单匹配以将其确认消息发送给所有客户端,而不仅仅是发件人。

我有一个单独的限价订单簿实现,并希望破解传入的消息(订单、取消等)并将它们存储在我的限价订单簿中。 我的订单簿观察这本书,并根据它做出交易决策。 问题是,我不知道如何让订单匹配将所有更新发送到此客户端。 此外,我很难弄清楚如何"加油"交易客户,不仅发送订单,而且接收和破解它们。

我想我需要在每个应用程序中都有一个接受器和一个发起者(在订单匹配和其中一个交易客户端中)——我已经读到这是可能的和常见的,但找不到任何示例代码。 我在这里走在正确的轨道上,还是有更好的方法来设置它? 有人有一些可以分享的示例代码吗? 我不打算将其用于实时交易,因此粗略的代码对我来说非常好。

提前致谢

布兰登

同一应用程序可以充当一个会话的发起方和不同会话的接受者。事实上,您可以从同一应用程序拥有多个接受器/发起方会话。配置文件需要定义多个会话。或者,您可以为每个会话提供单独的配置文件。

如果我理解正确,我认为您要做的是拦截 OMS 和代理(c.f. 客户端和服务器)之间的消息,并根据它们包含的内容进行操作。有几种方法可以做到这一点,包括在 TCP 层拦截,但我认为最简单的方法可能是按照 @DumbCoder 的建议使用 2 个单独的程序,并作为客户端的接受器连接到其中一个,处理消息,然后通过另一个协议将它们传递给另一个程序,然后从另一个程序发送它们。从理论上讲,您可以在程序中创建引擎的另一个实例,并在创建引擎的每个实例时使用不同的配置文件(当调用 FIX::FileStoreFactory storeFactory(*settings); 时)。但是,我从未见过这样做,因此觉得它可能会导致问题。如果您确实尝试使用此方法,我强烈建议将启动器和连接器放在不同的 dll 中,这可能只是将两个引擎实例分开。