Лимиты запросов
Ограничение частоты запросов на уровне кошелька для операций с ордерами и API-запросов.
Обзор
Лимиты применяются к каждому кошельку по алгоритму фиксированного окна. Ограничения действуют для:
- Размещения ордеров (
POST /order) - Отмены ордеров (
DELETE /order) - API-запросов (общее использование эндпоинтов)
Лимиты сбрасываются каждые 60 секунд.
Лимиты по умолчанию
| Уровень | Ордеров/мин | Отмен/мин | API-запросов/мин | Макс. открытых ордеров | Макс. позиций |
|---|---|---|---|---|---|
| По умолчанию | 60 | 120 | 600 | 100 | 50 |
| Уровень 1 | 30 | 60 | 300 | 50 | 20 |
| Уровень 2 | 120 | 300 | 1 200 | 500 | 200 |
| Маркетмейкер | 600 | 1 200 | 6 000 | 2 000 | Без ограничений |
Новые кошельки получают лимиты по умолчанию. Для повышения уровня обратитесь в поддержку.
Ответ при превышении лимита
При превышении лимита API возвращает 429 Too Many Requests:
{
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded for OrderPlacement: 60 per minute, retry after 45 seconds",
"retry_after_secs": 45,
"limit": 60
}
Заголовки ответа
Все эндпоинты с лимитами включают следующие заголовки как в успешных ответах, так и в ответах с ошибкой:
| Заголовок | Описание | Пример |
|---|---|---|
X-RateLimit-Limit | Максимальное число запросов в окне | 60 |
X-RateLimit-Remaining | Оставшееся число запросов в текущем окне | 42 |
X-RateLimit-Reset | Unix-время сброса окна | 1737312060 |
Retry-After | Секунды до повторной попытки (только при 429) | 45 |
Примеры заголовков ответа
Успешный запрос:
HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1737312060
Запрос, отклонённый по лимиту:
HTTP/1.1 429 Too Many Requests
Retry-After: 45
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1737312060
Категории лимитов
Лимиты отслеживаются отдельно для каждого типа действия:
Размещение ордеров
Применяется к:
POST /order(ордера на опционы)POST /bulk_order(пакетные ордера, учитывается каждый ордер в пакете)PUT /bulk_order(пакетные замены, учитывается каждая замена)
Отмена ордеров
Применяется к:
DELETE /orderDELETE /bulk_order(пакетные отмены, учитывается каждая отмена)DELETE /bulk_order_cloid(пакетные отмены по клиентскому ID ордера, учитывается каждая отмена)
API-запросы
Применяется к общему использованию API по всем аутентифицированным эндпоинтам.
Лимиты на позиции и ордера
Помимо лимитов на частоту запросов, для кошельков действуют ограничения на максимальное число открытых ордеров и позиций:
| Тип лимита | Описание | Отклонение |
|---|---|---|
| Макс. открытых ордеров | Максимальное число одновременно открытых ордеров | Ордер отклоняется до попадания в движок |
| Макс. позиций | Максимальное число уникальных позиций (-1 = без ограничений) | Ордер отклоняется, если создаст новую позицию |
При превышении лимитов:
{
"error": "limit_exceeded",
"message": "Maximum open orders limit exceeded (100)"
}
Рекомендации
Обработка превышений лимитов
- Отслеживайте заголовки: проактивно контролируйте
X-RateLimit-Remaining - Соблюдайте Retry-After: выждите указанное время перед повторной попыткой
- Реализуйте бэкофф: используйте экспоненциальный бэкофф при повторяющихся ответах 429
import time
def place_order_with_retry(order, max_retries=3):
for attempt in range(max_retries):
response = api.place_order(order)
if response.status_code == 429:
retry_after = int(response.headers.get('Retry-After', 60))
time.sleep(retry_after)
continue
return response
raise RateLimitError("Max retries exceeded")
Оптимизация использования запросов
- Используйте пакетные эндпоинты:
POST /bulk_orderдля нескольких ордеров одним запросом - Отменяйте пакетно:
DELETE /bulk_orderилиDELETE /bulk_order_cloidвместо множества запросовDELETE /order - WebSocket для обновлений: подписывайтесь на обновления ордеров вместо опроса
GET /orders
Мониторинг
Отслеживайте следующие метрики на стороне клиента:
- Частоту запросов по каждому типу действия
- Динамику
X-RateLimit-Remaining - Частоту ответов 429
- Среднюю длительность
Retry-After
Справочник ошибок
| HTTP-статус | Код ошибки | Описание |
|---|---|---|
| 429 | rate_limit_exceeded | Лимит запросов превышен, повторите попытку по истечении указанного времени |
Полный справочник ошибок см. в разделе Ошибки.