Límites de Tasa
Limitación de tasa por wallet para operaciones de órdenes y solicitudes de API.
Descripción General
La limitación de tasa se aplica por wallet utilizando un algoritmo de ventana fija. Los límites se aplican a:
- Colocación de órdenes (
POST /order) - Cancelación de órdenes (
DELETE /order) - Solicitudes de API (uso general de endpoints)
Los límites se reinician cada 60 segundos.
Límites Predeterminados
| Nivel | Órdenes/min | Cancelaciones/min | Solicitudes API/min | Máx. Órdenes Abiertas | Máx. Posiciones |
|---|---|---|---|---|---|
| Predeterminado | 60 | 120 | 600 | 100 | 50 |
| Nivel 1 | 30 | 60 | 300 | 50 | 20 |
| Nivel 2 | 120 | 300 | 1,200 | 500 | 200 |
| Market Maker | 600 | 1,200 | 6,000 | 2,000 | Ilimitado |
Las wallets nuevas reciben los límites predeterminados. Contacte a soporte para actualizaciones de nivel.
Respuesta de Límite de Tasa
Cuando se excede un límite de tasa, la API devuelve 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
}
Encabezados de Respuesta
Todos los endpoints con límite de tasa incluyen estos encabezados tanto en respuestas exitosas como de error:
| Encabezado | Descripción | Ejemplo |
|---|---|---|
X-RateLimit-Limit | Máximo de solicitudes permitidas por ventana | 60 |
X-RateLimit-Remaining | Solicitudes restantes en la ventana actual | 42 |
X-RateLimit-Reset | Timestamp Unix cuando se reinicia la ventana | 1737312060 |
Retry-After | Segundos hasta poder reintentar (solo en 429) | 45 |
Ejemplo de Encabezados de Respuesta
Solicitud exitosa:
HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1737312060
Solicitud con límite de tasa excedido:
HTTP/1.1 429 Too Many Requests
Retry-After: 45
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1737312060
Categorías de Límites de Tasa
Los límites de tasa se rastrean por separado para cada tipo de acción:
Colocación de Órdenes
Se aplica a:
POST /order(órdenes de opciones)POST /bulk_order(órdenes en lote, cada orden del lote cuenta)PUT /bulk_order(reemplazos en lote, cada reemplazo cuenta)
Cancelación de Órdenes
Se aplica a:
DELETE /orderDELETE /bulk_order(cancelaciones en lote, cada cancelación cuenta)DELETE /bulk_order_cloid(cancelaciones en lote por ID de orden del cliente, cada cancelación cuenta)
Solicitudes de API
Se aplica al uso general de la API en todos los endpoints autenticados.
Límites de Posiciones y Órdenes
Además de los límites de tasa, las wallets tienen límites máximos de órdenes abiertas y posiciones:
| Tipo de Límite | Descripción | Rechazo |
|---|---|---|
| Máx. Órdenes Abiertas | Máximo de órdenes abiertas concurrentes | Orden rechazada antes de llegar al motor |
| Máx. Posiciones | Máximo de posiciones únicas (-1 = ilimitado) | Orden rechazada si crearía una nueva posición |
Cuando se exceden los límites:
{
"error": "limit_exceeded",
"message": "Maximum open orders limit exceeded (100)"
}
Mejores Prácticas
Manejo de Límites de Tasa
- Monitoree los encabezados: Rastree
X-RateLimit-Remainingde forma proactiva - Respete Retry-After: Espere la duración especificada antes de reintentar
- Implemente backoff: Use backoff exponencial ante 429s repetidos
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")
Optimización del Uso de Solicitudes
- Use endpoints en lote:
POST /bulk_orderpara múltiples órdenes en una sola solicitud - Cancele en lote:
DELETE /bulk_orderoDELETE /bulk_order_cloiden lugar de múltiples solicitudesDELETE /order - WebSocket para actualizaciones: Suscríbase a las actualizaciones de órdenes en lugar de consultar
GET /ordersrepetidamente
Monitoreo
Rastree estas métricas del lado del cliente:
- Tasa de solicitudes por tipo de acción
- Tendencias de
X-RateLimit-Remaining - Frecuencia de respuestas 429
- Duraciones promedio de
Retry-After
Referencia de Errores
| Estado HTTP | Código de Error | Descripción |
|---|---|---|
| 429 | rate_limit_exceeded | Límite de tasa excedido, reintente después del tiempo especificado |
Consulte Errores para la referencia completa de errores.