rss

Профиль компании

Финансовые компании

Блог компании Os_Engine | Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

Всех приветствую! Сегодня расскажу, как устроен код Плазы в OsEngine. Для понимая достаточно будет минимальных знаний C#, здесь не будет какой-либо сложной логики. Пройдёмся по основному.

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

OsEngine – проект с открытым кодом, поэтому посмотреть раздел, относящийся к коннектору можно прямо сейчас онлайн по адресу https://github.com/AlexWan/OsEngine

Также можно просто скачать весь проект и открыть его в Visual Studio, чтобы смотреть более наглядно.

  Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

Структура коннектора не имеет каких-либо сложных объектов. В папке Entity находятся классы-сущности для удобной передачи данных внутри коннектора.

Сам коннектор расположен в классе PlazaServer и имеет следующую архитектуру.

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

Всего в коннекторе 13 регионов. Так как Плаза получает всю рыночную информацию через потоки и не имеет прямого способа запросить какие-либо данные, то архитектура коннектора отличается от большинства других в OsEngine.

При включении коннектор читает параметры конфигурации, в нашем случае это ключ для подключения, для тестового сервера это 11111111, для реального сервера это ключ сертификата. Также кол-во заявок, сервис Cancel on disconnect и тип соединения (по дефолту p2lrpcq, т.к он быстрее, но для удобства разработки лучше выбрать p2tcp)

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

Подключение начинается с запуска метода Connection. Сам метод выглядит так.

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.
В первом регионе 1 Constructor, Connection, Dispose содержится конструктор с двумя потоками: PrimeWorkerThreadSpace и HeartBeatSender. С HeartBeatSender думаю все понятно, в нем каждую секунду отправляются пинги, которые уведомляют сервер о том, что наше ПО активно.

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

А вот поток PrimeWorkerThreadSpace является основным потоком коннектора. В нем каждую итерацию цикла проверяется статус объекта Connection, который отвечает за подключение к роутеру. Если у роутера произошла какая-то ошибка, то сразу произойдет попытка переподключения. Помимо объекта Connection в данном потоке также опрашиваются статусы Листнеров и Паблишера, если у них происходит ошибка, то также предпринимается попытка переподключения.

Листнеры как раз отвечают за подписку на потоки, которые мы хотим получать. В OsEngine реализована работа со следующими потоками:

– FORTS_TRADE_REPL, заявки и сделки пользователя, таблицы user_deal, orders_log.

– FORTS_DEALS_REPL, поток анонимных сделок, таблица deal.

– FORTS_AGGR20_REPL, рисуем стакан, таблица orders_aggr

– FORTS_POS_REPL, информация о позициях, таблица position

– FORTS_PART_REPL, информация о средствах и лимитах, таблица part

– FORTS_REFDATA_REPL, справочная и сессионная информация, таблица fut_sess_contents.

– FORTS_USERORDERBOOK_REPL, Заявки пользователя: срез стакана, таблица orders

Пример строк для подключения листнеров находится в регионе 2 Properties, Connection strings.

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

В регионе 4 Check for a listener connection находятся методы, которые опрашивают статусы листнеров, производят их подключение и переподключение. Данные методы вызываются из главного потока коннектора PrimeWorkerThreadSpace каждую итерацию.

Для примера разберем метод CheckListnerTrades
Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

Остальные методы работают аналогично.

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

В методе-подписчике происходит обработка полученных данных из потоков.

В регионах 5, 6 ,7, 8, 9 находятся методы-подписчики, которые получают данные от потоков, на которые они были подписаны. В регионе 10 Trade находятся методы для отправки ордеров: выставление заявок, отмена заявок и изменение заявок.

Коннектор Plaza в OsEngine представляет собой комплексное решение для торговли на срочном рынке, обеспечивающее удобство и эффективность работы трейдеров. За счет открытого кода данный коннектор можно легко расширять и внедрять новый необходимый для торговли функционал.

 

Всем спасибо за внимание! Если есть какие-либо пожелания или советы по Плазе, пишите в комментариях.

Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support

Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php

 Коннектор Plaza II. Обзор кода в OsEngine – архитектура и модули.

★2

теги блога SuSaNoo

....все тэги



UPDONW
Новый дизайн