TradingView–Tradovate: error «Position Closing Timeout»
Hace clic en cerrar y obtiene un 'Position closing timeout' en rojo en lugar de una posición plana. Esto es lo que significa realmente el error, por qué los ID de órdenes y posiciones se desincronizan y cómo forzar una recarga limpia.
On This Page
- Qué significa “Position Closing Timeout”
- Principales causas de un Position Closing Timeout en TradingView-Tradovate
- 1. La confirmación no llegó dentro de la ventana de ~10 segundos
- 2. Un ID de orden o posición cambió tras el envío (la discrepancia)
- 3. Una sesión de bróker obsoleta o caída
- 4. Una caída, congelación o límite de frecuencia del lado de Tradovate
- Cómo solucionar un Position Closing Timeout: paso a paso
- Tabla de solución de problemas
- Evítelo con PickMyTrade
Cuando gestiona una posición de futuros en vivo directamente desde un gráfico de TradingView conectado a Tradovate, el botón de salida debería ser instantáneo. Un clic y queda plano. Por eso desconcierta que, al pulsarlo, en lugar de aplanar la posición aparezca un error en rojo: "Position closing timeout." Quizá la operación ya se cerró en Tradovate. Quizá no. Y durante los siguientes segundos, en un contrato rápido como ES o NQ, realmente no sabe si sigue con tamaño abierto. El mismo fallo aparece con otras formas: una orden se dispara pero el gráfico sigue mostrando la posición abierta, un ID de posición que ya no coincide, un botón de cierre que no hace nada. Casi todo se debe a una misma causa raíz: el gráfico de TradingView y el backend de Tradovate se han desincronizado en el estado de órdenes y posiciones. Aquí verá qué significa realmente el timeout, qué causa la discrepancia de ID que hay detrás y cómo forzar una recarga limpia para salir con confianza.
Lista rápida para un Position Closing Timeout
- Compruebe Tradovate directamente antes de reaccionar. Abra el panel de Positions/Orders en el Tradovate Web Trader. El timeout es un fallo de confirmación, así que su posición real allí es la fuente de verdad, no el gráfico.
- No machaque el botón de salida. Los clics repetidos de cierre pueden apilar órdenes duplicadas cuando la conexión se recupera. Haga clic una vez y verifique.
- Reconecte la sesión del bróker en TradingView. Desconectar y volver a conectar la cuenta de Tradovate obliga al gráfico a recargar desde cero la lista completa de órdenes y posiciones.
- Sospeche de una discrepancia de ID. Si el gráfico muestra una posición u orden que Tradovate ya no tiene (o al revés), ambos lados hacen referencia a ID distintos y necesitan una recarga completa, no un empujón.
- Para integradores y bridges: llame a
ordersFullUpdateypositionsFullUpdatepara limpiar el estado en caché y recargar, pero solo como recuperación para casos límite, nunca en cada actualización. - Tenga a mano una vía manual de flatten. Sepa cómo colocar una orden de mercado contraria o usar el control de flatten de Tradovate si el gráfico no cierra la operación.
Qué significa “Position Closing Timeout”
Operar directamente desde un gráfico de TradingView funciona sobre la Broker API de TradingView, un contrato bidireccional entre el gráfico y el backend conectado (aquí, Tradovate mediante la integración oficial). Cuando cierra una posición, la biblioteca llama al método closePosition de la integración y luego espera una confirmación de que el id de la posición tiene ahora una cantidad de 0. Según la documentación de la Broker API de TradingView, la biblioteca espera hasta unos 10 segundos a que esa confirmación regrese a través del Trading Host. Si en esa ventana no aparece un positionUpdate coincidente, la biblioteca se rinde y lanza el error que está viendo: "Failed to close position: Position closing timeout."
Este es el matiz importante. El timeout describe la confirmación, no necesariamente la orden. Puede que Tradovate ya haya aplanado la posición; simplemente TradingView no recibió respuesta a tiempo. Un feed con retraso, una sesión caída o una ráfaga de modificaciones/cancelaciones pueden tragarse esa confirmación. Por eso su primer paso es siempre comprobar el estado real en Tradovate en lugar de volver a pulsar cerrar. El lado de órdenes del trading desde el gráfico usa la misma ventana de unos 10 segundos, así que colocar o modificar una orden puede provocar un timeout equivalente.
Una variante relacionada y más desagradable es una auténtica discrepancia de ID. TradingView rastrea cada orden y posición mediante un id que le proporciona la integración. Si ese id del backend cambia entre el envío de la solicitud y su procesamiento, la biblioteca acaba apuntando a un id que ya no existe. Así, las solicitudes de cierre y modificación hacen referencia a datos obsoletos y fallan en silencio, y la interfaz muestra órdenes o posiciones que no coinciden con la cuenta. La documentación de TradingView lo señala directamente y ofrece una vía de recuperación específica.
Principales causas de un Position Closing Timeout en TradingView-Tradovate
1. La confirmación no llegó dentro de la ventana de ~10 segundos
Es el caso más simple. La solicitud de cierre salió, pero el positionUpdate (con el id coincidente y qty de 0) no volvió al gráfico dentro del timeout de la biblioteca. Un feed de datos de mercado congestionado, un fallo breve de red o una ralentización del lado de Tradovate bastan para perder la ventana aunque la posición se cierre sin problemas.
2. Un ID de orden o posición cambió tras el envío (la discrepancia)
Si el backend reasigna un id entre el envío y el procesamiento, el gráfico hace referencia a algo que ya no existe. Las acciones de cierre y modificación apuntan al id antiguo, por lo que fallan, y la posición u orden parece "atascada" en el gráfico mientras Tradovate muestra otra realidad. Es exactamente el caso límite de "cambio dinámico de ID" que describe la documentación de la Broker API.
3. Una sesión de bróker obsoleta o caída
TradingView guarda en caché el estado de órdenes y posiciones de la cuenta conectada. Si la sesión de Tradovate se desvía, se cae o es expulsada (por ejemplo, al alcanzar el límite de sesiones simultáneas entre web, escritorio, móvil y TradingView), el gráfico puede seguir mostrando una instantánea que ya no coincide con la cuenta real, y un cierre contra esa instantánea acaba en timeout.
4. Una caída, congelación o límite de frecuencia del lado de Tradovate
Durante una incidencia de Tradovate, o cuando una actividad intensa de modificación/trailing agota los límites de solicitudes, las órdenes pueden congelarse y dejan de fluir las confirmaciones. Lo verá como botones de salida que no responden, bucles de "order can't be modified" y posiciones que no se cierran hasta reiniciar la conexión. Cuando Tradovate mismo no confirma, ningún clic en el gráfico eliminará el timeout.
Cómo solucionar un Position Closing Timeout: paso a paso
Confirme primero el estado real de la posición en Tradovate
Antes de tocar de nuevo el gráfico, averigüe qué hay realmente abierto. Inicie sesión en el Tradovate Web Trader y abra los paneles Positions y Orders. Si la posición ya está plana allí, el timeout fue una falsa alarma: la confirmación simplemente no llegó a TradingView y no hay nada que cerrar. Si sigue abierta, anote la cantidad exacta y las órdenes activas (stops/objetivos) para saber con precisión qué hay que aplanar. Trate Tradovate como la fuente de verdad y el gráfico como un espejo posiblemente obsoleto.
Fuerce una carga de estado nueva reconectando el bróker en TradingView
Si el gráfico y Tradovate no coinciden, haga que TradingView descarte su instantánea en caché y recargue desde cero. En el panel de trading del gráfico (el área del Account Manager), abra los controles de la cuenta de Tradovate conectada y desconecte y vuelva a conectar la sesión del bróker. Reconectar desencadena una carga al estilo de la primera vez, de modo que se obtiene de nuevo la lista completa y actual de órdenes y posiciones, lo que elimina ID discrepantes y entradas obsoletas. Actualizar la página y luego reconectar hace lo mismo si no encuentra un control directo de reconexión.
Para integradores: active ordersFullUpdate / positionsFullUpdate
Si construye sobre la Broker API de TradingView, o ejecuta un bridge que la usa, la documentación ofrece una recuperación explícita para discrepancias de ID. Llamar a ordersFullUpdate y positionsFullUpdate obliga a la biblioteca a borrar sus datos existentes y volver a cargar la lista completa de órdenes o posiciones, exactamente como en la primera carga. Eso elimina cualquier id obsoleto que el gráfico conservara. Estos métodos de actualización completa son herramientas solo para casos límite, pensadas para situaciones raras como cambios dinámicos de ID, no para su flujo de actualización habitual. Su opción por defecto para mantener el gráfico sincronizado debe seguir siendo orderUpdate y positionUpdate, que actualizan la interfaz sin una recarga completa.
Haga flatten manualmente si la posición sigue realmente abierta
Si Tradovate confirma que la posición es real y reconectar no le permitió cerrarla desde el gráfico, salga directamente en Tradovate. Use el control de flatten de la cuenta, o coloque una orden de mercado contraria por la cantidad abierta exacta (vender para cerrar una larga, comprar para cerrar una corta) y luego cancele cualquier stop/objetivo huérfano que siga activo. Hacerlo en el Tradovate Web Trader en lugar de pelear con el botón de cierre con timeout le da una ejecución limpia y evita apilar cierres duplicados.
Tabla de solución de problemas
| Error | Significado | Solución |
|---|---|---|
| Failed to close position: Position closing timeout | La confirmación de cierre no llegó al gráfico en ~10 segundos | Compruebe el estado real en Tradovate; si sigue abierta, reconecte el bróker o haga flatten directamente en Tradovate |
| Posición/orden visible en el gráfico pero ausente en Tradovate | El gráfico conserva un id obsoleto (discrepancia dinámica de ID) | Reconecte el bróker para forzar una recarga completa; los integradores llaman a positionsFullUpdate / ordersFullUpdate |
| Order placing / modifying timeout | La confirmación de la orden perdió la misma ventana de ~10 segundos del Trading Host | Verifique el estado de la orden en Tradovate antes de reenviar; reconecte si el gráfico está desincronizado |
| Order can't be modified / el botón de salida no hace nada | Sesión congelada o límites de solicitudes agotados durante actividad intensa | Deje de hacer clic, haga flatten con una orden de mercado contraria en Tradovate y luego reconecte |
| La posición no se cierra durante una caída | Tradovate no confirma el estado; incidencia del feed o de la plataforma | Gestione el riesgo directamente desde Tradovate o una conexión de respaldo; espere a que se resuelva la incidencia |
Evítelo con PickMyTrade
PickMyTrade enruta sus alertas de TradingView a Tradovate mediante un bridge dedicado en lugar de depender de la sesión de Broker API en vivo del gráfico, lo que elimina la mayoría de los puntos de fallo de sincronización detrás de un closing timeout:
- Señales de cierre y flatten fiables, una única alerta de cierre o flatten envía una salida limpia a Tradovate, así que no depende de un botón del gráfico cuya confirmación caducó.
- Estado de órdenes consistente, el bridge rastrea la orden que envió y su estado, de modo que sus salidas no dependen de que los ID en caché del gráfico se mantengan perfectamente sincronizados.
- Enrutamiento seguro frente a límites de frecuencia, espacia el tráfico de órdenes y modificaciones para no agotar los límites de solicitudes de Tradovate ni provocar las congelaciones que causan timeouts.
- Sincronización multicuenta, replica la misma salida validada en todas las cuentas conectadas a la vez, en lugar de dejar una cuenta atascada abierta.
El resultado: menos momentos de "¿se cerró de verdad?" y registros más limpios cuando sí necesite depurar.
Deje de vigilar salidas con timeout
Vincule sus alertas hoy y opere sin rechazos con señales de cierre y flatten fiables que no dependen del estado en caché de un gráfico.
Comience su prueba gratuita de 7 díasPreguntas frecuentes
No necesariamente. El timeout significa que TradingView no recibió una confirmación en unos 10 segundos. Es posible que la posición ya esté plana en Tradovate. Revise el panel de posiciones en el Tradovate Web Trader antes de volver a hacer clic en cerrar, para no abrir sin querer una nueva posición en sentido contrario.
Es el síntoma de una discrepancia de ID. El gráfico hace referencia a un ID de orden o posición que cambió o ya no existe en el backend, por lo que su vista en caché está obsoleta. Reconectar el bróker de Tradovate en TradingView fuerza una recarga completa y realinea ambos lados.
Indican a la biblioteca de TradingView que borre sus datos existentes de órdenes o posiciones y vuelva a cargar la lista completa como si fuera la primera carga, lo que elimina los ID obsoletos. Son métodos orientados a integradores, pensados solo para casos límite poco frecuentes como cambios dinámicos de ID, no para actualizaciones rutinarias.
No. La documentación de TradingView es explícita: las actualizaciones completas son pesadas y se reservan para casos límite. Lo habitual para mantener la interfaz al día son orderUpdate y positionUpdate, que actualizan elementos individuales sin borrar y recargar todo.
Está integrado en la Broker API de TradingView. Tras una acción de cierre u orden, la biblioteca espera hasta unos 10 segundos una confirmación a través del Trading Host; si no llega ninguna, devuelve un timeout. La solución consiste en recibir a tiempo una confirmación válida y coincidente, o en recargar el estado, no en reintentar a ciegas.
Durante un timeout la conexión puede ir con retraso, así que los clics repetidos ponen en cola varios cierres que se disparan todos cuando se recupera. Haga clic una vez, verifique en Tradovate y, si está atascado, haga flatten directamente allí en lugar de machacar el botón del gráfico.
Sí. Si tiene la sesión iniciada a la vez en web, escritorio, móvil y TradingView, las sesiones pueden expulsarse y el estado del gráfico queda obsoleto, lo que se manifiesta como timeouts y órdenes congeladas. Cierre las sesiones adicionales y mantenga un único dispositivo activo.
Normalmente ninguno por sí solo. Es una brecha de sincronización entre ambos. TradingView espera una confirmación; Tradovate tarda en enviarla, cambió un ID o está en medio de una incidencia. Las soluciones fiables (comprobar el estado real, reconectar para recargar, hacer flatten directamente) funcionan sea cual sea el lado que se retrasó.
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. ni por Bookmap. Todos los nombres, logotipos y marcas relacionados son propiedad de sus respectivos titulares. Las funciones y los pasos de la plataforma cambian con el tiempo, por lo que confirme siempre el proceso actual en la documentación oficial de la plataforma antes de actuar.