Ордера в OsEngine высылаются в IserverRealization не напрямую, а через отдельную очередь. Посмотрим на неё одним глазком.
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/666e26.webp)
1. Нужные нам классы в проекте.
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/09cefa.webp)
2. Какие методы в IServerRealizationвызываются данным потоком?
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/72f876.webp)
- Вызывается из AServer, для чего там работает поток в методе: ExecutorOrdersThreadArea().
- Вызывается, только если состояние сервера ServerConnectStatus == Connect.
- Вызывается, только если прошло не менее N секунд в поле WaitTimeSecondsAfterFirstStartToSendOrders, IServerPermission для данного типа коннектора.
3.AServer. РегионThread 3. Work with orders.
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/eb938a.webp)
- Место работы потока, посылающего торговые приказы в ServerRealization.
- Очередь с приказами, ожидающими отправки в ServerRealization.
- Механизм доступа к переменной, которая определяет время ожидания от того, как сервер перейдёт в режим Connect, до того как можно будет отправить в ServerRealization первый ордер.
- Может ли сервер изменять цену ордера без его отзыва с биржи.
- Исполнить ордер. Метод для передачи в сервер торгового приказа извне.
- Изменить цену ордера без его отзыва. Метод для передачи в сервер торгового приказа извне.
- Отменить ордер. Метод для передачи в сервер торгового приказа извне.
- Отменить все ордера. Метод для передачи в сервер торгового приказа извне.
- Отменить ордера по конкретной бумаге. Метод для передачи в сервер торгового приказа извне.
- Обработчик события появления нового ордера на бирже.
- Событие: новый ордер.
- Событие: пользователь прислал ордер на исполнение.
- Событие: пользователь прислал ордер на отзыв.
4. Три торговых метода AServerпринимают приказы и ставят их в очередь.
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/dd353f.webp)
- Ставят приказы в очередь, три метода:
- ExecuteOrder
- ChangeOrderPrice
- CancelOrder
5.Очередь разбирается в ExecutorOrdersThreadArea.
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/01dd70.webp)
- Ожидание работоспособности сервера через задержку.
- Если в очереди нет приказов, спим 1 млс.
- Разбор очереди.
- Вызываем SendOrder.
- Вызываем CancelOrder.
- Вызываем ChangeOrderPrice.
Вот таким вот образом заявки попадают в ServerRealization, а затем и на биржу…
Удачных алгоритмов.
Пост из серии «Коннекторы к OsEngine»
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/21/16/44/2024/08/22/50c5ba.webp)
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
![AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62 AServer #6. Thread 3. Работа с ордерами. Коннекторы к OsEngine #62](/uploads/2024/images/00/78/53/2024/01/18/1fddbd.webp)