Брокеры
Общий интерфейс одинаков для всех брокеров, но сами брокеры отличаются. Эта страница - сводка различий, дальше по странице на каждого: БКС, Т-Банк, Финам, АЛОР, Bybit. Bybit - зарубежный сервис, остальные - российские брокеры.
| БКС | Т-Банк | Финам | АЛОР | Bybit | |
|---|---|---|---|---|---|
| Протокол | REST и WebSocket | gRPC | gRPC | REST и WebSocket | REST и WebSocket |
| Вход | refresh-токен, из него токен доступа | один статичный токен | секрет, из него JWT, обновляется сам | refresh-токен с портала разработчика, из него токен доступа (30 минут), обновляется сам | пара ключ и секрет, каждый запрос подписывается (HMAC-SHA256) |
| Идентификатор инструмента | тикер и класс (SBER, TQBR) | uid (его отдает справочник), figi или тикер и класс | SBER@MISX (тикер и MIC) | тикер и режим торгов (SBER, TQBR). Биржа (MOEX или SPBX) берется из режима торгов | тикер контракта и категория (BTCUSDT@linear) |
| Что считает API в заявке | целое число штук (по документации) | лоты, целое. Коннектор переводит | штуки, число десятичное | лоты, целое. Коннектор переводит | количество базовой монеты, десятичное |
Qty в библиотеке | штуки, одинаково у всех. Не целое, нуль, некратное лоту (если лот передан): invalid_qty | штуки. Коннектор делит на лот и умножает обратно | штуки. Некратное лоту (если лот передан): invalid_qty | штуки. Коннектор читает размер лота из справочника, делит и умножает обратно. Некратное лоту: invalid_qty | единицы базовой монеты, одинаково у всех. Не кратное шагу qtyStep или меньше minOrderQty: invalid_qty |
| Глубина стакана | до 20 | 1, 10, 20, 30, 40, 50 (запрошенное округляется вверх) | до 50 (режем на своей стороне) | до 50 (больший запрос режется) | 1, 50, 200, 1000 (ближайшая не меньше запрошенной, лишнее отрезается) |
| Изменить заявку | да (синхронный метод БКС) | да | нет (метода нет в API) | да (лимитную, рыночную нельзя) | нет (изменение у биржи оставляет заявку и ее orderLinkId, это не новая заявка), Unsupported. Через raw() есть |
| Поток своих сделок | из потока статусов заявок | отдельный поток сделок | отдельный поток сделок | отдельная подписка на сделки портфеля | отдельный поток исполнений |
| Свечи | все, кроме 10-минуток (Unsupported) | все | все, 10-минутки собираются из 5-минуток | все, 10-минутки есть у брокера | все, кроме 10-минуток (Unsupported) |
| Стоп-заявки | условные заявки | отдельный сервис | обычная заявка типа стоп и метод SL/TP | стоп-заявка (рыночная при срабатывании) и стоп-лимит | обычная заявка с ценой срабатывания, рыночная или лимитная. Только «до отмены» |
| Песочница | нет | да | нет | нет, но есть отдельный тестовый контур | да, демо-счет с виртуальными деньгами (env=demo) |
| Срок обычной заявки | выбирает БКС | выбирает Т-Банк | всегда «на день» | «на день» | лимитная «до отмены», рыночная исполняется сразу или отменяется |
| Где лимиты | на токен (по документации) | на пользователя | на пользователя (по документации) | на логин (100 HTTP-запросов в секунду) | на пользователя и метод (10 команд и 50 чтений в секунду) и на адрес (600 за 5 секунд) |
| Пауза перед переподключением | 0,5 с до 30 с (настраивается) | 0,5 с до 30 с | 0,5 с до 30 с | 0,5 с до 30 с (настраивается) | 0,5 с до 30 с (настраивается) |
Что общее у всех
- Два коннектора: MD и UD. UD на один счет (у АЛОРа на один портфель, у Bybit на один счет или субсчет ключа).
cidбота и правила заявок одинаковы (Круг команд). Меняется только то, кудаcidкладется.- Все ответы на неясные команды -
Unknown, повторов нет. - Стакан приходит полным снимком (у Bybit коннектор сам собирает его из снимка и изменений и отдает целиком).
- Шлюз команд после запуска закрыт до
reconcile, и закрывается снова приOverflowи приReconnected(оборвался поток своих заявок или исполнений), и команда, которая стояла в очереди, проверяется шлюзом еще раз. - Ошибки одного вида: отказ токена это
Config, “не найдено” этоRejectedс кодомnot_found, идентификатор инструмента другого брокера этоConfigбез сети. raw()у каждого коннектора.
Что у брокеров устроено по-разному
- Счета. У БКС счет задает токен, у Т-Банка и Финама -
account_id, у АЛОРа - портфель и биржа в настройке, у Bybit счет определяет ключ. - Лимиты. У каждого брокера своя область, см. Несколько счетов и брокеров.
- Единицы количества. Одинаковые:
Qtyэто число единиц инструмента (штуки, контракты), лотов бот не видит ни у одного брокера. Т-Банк и АЛОР считают лотами, коннектор переводит. Размер лота даетTradingParams::lot_size, заявка кратна ему (Деньги, цены и количества). - Что не поддерживает брокер. Помечено на странице брокера. Такие вызовы возвращают
Unsupportedсразу, без сети.
Листать можно клавишами Влево и Вправо.