Quickfix: акцептор и инициатор в одном приложении? - PullRequest
2 голосов
/ 10 мая 2011

Я новичок в quickfix (я студент, который пытается учить себя), я скачал примеры с quickfix.org (на c ++) и смог подключить ordermatch к tradeclient и заставить их общаться друг с другом.Я изменил конфигурационный файл для ordermatch, чтобы разрешить работу нескольких клиентов, и получил его работу (ordermatch может получать заказы от нескольких клиентов и управлять книгой заказов).

Я пытался найти способ изменить соответствие заказа, чтобы отправлять сообщения подтверждения ВСЕМ клиентам, а не только отправителю.

У меня есть отдельная реализация книги предельных заказов, и я хочу взломать входящие сообщения (заказы, отмены и т. Д.) И сохранить их в моей книге предельных заказов.Моя книга заказов следит за книгой и на ее основе принимает торговые решения.Проблема в том, что я не могу понять, как получить ordermatch для отправки всех обновлений этому клиенту.Кроме того, мне трудно понять, как «выковать» торгового клиента, чтобы не только отправлять заказы, но и получать и взламывать их.

Я думаю, что мне нужно иметь акцептор и инициатор вкаждое приложение (в порядке соответствия и в одном из торговых клиентов) - я читал, что это возможно и распространено, но не может найти пример кода.Я на правильном пути здесь, или есть лучший способ настроить это?У кого-нибудь есть пример кода, которым он может поделиться?Я не планирую использовать это для реальной торговли, так что грубый код мне идеально подходит.

Заранее спасибо

Брэндон

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Одно и то же приложение может действовать как Инициатор для одного сеанса и Акцептор для другого сеанса. Infact вы можете иметь несколько сессий Acceptor / Initiator из одного приложения. Файл конфигурации должен определять несколько сеансов. Или вы можете иметь отдельный файл конфигурации для каждой сессии.

0 голосов
/ 10 мая 2011

Если я правильно понимаю, я думаю, что вы пытаетесь перехватить сообщения между OMS и брокером (например, клиент и сервер) и действовать в зависимости от того, что они содержат. Есть несколько способов, которыми вы могли бы сделать это, включая перехват на уровне TCP, но я думаю, что самый простой способ - это использовать две отдельные программы, как предлагает @DumbCoder, и подключиться к одной из них в качестве приемщика от ваших клиентов, обработать сообщения, а затем передать их другой программе по другому протоколу, а затем отправить их из другой программы. Теоретически вы можете создать другой экземпляр движка в вашей программе и, используя разные конфигурационные файлы при создании (когда вызывается FIX :: FileStoreFactory storeFactory (* settings);) каждого экземпляра движка. Однако , я никогда не видел, чтобы это было сделано, и поэтому чувствую, что это может вызвать проблемы. Если вы попробуете этот метод, я настоятельно рекомендую поместить инициатор и соединитель в разные библиотеки, которые могут просто разделить два экземпляра движка.

...