Tradovate API

Error 408 Request Timeout de la API de Tradovate (1 conexión)

Un 408 en Tradovate no es un tiempo de espera agotado por una red lenta. Significa que ha superado el número de conexiones que su cuenta puede mantener a la vez, y una cuenta estándar solo dispone de una.

Revisado por el equipo de Sistemas de Trading de PickMyTrade Última actualización
· Lectura de 7 minutos
La API de Tradovate devuelve una respuesta HTTP 408 Request Timeout en un cliente REST

Tiene un bot que se comunica con la API de Tradovate, las órdenes fluyen y, de repente, las llamadas empiezan a devolver 408 Request Timeout. En la mayoría de los servidores, un 408 significa “fue demasiado lento, dejé de esperar”. En Tradovate significa algo completamente distinto, y en cuanto sepa qué le está diciendo realmente, la solución tarda unos treinta segundos. Aquí, un 408 es la forma que tiene Tradovate de decir que ha superado el número de conexiones que su cuenta puede mantener a la vez. Una cuenta estándar dispone exactamente de una conexión simultánea. Si la aplicación web de Trader, una sesión REST y su automatización compiten por ese único puesto, las sesiones adicionales son rechazadas con un 408. Cierre todo lo demás que esté conectado como usted, asegúrese de que solo una cosa se conecte a la vez, y el error desaparece. Un puente gestionado como PickMyTrade evita todo el problema manteniendo una conexión limpia por usted.

Lista rápida de verificación para el error 408 Request Timeout

  • Cierre la interfaz de Trader. Si tiene Tradovate Trader abierto en una pestaña del navegador, en la aplicación de escritorio o en su teléfono, está ocupando su única conexión, ciérrelo antes de ejecutar su bot.
  • Elimine las instancias duplicadas. Un script que falló o se reinició sin cerrar sesión deja una sesión fantasma. Confirme que solo una copia de su aplicación se está autenticando.
  • Un inicio de sesión a la vez. No inicie dos sesiones en paralelo para la misma cuenta, escalone el arranque para que la sesión antigua se cierre antes de que la nueva se conecte.
  • Renueve, no vuelva a autenticarse. Use /auth/renewAccessToken para prolongar su sesión en lugar de iniciar sesión de nuevo en cada ciclo, lo que genera más rotación de conexiones.
  • ¿Necesita ambas cosas? Consiga el segundo puesto. Para ver Trader y ejecutar un bot a la vez, necesita el complemento de dos conexiones, un solo puesto no puede hacer ambas cosas.
  • Mantenga el socket activo. Envíe un heartbeat cada 2,5 segundos para que un WebSocket inactivo no se corte y provoque una reconexión desordenada.

Qué significa "408 Request Timeout" en Tradovate

En HTTP estándar, 408 Request Timeout es el servidor indicando a un cliente que esperó demasiado tiempo a que llegara la solicitud y cerró la conexión. Tradovate reutiliza ese código de estado con su propio propósito. En esta API, un 408 es lo que obtiene cuando supera el número máximo de conexiones simultáneas asociadas a su usuario. No se trata de la latencia de red ni de un cuerpo de solicitud lento, es una señal de capacidad. La plataforma le está diciendo: “demasiados de ustedes están conectados como usted en este momento”.

Ese cambio de enfoque importa, porque si persigue un 408 como si fuera un tiempo de espera normal, aumentando los tiempos de espera de las solicitudes, reintentando con más fuerza, culpando a su VPS, no llegará a ninguna parte. El número que debe observar no es su latencia. Es cuántas cosas están autenticadas contra su cuenta en el momento exacto en que se produce el error.

Dispone de una conexión. Esa es toda la historia.

Esta es la regla que explica casi todos los 408: un usuario estándar de Tradovate obtiene una única conexión establecida con la API por cuenta. Ese único puesto lo comparte todo lo que se autentica como usted, la aplicación web de Trader, la aplicación de escritorio de Trader, la aplicación móvil, una sesión REST y el WebSocket de datos de mercado que abre su bot. No tienen cada uno su propia línea. Todos compiten por la misma.

Tradovate expone la consecuencia directamente: iniciar sesión en Tradovate Trader finaliza su sesión de API REST y WebSocket, y a la inversa también es cierto. Así que, si su bot está transmitiendo cotizaciones tranquilamente y usted abre Trader en una pestaña del navegador para revisar una ejecución, uno de los dos tiene que perder. El que queda desplazado empieza a lanzar 408. A la inversa, su bot se reconecta mientras Trader está abierto, y ahora Trader es el que se desconecta. Parece aleatorio hasta que se da cuenta de que siempre solo hubo espacio para uno.

Aplicación web de Tradovate Trader abierta en una pestaña del navegador mientras un bot de API se ejecuta, compitiendo por el único puesto de conexión

Principales causas del 408 en Tradovate

1. La aplicación Trader está abierta mientras su bot se ejecuta

Este es el culpable habitual. Deja Tradovate Trader abierto en un segundo monitor, un teléfono o una pestaña olvidada del navegador, y luego inicia su automatización. El bot se conecta, ocupa el puesto, y Trader, o el bot, según el momento, empieza a recibir 408. Todo lo que muestre una sesión activa de Tradovate cuenta, incluida la aplicación móvil ejecutándose silenciosamente en segundo plano.

2. Un reinicio o fallo dejó una sesión fantasma

Su script falla, se reinicia y vuelve a iniciar sesión, pero la sesión anterior nunca cerró sesión correctamente en el servidor. Durante una breve ventana mantiene dos sesiones contra una cuenta con un solo puesto, y la nueva conexión acumula 408 hasta que la antigua expira. Los bucles de reinicio automático empeoran esto, porque pueden apilar inicio de sesión tras inicio de sesión antes de que ninguno expire.

3. La misma clave de API ejecutándose desde dos lugares

Los despliegues en la nube son notorios por esto. Un grupo de autoescalado lanza un segundo contenedor, o deja una copia ejecutándose en su portátil y otra en un VPS, y ambas se autentican con las mismas credenciales. Cada nuevo inicio de sesión compite con los demás por la única conexión, y los 408 nunca se calman porque nada cede nunca.

4. Un bucle de reconexión demasiado agresivo

Cuando un socket se cae, un cliente ingenuo se reconecta de inmediato, y si se está cayendo por otro motivo (un heartbeat perdido, por ejemplo), termina martillando el inicio de sesión. Esa avalancha de intentos de conexión tanto supera el límite de conexiones como incrementa el tráfico de solicitudes, así que los 408 pueden mezclarse además con penalizaciones por límite de tasa.

Cómo solucionar el 408 Request Timeout: paso a paso

1

Libere su única conexión

Cierre todo lo demás que inicie sesión como usted. Cierre sesión en Tradovate Trader en cada pestaña del navegador, salga de la aplicación de escritorio y cierre completamente la aplicación móvil (no solo envíela a segundo plano). Espere unos segundos para que la sesión se libere realmente en el servidor. Este único paso resuelve la mayoría de los 408, porque la mayoría de las veces la conexión “adicional” es simplemente Trader abierto.

2

Localice sesiones duplicadas

Compruebe si hay una copia obsoleta de su propia aplicación. Si su bot falló y se reinició, un proceso antiguo puede seguir autenticado. En un servidor, liste los procesos en ejecución y confirme que exactamente una instancia está activa. En una configuración en la nube escalada, asegúrese de que solo un único nodo se autentique para una cuenta determinada, fije la conexión a un worker en lugar de dejar que cada réplica inicie sesión.

3

Escalone sus inicios de sesión y renueve, no vuelva a autenticarse

Diseñe su arranque para que una nueva sesión espere a que la antigua se cierre antes de conectarse. Y en lugar de llamar al endpoint de inicio de sesión en cada ciclo, lo que genera nueva rotación de conexiones, prolongue la sesión que ya tiene. Envíe un POST a /auth/renewAccessToken con su token aún válido para obtener una nueva expiración sin abrir una sesión completamente nueva. Menos inicios de sesión significan menos ocasiones de superar el límite de conexiones.

4

Si realmente necesita ambas cosas a la vez, añada el segundo puesto

Algunos flujos de trabajo realmente necesitan Trader abierto y un bot en ejecución, quiere tener la vista puesta en la ladder mientras la automatización gestiona las salidas. Una conexión no puede hacer eso. Tradovate ofrece un complemento de pago que eleva su límite a dos conexiones simultáneas; observar Trader más una aplicación de API entonces encaja cómodamente. Lo activa desde la configuración de suscripción o complementos de su cuenta de Tradovate, la etiqueta exacta del menú ha cambiado con los años, así que abra el área de gestión de su cuenta y busque el complemento de conexión o suscripción que mencione conexiones simultáneas o dobles, y confirme que esté activo antes de confiar en él.

Comprobación de los procesos en ejecución del bot de API de Tradovate para confirmar que solo una instancia está autenticadaConfiguración de suscripción de la cuenta de Tradovate mostrando el complemento que eleva el límite de conexiones simultáneas a dos

Una advertencia que vale la pena recordar: incluso con dos puestos, un reinicio descuidado que mantiene brevemente tres sesiones sigue arrojando un 408. Dos es el límite de ese plan, no una invitación a abrir conexiones libremente. La disciplina de “un solo inicio de sesión limpio a la vez” sigue aplicándose, solo tiene un poco más de margen.

Mantenga la conexión activa para que no se caiga

Buena parte del dolor de los 408 proviene de conexiones que se caen y se reconectan mal. Mantenga el socket saludable y dejará de generar la rotación que dispara el límite en primer lugar.

  • Heartbeat cada 2,5 segundos. El WebSocket de Tradovate espera un frame de heartbeat, un payload vacío [], al menos cada 2,5 segundos, o el servidor lo cierra por inactividad. Un servidor que está transmitiendo activamente datos de mercado no enviará sus propios heartbeats, así que depende de usted mantener el pulso.
  • No dependa de setInterval en un navegador. Las pestañas en segundo plano limitan los temporizadores, lo que silenciosamente priva a su heartbeat y corta la conexión. Marque con tiempo cada mensaje que reciba y envíe un heartbeat en cuanto hayan pasado 2500 ms desde el último.
  • Use identificadores de solicitud únicos. Reutilizar el mismo ID entero en solicitudes simultáneas puede confundir al socket y cortarlo.
  • Reconecte antes de las ~24 horas. Los sockets de larga duración se cortan alrededor de la marca de las 24 horas, así que planifique una reconexión ordenada en lugar de esperar a que el servidor lo corte a mitad de sesión.

Tabla de solución de problemas

Síntoma Causa probable Solución
408 en el momento en que el bot se conectaLa interfaz de Trader (web, escritorio o móvil) ya ocupa el puestoCierre sesión en Trader en todas partes y luego conecte el bot
408 justo después de un fallo o reinicioLa sesión fantasma de la ejecución anterior no ha expiradoEspere a que la sesión obsoleta expire; asegúrese de que solo una instancia inicia sesión
408 que nunca se calmaLa misma clave de API se autentica desde dos máquinas o réplicasFije la conexión a un único nodo/proceso
408 incluso con el complementoSe mantienen brevemente tres o más sesiones (p. ej., reinicio superpuesto)Escalone los inicios de sesión; mantenga siempre un solo inicio de sesión a la vez
El socket se cae y luego 408 al reconectarLos heartbeats perdidos provocan una avalancha de reconexionesEnvíe un heartbeat vacío [] cada 2,5 s; reduzca los reintentos
429, no 408Demasiadas solicitudes demasiado rápido (límite de tasa)Regule la tasa de solicitudes, problema diferente, solución diferente

Dónde encaja PickMyTrade

Manejar un único puesto de conexión a mano es frágil, una pestaña de Trader olvidada o un reinicio descuidado, y su automatización empieza a rebotar 408 en el peor momento posible. PickMyTrade se sitúa entre TradingView y Tradovate y mantiene una conexión limpia y gestionada para que nunca compita consigo mismo por el puesto:

  • Una conexión gestionada, el puente mantiene una única sesión estable con Tradovate, de modo que los inicios de sesión duplicados y las sesiones fantasma no se acumulan contra su límite.
  • Mantenimiento automático de la sesión, los tokens se renuevan según lo programado y los heartbeats mantienen el socket activo, de modo que no se cae ni desencadena una tormenta de reconexiones.
  • Sin gestión manual de la conexión, usted enruta las alertas de TradingView y deja que la plataforma gestione el ciclo de conectar/autenticar/reconectar que de otro modo tendría que supervisar en el código.
  • Enrutamiento consciente del límite de tasa, las solicitudes se ritman para que no cambie un 408 por una penalización 429.

Deje de lidiar con las conexiones de la API

Inicie su prueba gratuita y conecte TradingView con Tradovate sin lidiar con conexiones de API.

Inicie su prueba gratuita de 5 días

Preguntas frecuentes

En la API de Tradovate, un 408 casi siempre significa que ha superado el número máximo de conexiones simultáneas para su usuario. Una cuenta estándar dispone de un puesto de conexión, así que si la aplicación Trader, una sesión REST y su bot intentan ocuparlo a la vez, las sesiones adicionales empiezan a devolver 408.

Un usuario estándar obtiene una única conexión establecida con la API de Tradovate por cuenta. Iniciar sesión en Tradovate Trader finaliza su sesión de API REST y WebSocket, y viceversa. Un complemento de pago eleva el límite a dos conexiones simultáneas para que pueda observar Trader y ejecutar una aplicación al mismo tiempo.

Sí. En una cuenta de una sola conexión, iniciar sesión en la aplicación web o de escritorio de Trader ocupa el único puesto y finaliza su sesión de API. Cuando su bot se reconecta, expulsa a Trader. Solo uno de los dos puede mantener la conexión a la vez, salvo que tenga el complemento de dos conexiones.

Le da un segundo puesto, de modo que observar Trader más ejecutar una aplicación de API encaja dentro del límite. No ayudará si su propio código abre más de dos sesiones a la vez, una instancia duplicada del bot que sigue ejecutándose tras un reinicio sigue empujándolo por encima del límite y los 408 regresan.

Normalmente es una sesión fantasma. Un fallo o reinicio forzado dejó un inicio de sesión antiguo activo en el servidor, así que al autenticar su nueva instancia mantiene brevemente una sesión de más. Espere un minuto a que la sesión obsoleta expire, asegúrese de que solo una instancia inicia sesión y luego reconéctese.

Envíe un frame de heartbeat, un payload vacío [], cada 2,5 segundos, use identificadores de solicitud únicos, evite lanzar llamadas en ráfagas apretadas y reconéctese antes del límite de conexión de aproximadamente 24 horas. En un navegador, no dependa de setInterval para el heartbeat; las pestañas en segundo plano lo limitan y el socket muere.

No. Un 429 significa que envió demasiadas solicitudes demasiado rápido y alcanzó un límite de tasa. Un 408 en Tradovate apunta al límite de conexiones simultáneas, demasiadas sesiones a la vez, no demasiadas solicitudes. Tienen soluciones distintas, así que lea el código de estado antes de reaccionar.

Esta guía tiene fines exclusivamente educativos e informativos y no constituye asesoramiento financiero, de inversión ni de trading. Operar con futuros y otros productos apalancados conlleva un riesgo sustancial de pérdida y no es adecuado para todos los inversores. PickMyTrade es una plataforma de automatización independiente de terceros y no está afiliada, respaldada ni patrocinada por Tradovate, Inc. Todos los nombres, logotipos y marcas relacionados son propiedad de sus respectivos dueños. Las funciones y los pasos de la plataforma cambian con el tiempo, así que confirme siempre el proceso actual en la plataforma y la documentación oficiales de Tradovate antes de actuar.