WS de Tradovate se suscribe pero sin cotizaciones (sin datos)
Su llamada a md/subscribeQuote devuelve un 200 limpio y, aun así, no se transmite nada salvo heartbeats. Compruebe el indicador hasMarketData de la cuenta, casi siempre es la verdadera explicación.
On This Page
- Qué significa "hasMarketData": false
- Principales causas de la ausencia de cotizaciones por el WebSocket
- 1. La cuenta no tiene derecho a datos de mercado en vivo (hasMarketData: false)
- 2. Suscribirse en el socket de trading en lugar del de datos de mercado
- 3. Autorizar el socket de datos de mercado con el token equivocado
- 4. Está en un feed demo/simulado o diferido
- 5. Símbolo no válido o "Symbol is inaccessible"
- Cómo solucionar la ausencia de cotizaciones por el WebSocket: paso a paso
- Corregir el derecho de datos (poner hasMarketData en true)
- Corregir el cableado del socket y del token
- Corregir una cuenta prop / de evaluación
- Nota específica de la API
- Tabla de solución de problemas
- Evítelo con PickMyTrade
Conectó el WebSocket de Tradovate, se autorizó sin problemas, lanzó md/subscribeQuote y recibió un ordenado {"s":200,"i":1}, éxito. Y luego nada. Solo una racha interminable de tramas de heartbeat h y ni una sola trama de datos a con un bid o un ask. Inspeccione la cuenta y una línea lo explica todo: "hasMarketData": false. El socket hace exactamente lo que usted le indicó; la cuenta simplemente no tiene derecho a recibir cotizaciones en vivo. Es uno de los tropiezos más confusos de la API de Tradovate precisamente porque cada línea del registro dice “OK” mientras su feed de precios permanece en absoluto silencio. Aquí tiene el desglose completo: qué significa el indicador, por qué ocurre y cómo reactivar las cotizaciones.
Lista de verificación rápida para la ausencia de cotizaciones en tiempo real
- "hasMarketData": false en la cuenta, la cuenta no tiene derecho a datos de mercado en vivo. Active o contrate datos de mercado antes de esperar tramas de datos a.
- Socket equivocado, las cotizaciones llegan por el WebSocket de datos de mercado (md.tradovateapi.com), no por el socket de trading (live.tradovateapi.com). Si se suscribe en el equivocado, solo obtiene heartbeats.
- Token equivocado, el socket de datos de mercado debe autorizarse con el mdAccessToken, no con el accessToken de trading.
- Feed demo/simulado, una cuenta demo o de evaluación puede servir datos diferidos o simulados en lugar de tiempo real de bolsa. Confirme el plan de datos de la cuenta.
- Símbolo incorrecto, suscríbase a un contrato válido del mes frontal (p. ej. MNQU5), no a un alias continuo, o podría recibir "Symbol is inaccessible."
- Cuenta prop/fondeada, en las cuentas de evaluación, solo la prop firm puede activar los datos en vivo. No puede suscribirse por su cuenta.
Qué significa "hasMarketData": false
hasMarketData es un indicador a nivel de cuenta que Tradovate devuelve en la configuración de su cuenta. Cuando es true, la cuenta posee un derecho activo de datos de mercado, de modo que el flujo de cotizaciones en tiempo real de la bolsa está autorizado a llegar a ella. Cuando es false, la cuenta no tiene ningún acuerdo ni suscripción de datos de mercado en vivo, y ese único indicador anula todo lo que viene después.
Lo clave es entender que el derecho y la suscripción son dos capas distintas. md/subscribeQuote devolviendo {"s":200} solo confirma que la solicitud de suscripción estaba bien formada y fue aceptada por el socket. No dice nada sobre si la cuenta tiene derecho a recibir los datos detrás de esa suscripción. Así cae en la trampa exacta que describe el indicador: una suscripción válida y “exitosa” que produce cero tramas a porque la cuenta nunca fue autorizada a recibir precios en vivo.
Dicho claramente: la tubería está conectada y abierta, pero el grifo aguas arriba está cerrado. Abrirlo es una acción de cuenta y de derechos, no una corrección de código; ninguna cantidad de nuevas suscripciones cambiará un indicador false.
Principales causas de la ausencia de cotizaciones por el WebSocket
1. La cuenta no tiene derecho a datos de mercado en vivo (hasMarketData: false)
Esta es la causa raíz que el indicador reporta literalmente. Las cotizaciones de futuros en tiempo real son datos con licencia de bolsa. Para recibirlas, la cuenta necesita una suscripción activa de datos de mercado más el acuerdo de datos de la bolsa correspondiente; para los productos CME, es el acuerdo CME para no profesionales o profesionales. Mientras ese derecho no exista, la bolsa no liberará ticks en vivo a la cuenta, así que el socket no tiene nada que reenviar.
2. Suscribirse en el socket de trading en lugar del de datos de mercado
Tradovate ejecuta dos conexiones WebSocket separadas. El enrutamiento de órdenes y los datos de cuenta fluyen por el socket de trading (wss://live.tradovateapi.com/v1/websocket, o wss://demo.tradovateapi.com/... en demo). Las cotizaciones, el DOM y los gráficos fluyen por el socket de datos de mercado (wss://md.tradovateapi.com/v1/websocket, o wss://md-demo.tradovateapi.com/... en demo). Si envía md/subscribeQuote al socket de trading, aún puede recibir un acuse 200 más heartbeats, pero las tramas a en tiempo real nunca llegan, porque ese socket no sirve datos de mercado.
3. Autorizar el socket de datos de mercado con el token equivocado
Al autenticarse, Tradovate devuelve dos tokens: accessToken para el socket de trading y mdAccessToken para el socket de datos de mercado. Cada socket debe autorizarse con su propio token mediante la trama authorize tras abrirlo. Si autoriza el socket md con el accessToken de trading, la conexión se comporta como si nunca hubiera tenido derecho: heartbeats, pero ninguna cotización.
4. Está en un feed demo/simulado o diferido
Un entorno nuevo o demo suele entregar datos simulados o diferidos en lugar de un feed de bolsa en tiempo real. Por eso probar en el endpoint demo muestra tan a menudo una suscripción limpia seguida de ningún tick en vivo: el entorno simplemente no está conectado a un flujo en tiempo real de pago y con derecho. Confirme si la cuenta está pensada para tener datos de bolsa en vivo antes de suponer un error de código.
5. Símbolo no válido o "Symbol is inaccessible"
Incluso con el derecho en regla, suscribirse a un símbolo para el que su cuenta no tiene licencia, o a un símbolo continuo/alias en lugar de un contrato real del mes frontal, puede devolver un error Symbol is inaccessible y ningún dato. Suscríbase siempre al contrato actual del mes frontal usando el código de mes de CME correcto (por ejemplo MNQU5), no a una raíz genérica ni a un alias de gráfico.
Cómo solucionar la ausencia de cotizaciones por el WebSocket: paso a paso
Corregir el derecho de datos (poner hasMarketData en true)
Inicie sesión en la plataforma web
Inicie sesión en la plataforma web de Tradovate con la misma cuenta que conecta mediante la API.
Abra la configuración de datos de mercado
Abra la configuración de cuenta/datos de mercado y localice la sección de suscripción de datos de mercado.
Añada una suscripción en tiempo real y firme el acuerdo
Añada una suscripción de datos de mercado en tiempo real para las bolsas que opera (CME para ES, NQ, MNQ, MES, etc.) y complete y firme el acuerdo de datos de bolsa requerido, no profesional para la mayoría de los traders minoristas. El nivel correcto y la tarifa actual varían, así que consulte las tarifas actuales de Tradovate.
Cierre sesión y vuelva a iniciarla para propagar
Guarde, luego cierre sesión por completo y vuelva a iniciarla para que el derecho se propague. Vuelva a consultar la cuenta y confirme "hasMarketData": true.
Corregir el cableado del socket y del token
Abra un segundo WebSocket al host de datos de mercado
Abra un segundo WebSocket al host de datos de mercado: wss://md.tradovateapi.com/v1/websocket (use md-demo.tradovateapi.com para el entorno demo).
Autorice con mdAccessToken
Tras la trama open o, envíe una trama authorize con el mdAccessToken de su respuesta de autenticación, no con el accessToken de trading.
Suscríbase a un símbolo válido del mes frontal
Espere el acuse 200 de la autorización y luego envíe md/subscribeQuote con un símbolo válido del mes frontal (p. ej. MNQU5).
Observe las tramas
Observe las tramas: los heartbeats llegan como h; las cotizaciones reales llegan ahora como tramas de datos a con bid/ask/last. Si sigue viendo solo h, el bloqueo es el derecho de datos (paso anterior), no el cableado.
Corregir una cuenta prop / de evaluación
No se suscriba por su cuenta
Si la cuenta es una evaluación o cuenta fondeada de una prop firm, no intente suscribirse por su cuenta, la firma provisiona los datos de forma centralizada.
Contacte con el soporte de la prop firm
Contacte con el soporte de la prop firm y pídales que activen o reparen los datos de mercado en vivo en su cuenta.
Vuelva a comprobar tras la confirmación
Cuando lo confirmen, cierre sesión, vuelva a iniciarla y compruebe de nuevo hasMarketData.
Nota específica de la API
Los datos en tiempo real programáticos a través de la API conllevan su propia licencia de bolsa además de los datos de la plataforma. Según su uso y la bolsa, eso puede requerir la condición de proveedor de datos de mercado registrado y una tarifa de licencia recurrente, el importe varía según la bolsa y cambia con el tiempo, así que confirme la cifra actual de CME/Tradovate antes de presupuestar. Si solo necesita enviar órdenes, puede enrutarlas con datos diferidos gratuitos y omitir por completo la licencia en tiempo real.
Tabla de solución de problemas
| Síntoma / error | Significado | Solución |
|---|---|---|
| "hasMarketData": false en la configuración de la cuenta | La cuenta no tiene derecho a datos de mercado en vivo | Añadir una suscripción de datos de mercado en tiempo real y firmar el acuerdo de datos de bolsa, luego volver a iniciar sesión |
| Subscribe devuelve {"s":200} pero solo tramas h | Suscripción aceptada pero sin datos autorizados/servidos | Verificar que el derecho sea true, el socket correcto y el token correcto |
| Solo heartbeats en live.tradovateapi.com | Suscrito en el socket de trading | Abrir el socket de datos de mercado md.tradovateapi.com y suscribirse allí |
| Las cotizaciones fallan tras autorizar | Socket md autorizado con el token de trading | Autorizar el socket md con mdAccessToken, no con accessToken |
| Symbol is inaccessible | Sin derecho para ese símbolo, o símbolo no válido/continuo | Usar un contrato del mes frontal con licencia y el código de mes correcto |
| Los ticks en vivo nunca llegan en demo | Feed demo/simulado o diferido | Confirmar que la cuenta está pensada para llevar un feed en tiempo real con derecho |
| La cuenta prop/de evaluación no muestra datos | Solo la firma puede activar los datos | Pedir a la prop firm que active los datos de mercado en vivo |
Evítelo con PickMyTrade
Si su objetivo es automatizar Tradovate desde TradingView en lugar de construir a mano un socket de datos de mercado en bruto, PickMyTrade evita la mayor parte de esto enrutando sus alertas de TradingView directamente a su cuenta de Tradovate para su ejecución:
- Sin socket de datos de mercado en bruto que conectar, PickMyTrade actúa sobre sus señales de TradingView, por lo que no mantiene flujos md/subscribeQuote ni maneja dos sockets y dos tokens.
- Consciente de derechos y acuerdos de datos, el enrutamiento de órdenes respeta el estado de datos en vivo y de acuerdo de la cuenta, así que no le sorprende un silencioso hasMarketData: false.
- Enrutamiento seguro frente a límites de tasa, el flujo de órdenes se espacia para que nada rebote contra los límites de solicitudes de Tradovate.
- Sincronización multicuenta, replique la misma orden automatizada en varias cuentas de Tradovate a la vez.
Automatice sin el socket en bruto
Comience su prueba gratuita de 7 días y automatice Tradovate desde TradingView sin construir a mano un socket de datos de mercado.
Comience su prueba gratuita de 7 díasPreguntas frecuentes
Significa que el socket aceptó la solicitud de suscripción, no que fluyan datos. Si hasMarketData es false, seguirá recibiendo solo tramas de heartbeat h y ninguna trama de datos a.
Es un indicador a nivel de cuenta que Tradovate devuelve en la configuración de la cuenta. True significa que la cuenta tiene un derecho activo de datos de mercado en vivo; false significa que no hay datos de bolsa en tiempo real autorizados para ella.
Las tramas de heartbeat (h) solo mantienen viva la conexión. Las cotizaciones reales llegan como tramas de datos a, y solo se transmiten cuando la cuenta tiene derecho y usted está suscrito en el socket de datos de mercado correcto con el token correcto.
Al socket dedicado de datos de mercado, wss://md.tradovateapi.com/v1/websocket (o md-demo.tradovateapi.com en demo). El socket de trading en live.tradovateapi.com no sirve cotizaciones.
Use el mdAccessToken para autorizar el socket de datos de mercado. El accessToken normal es para el socket de trading.
Las cotizaciones de bolsa en tiempo real requieren una suscripción de datos de mercado y el acuerdo de datos de la bolsa. El acceso programático por API puede conllevar una tarifa de licencia de bolsa adicional. Los importes varían según la bolsa y cambian con el tiempo, consulte las tarifas actuales de Tradovate.
En la mayoría de las cuentas prop/de evaluación no puede suscribirse por su cuenta. Contacte con el soporte de la prop firm y pídales que activen los datos de mercado en vivo; después cierre sesión y vuelva a iniciarla.
No. Puede enviar órdenes con datos diferidos gratuitos y omitir por completo la licencia de datos de mercado en tiempo real; el derecho de datos limita principalmente las cotizaciones y los gráficos en vivo.
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. «Tradovate» y 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 debe confirmar siempre el proceso actual en la plataforma y la documentación oficiales de Tradovate antes de actuar.