Изображение блога
Алексей Ван <o-s-a.net>
Алексей Ван <o-s-a.net> Блог компании Os_Engine
05 января 2024, 19:59

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

В нескольких предыдущих постах серии мы разговаривали про IServer, свойства и методы, которые в нём есть. Их много и довольно разных. При этом каждое отдельно взятое API что-то поддерживает, а что-то нет. О том, что конкретно коннектор поддерживает, OsEngine должен знать ДО того, как начнёт запрашивать неработающий функционал. Для этого ServerPermission и существует.

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

Например, данные могут быть только свечные, или может не быть 15 минутных свечек. Или API может вообще не поддерживать скачку глубоких исторических данных. Или API не поддерживает какие-то торговые операции: нет Market ордеров, не работает перестановка цены ордера.

 

1. Расположение интерфейса в проекте.

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

3. Регионы IServerPermission.

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

1. Разрешения для OsData. Какие данные доступны для скачивания.

2. Разрешения для торговли. Если это торговый сервер.


4. Регион Data Feed Permissions.


Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38
1. Доступны ли свечки с таймфреймом ниже минуты. Именно для скачивания в качестве исторических данных. На данный момент это реализовано только для FINAM.

2. Доступны ли свечки таймфреймом выше минуты.

3. Доступна ли для скачивания лента сделок.

4. Доступны ли для скачивания и сохранения стаканы котировок.



5. Регион Trade permissions

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38


5.1. MarketOrderIsSupport

Поддерживает ли коннектор заявки типа Market. Это запрашивает CandleConnector, когда пересылает через себя ордера. 

Иными словами, реализована ли разница между Limit и Market ордерами в IServerRealization, вот здесь:
Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38


5.2. IsCanChangeOrderPrice

Может ли данный коннектор изменять цену ордера без его отзыва, через спец методы.

Иными словами, реализован ли метод смены цены ордера в IServerRealization, вот здесь:
Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38


5.3. IsUseLotToCalculationProfit

Нужно ли для расчёта прибыли по позициям использовать лотность бумаги. Нужно для MOEX пока что. Возможно ещё где-то, но это не точно.
Используется в классе Position:
Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38


5.4. TradeTimeFramePermission

Таймфреймы доступные для торговли. 


5.5. WaitTimeAfterFirstStartToSendOrders

Каждый коннектор имеет своё собственное время на полный запуск. Например коннектор Плаза 2 нуждается во времени на загрузку ленты сделок, которую они зачем-то качает сразу по всем инструментам и всему рынку. При этом формально он уже подключен и готов работе, но всё ещё занят. У каждого сервера по идее это время может быть разным. Ориентируйтесь на минимум в 10 секунд. 

Используется в AServer, не давая ордерам уходить в очереди на исполнение, если положенное время ещё не прошло:
Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38



5.6. UseStandartCandlesStarter

Серии свечей нуждаются в базовой активации. Про это будет отдельная статья. Не у всех коннекторов активация свечей стандартна, но у 95% всех в итоге этот параметр должен стоять в TRUE.
Используется в CandleManager, во время стандартного запуска серии свечек:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

5.7. ManuallyClosePositionOnBoard

Во время просмотра позиций по какому-то коннектору, есть возможность их закрыть руками. Вот из этого интерфейса:
Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

Про это будет отдельная статья. Чтобы эти кнопки появились, придётся попотеть.

5.8. AServerOrderHub. Разрешения для запроса ордеров у АПИ по экстренным каналам

Под коннектором есть отдельный объект, который следит за тем чтобы ордера не терялись. Запрашивает активные ордера после перезагрузки и запрашивает статусы ордеров когда о них не пришёл стандартный ответ.

Про этот пункт будет отдельная статья.


6. Реализация на примере ALOR Open Api.

Каждый коннектор сделанный с 2023 года должен содержать реализацию данного класса с разрешениями. Посмотрим на реализацию разрешений сервера на примере Аlor.

Расположение:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

Обратите внимание:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

  1. Таймфреймы, доступные для скачивания в OsData. Если вдруг вы поставите не верные разрешения, не пройдут автотесты OsData на доступность данных.
  2. Торговые разрешения. Точно также, устанавливайте обдуманно, иначе тесты не пройдут. С.м главу 5ть.
  3. Таймфреймы, доступные в боевых торгах.

7. Создание и хранение AlorServerPermission.

Идём в место создание всех разрешений для серверов. Это класс ServerMaster. Этот класс является статичным и виден из всего приложения:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

Внутри класса ServerMaster создание, хранение и доступ к разрешениям серверов хранятся в регионе «Access to servers permissions»:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

1. Ранее созданные разрешения.

2. Типы серверов для которых запрашивали разрешения, но их реализации нет. Добавлено для оптимизации, чтобы каждый запрос не искать разрешение, если его нет.

3. Блокировка многопоточного доступа к функциям создания разрешений.

4. Метод запроса разрешений для коннектора.



Внутри метода «GetServerPermission» расположено создание разрешений для Аlor (И других разрешений) коннектора:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38


8. Использование ServerPermission в OsEngine.

Данный класс в будущем будет и дальше расширяться. Это будет позволять уменьшать связанность проекта и ускорять производство коннекторов. Было бы замечательно, если бы вы умели и знали как посмотреть все места его использования. 

Жмём на методе GetServerPermission правой кнопкой мыши и в меню нажимаем на «Find All References»:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

Всплывёт окно, на 06.01.2024 выглядит это так:

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38
              0. Автотесты в счёт не берём. Про них говорить будем отдельно.

  1. AServer запрашивает разрешения для ордеров и время перезапуска сервера.
  2. Интерфейсы подключения данных запрашивают разрешения по таймфреймам.
  3. CandleManager — старт серии свечек. 
  4. ConnectorCandle из логики выставления ордеров запрашивает разрешения для ордеров и время перезапуска сервера. Также предоставляет эти данные выше.
  5. Интерфейсы подключения данных запрашивают разрешения по таймфреймам.
  6. Интерфейсы подключения данных запрашивают разрешения по таймфреймам.
  7. OsData запрашивает разрешения по таймфреймам.
  8. Журнал запрашивает нужно ли использовать лотность инструмента для расчёта профита по данной бирже.
  9. Ручное закрытие на бирже запрашивает разрешение на данное действие.

 

Удачных алгоритмов!

Пост из серии «Коннекторы к OsEngine»

Серия о том, как стать настоящим программистом и изменить свою профессию.

Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php

Комментарии открыты для друзей, добавляйтесь!

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

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

Разное #2. Разрешения коннекторов. Интерфейс IServerPermission. Коннекторы к OsEngine #38

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн