Многие API не разрешают избыточно частое (по их мнению) обращение к некоторым данным. Почти всегда на разные типы запросов есть те или иные ограничения. И в случае их превышения происходит какой-то вид отключения клиента от API, либо даже денежные штрафы!
Нам конечно же доводить до отключения коннектора от API нельзя. И коннектор, который не умеет соблюдать дистанцию между запросами, не работающий.
В связи с этим в коннекторах необходимо устанавливать ограничение на запросы определённых методов. Вроде подписки на инструменты или даже выставление ордеров. Как это делать? Поговорим в этой статье.

RateGate.
Объект, который отвечает за задержки между запросами, называется RateGate и находится у нас в проекте вот здесь:

Рис.1. Расположение RateGate в проекте.
Объявление и использование RateGate.
RateGate объявляется как поле класса и сразу же инициализируется. В качестве переменных конструктор принимает: 1) Кол запросов; 2) За какое время. Выглядит это вот так:

Рис.2. Пример применения RateGate в коннекторе BitGet.
Перечень защищаемых запросов.
Какие методы стоит защищать от спама со стороны OsEngine?
- Подписка на бумаги.
- Выставление ордеров.
- Отзыв ордеров.
- Смена цены ордера.
- Запрос исторических данных по бумагам.
- Запрос состояния портфеля.
По всем этим запросам существуют автоматические тесты, поэтому рекомендуется внимательно расставлять соответствующие счётчики и читать документацию. Если по какому-то типу запросов есть ограничения, и запрос не защищён от спама, тесты не пройдут.
Удачных алгоритмов!
Пост из серии «Коннекторы к OsEngine»
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support
Курилка, общаемся здесь: https://t.me/o_s_a_chat
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients

Подробнее https://smart-lab.ru/compan...