3

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

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

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

我想我需要在每个应用程序中都有一个接受器和一个启动器(在 ordermatch 和一个 tradeclients 中)——我读过这是可能的和常见的,但找不到任何示例代码。我在正确的轨道上,还是有更好的方法来设置它?有人可以分享一些示例代码吗?我不打算将它用于实时交易,所以粗略的代码对我来说非常好。

提前致谢

布兰登

4

2 回答 2

4

同一个应用程序可以作为一个会话的发起者和不同会话的接受者。事实上,您可以从同一个应用程序中拥有多个 Acceptor/Initiator 会话。配置文件需要定义多个会话。或者您可以为每个会话设置单独的配置文件。

于 2011-08-30T19:50:42.783 回答
1

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

于 2011-05-10T08:41:09.417 回答