2016-12-20 11 views
1

Я создаю довольно простые и мелкие автоматизированные торговые приложения на пару лет. Эти приложения представляют собой многопоточные настольные приложения, созданные с использованием JavaFX и взаимодействующие с сторонними торговыми приложениями (Bloomberg EMSX, TWS Interactive Broker и т. Д.) Через Java API, предоставляемые третьей стороной. По сути, у вас есть два настольных приложения, разговаривающих друг с другом через сокеты.Как создать торговое приложение (с QuickFIX/J и JavaFX)?

К этому сообщению ...
эти небольшие настольные автоматизированные торговые приложения больше не режут его, и пришло время серьезно. Мне нужно создать торговое приложение, которое должно взаимодействовать с сторонним торговым сервером (вместо настольного приложения) через FIX-Protocol. Я планирую использовать QuickFix/J, и я успешно проверил некоторые базовые функции, используя эту инфраструктуру.

Мой вопрос о дизайне: Мне кажется, мне нужно реализовать проект клиент-сервер-сервер. Это: клиент JavaFX, установленный на нескольких компьютерах пользователей; реализация QuickFIX/J, а также другие серверные службы, установленные на сервере; и сервер сторонних торговых приложений, на который будет работать наша реализация QuickFIX/J.

У меня нет проблем с созданием реализации QuickFIX/J и ее разговором с сторонним сервером.

Бит, о котором я не уверен, заключается в том, что клиент JavaFX разговаривает с моей версией QuickFIX/J на ​​сервере. Я не вижу, чтобы эта тема дизайна клиент-сервер обсуждалась в Интернете как в контексте JavaFX, так и в контексте системы FIX-Protocol.

Существует не так много поддержки сообщества или информации о разработке JavaFX, не говоря уже о более крупных темах лучшей практики или корпоративного дизайна. Какая информация, похоже, устарела. И QuickFix/J также кажется довольно специализированной темой.

Мое развитие связано прежде всего с однопоточными сетевыми стеками JEE.

У кого-нибудь есть опыт работы с этими проблемами дизайна или создания подобных торговых приложений с использованием JavaFX (или Swing) и QuickFIX/J (или другого механизма Java FIX-Protocol)?

Если да, то я был бы признателен за любые замечания, которые могут возникнуть в отношении того, как вы разработали свое торговое приложение (ы), наилучшую практику и реализацию, а также любые ресурсы, на которые вы можете направить меня.

Спасибо.

+1

Не уверен, если это полезно, но идти к человеку на JavaFX в корпоративных приложениях, вероятно Adam Bien. [Эта статья] (http://www.oracle.com/technetwork/articles/java/javafxinteg-2062777.html) - довольно хорошее резюме его подхода. Я думаю, что я подошел бы к этому, разоблачив реализацию QuickFIX/J как конечную точку REST и используя методы, описанные Adam, чтобы позволить клиентам JavaFX общаться с ним. (Хотя вы могли бы также вырезать «среднего человека» и включить вашу реализацию QuickFIX/J как часть клиента, возможно?) –

+0

Спасибо James_D. Это не то, на что я надеялся, но на что посмотреть :) – Amy

ответ

0

Хорошо, после некоторых исследований и игр, я думаю, что у меня есть ответ на мой собственный вопрос.

Мой ответ - построить мост FIX (с использованием QuickFix/J), который настроен на несколько сеансов, к которым могут подключаться торговые приложения. Мост будет размещен на сервере. Затем этот мост передает сообщения на сторонний сервер FIX.

Или другими словами ...

1) JavaFX Торговая Приложения используют QuickFix/J (инициатор), чтобы поговорить с ...

2) QuickFix/J (акцептор) мост, который передает сообщения на ...

3) Мост QuickFix/J (инициатор), который передает сообщения на ...

4) FIX сервер третьей стороной (акцептор)

(и, конечно, поток идет в обратном направлении тоже)

Вы можете добавить несколько сеансов (Напр., За пользователем алго комбинации) к FIX мост по мере необходимости. Но мост подключится к стороннему серверу FIX, используя только один сеанс, который был предоставлен.

Нет необходимости катить собственный клиентский серверный уровень связи для торговых приложений JavaFX ... просто используйте QuickFix/J там.

Ключ с мостом состоит в том, что необходимы как акцептор, так и инициатор. Акцептор запускается первым: он будет принимать соединения от торговых приложений и от инициатора моста. Затем запускается инициатор: он инициирует соединение с сторонним сервером FIX и с акцептором моста. Торговые приложения инициируют свои собственные соединения FIX с акцептором моста.

Конечно, для повторной отправки/пересылки сообщений внутри моста требуется небольшая кодировка. Но эта часть довольно проста.

Я создал простую рабочую демонстрацию, используя этот дизайн. Будем надеяться, что реальная вещь в действие будет идти гладко.

Вот ссылки на рабочий демонстрационный проект (ы):

demo-fix-bridge

 Смежные вопросы

  • Нет связанных вопросов^_^