Ордера в OsEngine высылаются в IserverRealization не напрямую, а через отдельную очередь. Посмотрим на неё одним глазком.

1. Нужные нам классы в проекте.

2. Какие методы в IServerRealizationвызываются данным потоком?

- Вызывается из AServer, для чего там работает поток в методе: ExecutorOrdersThreadArea().
- Вызывается, только если состояние сервера ServerConnectStatus == Connect.
- Вызывается, только если прошло не менее N секунд в поле WaitTimeSecondsAfterFirstStartToSendOrders, IServerPermission для данного типа коннектора.
3.AServer. РегионThread 3. Work with orders.

- Место работы потока, посылающего торговые приказы в ServerRealization.
- Очередь с приказами, ожидающими отправки в ServerRealization.
- Механизм доступа к переменной, которая определяет время ожидания от того, как сервер перейдёт в режим Connect, до того как можно будет отправить в ServerRealization первый ордер.
- Может ли сервер изменять цену ордера без его отзыва с биржи.
- Исполнить ордер. Метод для передачи в сервер торгового приказа извне.
- Изменить цену ордера без его отзыва. Метод для передачи в сервер торгового приказа извне.
- Отменить ордер. Метод для передачи в сервер торгового приказа извне.
- Отменить все ордера. Метод для передачи в сервер торгового приказа извне.
- Отменить ордера по конкретной бумаге. Метод для передачи в сервер торгового приказа извне.
- Обработчик события появления нового ордера на бирже.
- Событие: новый ордер.
- Событие: пользователь прислал ордер на исполнение.
- Событие: пользователь прислал ордер на отзыв.
4. Три торговых метода AServerпринимают приказы и ставят их в очередь.

- Ставят приказы в очередь, три метода:
- ExecuteOrder
- ChangeOrderPrice
- CancelOrder
5.Очередь разбирается в ExecutorOrdersThreadArea.

- Ожидание работоспособности сервера через задержку.
- Если в очереди нет приказов, спим 1 млс.
- Разбор очереди.
- Вызываем SendOrder.
- Вызываем CancelOrder.
- Вызываем ChangeOrderPrice.
Вот таким вот образом заявки попадают в ServerRealization, а затем и на биржу…
Удачных алгоритмов.
Пост из серии «Коннекторы к OsEngine»
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!

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
