Quickfix:同一应用程序中的acceptor和initiator?

时间:2011-05-10 03:13:02

标签: c++ quickfix fix-protocol

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

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

我有一个限额订单的单独实施,并希望破解收到的消息(订单,取消等)并将它们存储在我的限价订单簿中。我的订单看着这本书根据它做出交易决定。问题是,我无法弄清楚如何让ordermatch将所有更新发送到此客户端。此外,我很难弄清楚如何“囤积”贸易客户,不仅要发送订单,还要接收并破解它们。

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

提前致谢

布兰登

2 个答案:

答案 0 :(得分:3)

相同的应用程序可以充当一个会话的启动器和不同会话的接受器。 事实上,您可以从同一个应用程序中拥有多个Acceptor / Initiator会话。 配置文件需要定义多个会话。 或者,您可以为每个会话分别配置文件。

答案 1 :(得分:0)

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