Лонгрид 13 из 13Курс
Диагностика ошибок и дальнейшие шаги
Содержание
Карта HTTP-ошибок
Код | Типичная причина | Действие клиента |
|---|---|---|
400 | Неверный symbol, интервал, количество, цена или поле заявки | Не повторять; исправить запрос по схеме |
401 | Неверный или истёкший access_key | Получить новый access_key и повторить безопасный запрос |
403 | Недостаточно прав | Проверить тип токена, счёт и разрешения |
404 | Не найден счёт, инструмент или заявка | Сверить идентификатор и доступ токена |
429 | Исчерпана квота | Остановить немедленные повторы, снизить нагрузку |
500 | Внутренняя ошибка | Ограниченный повтор безопасной операции, затем сигнал оператору |
503 | Сервис временно недоступен | Backoff, jitter и контроль общего времени ожидания |
504 | Истёк срок выполнения | Для чтения возможен повтор; для торговли сначала сверка |
Тело ошибки содержит code, message и иногда details. Логируйте их вместе с HTTP-статусом и идентификатором операции, но без токена.
WebSocket подключён, но данных нет
Проверяйте по порядку:
Получен ли HANDSHAKE_SUCCESS?
Отправлена ли подписка после handshake?
Не пришёл ли конверт ERROR?
Нет ли payload.error внутри DATA?
Верен ли subscription_type?
Полный ли symbol в формате ticker@mic?
Есть ли у токена разрешение на эти рыночные данные?
Идут ли сейчас торги по инструменту?
Заявка отклонена
Проверьте:
выбран ли именно нужный счёт;
не является ли токен
readonly;доступен ли инструмент через
GetAssetParams;количество передано в штуках;
цена кратна минимальному шагу;
не превышает ли
client_order_id20 символов;соответствует ли
limit_priceтипу заявки;хватает ли обеспечения;
разрешена ли выбранная сторона операции;
не закончилась ли торговая сессия.
Ответ на PlaceOrder потерян
Это отдельное состояние: не «ошибка» и не «успех», а неизвестный результат.
Сохраните исходную команду и client_order_id.
Не отправляйте новую заявку автоматически.
Получите активные заявки и последние события счёта.
Найдите заявку по доступным идентификаторам и параметрам.
Если однозначная сверка невозможна, остановите автоматическую торговлю и передайте ситуацию оператору.
Частые вопросы
Нужно ли писать Bearer перед access_key?
REST API принимает как
Authorization: Bearer <access_key>, так и заголовок только с access_key. В курсе используетсяBearerдля единообразия с распространённым HTTP-форматом. WebSocket-примеры передают access_key в полеtoken, а gRPC SDK — в metadata.Почему в REST используется .value, а в WebSocket нет?
Это разные JSON-представления decimal. REST возвращает объект
{"value":"..."}, Async API — строку. gRPC использует типgoogle.type.Decimal.Можно ли каждую секунду запрашивать цену через REST?
Для единичной проверки — да, для постоянного потока — нет. Подписка точнее соответствует задаче и не расходует REST-квоту на каждое изменение.
Почему quantity: 1 не всегда означает один лот?
Потому что в заявке количество задаётся в штуках. Размер торгового лота нужно получить через
GetAssetParams.Можно ли автоматически повторить PlaceOrder с тем же client_order_id?
Не рассматривайте поле как безусловную гарантию идемпотентности. После неопределённого результата сначала выполните сверку.
Что выбрать для нового проекта: WebSocket или gRPC?
WebSocket удобен для простого JSON-клиента. gRPC подходит, когда нужны типизированные модели, генерируемые клиенты и поток обновления access_key. REST всё равно остаётся полезен для снимков и диагностики.
Пришли со старого API?
Основные изменения новой версии:
Portfolioзаменён модельюAccount;дневные и внутридневные свечи объединены в
Barsсtimeframe;обычные и стоп-заявки собраны в
OrdersService;единый поток событий разделён на специализированные подписки;
авторизация вынесена в
AuthService.
Таблица соответствия старых и новых методов — в руководстве по миграции.
Полезные материалы
- Что делать, когда API отвечает не таклимиты, подписки, потерянные ответы и пограничные случаи
- REST APIметоды, параметры, ответы и коды ошибок
- Async APIкоманды WebSocket и конверты
- gRPC APIсервисы и потоковые методы
- официальные SDK и proto-файлы
- пример SMA 9/30завершённые свечи, dry-run и предохранители
- Postman workspaceручная проверка REST-запросов
- сообщество Trade APIобсуждения и объявления
Итоговый чек-лист
Курс пройден. Вы умеете выбрать подходящий интерфейс, безопасно авторизоваться, работать с инструментами и рыночными данными, слушать события, отправлять заявки и проектировать восстановление после сбоев. Следующий шаг — взять один реальный сценарий, оставить dry-run включённым и покрыть его тестами без сети до подключения демо-счёта.
Вопросы, которые появятся, когда клиент уже работает, собраны отдельно: Что делать, когда API отвечает не так.
Конец лонгрида