Suscríbase a datos de mercado a través de la API de Tradovate
¿Quiere recibir bids, offers y operaciones en vivo directamente en su propio código? Este es el camino exacto desde el token de acceso hasta un flujo de cotizaciones en marcha, más los dos errores que hacen tropezar a casi todos.
On This Page
¿Quiere recibir bids, offers y operaciones en vivo directamente en su propio código en lugar de en la aplicación Trader? Tradovate se los entrega mediante un WebSocket, pero no el que la mayoría prueba primero. Si se equivoca de endpoint, cada suscripción devuelve un críptico Not found: md/subscribeQuote. Este es el camino exacto desde el token de acceso hasta un flujo de cotizaciones en marcha, más los dos errores que hacen tropezar a casi todos.
¿Por qué un socket de datos de mercado separado?
Tradovate divide su tráfico en tiempo real entre dos WebSockets. Uno transporta los eventos de su cuenta y de sus órdenes; el otro transporta datos de mercado, cotizaciones, profundidad del DOM, gráficos e histogramas. Hablan el mismo protocolo de tramas, pero residen en hosts distintos. Los endpoints de datos de mercado como md/subscribeQuote solo existen en el socket de datos de mercado, así que, si envía esa solicitud al socket de la cuenta, recibe un error de «not found» aunque su token sea perfectamente válido.
Antes de empezar
- Acceso a la API habilitado, el complemento API Access debe estar activado para su inicio de sesión.
- Un token de acceso, lo obtendrá en el Paso 1.
- Un derecho de datos de mercado en vivo, los datos de API en tiempo real requieren una suscripción de datos de mercado de CME (usted se convierte en sub-vendor registrado). La tarifa ronda unos cientos de dólares al mes, así que consulte la tarifa vigente de Tradovate antes de comprometerse. Sin ella, igualmente se conectará, pero recibirá la respuesta
Symbol is inaccessible.
Suscribirse a los datos de mercado de Tradovate: paso a paso
Obtenga un token de acceso
Envíe sus credenciales mediante POST a auth/accessTokenRequest. La respuesta devuelve un accessToken (y un mdAccessToken) junto con una hora de expiración. Conserve ese token: el socket de datos de mercado se autoriza con el mismo token de acceso que usaría en la API REST. Si la solicitud falla por completo, confirme primero que el complemento API Access esté realmente habilitado en su cuenta.
Abra el WebSocket de datos de mercado
Apunte su cliente WebSocket al host de datos de mercado, no al host de la cuenta. En cuanto se abre su conexión de datos de mercado, el servidor envía una única trama o. Esa es su señal para autorizar.
Autorice el socket
Cada solicitud por el socket es una trama de texto plano con cuatro campos separados por saltos de línea: el endpoint, un id de solicitud entero único, una cadena de consulta opcional y un cuerpo opcional. Para autorizar, el endpoint es authorize y el cuerpo es su token. El servidor responde con una trama a que contiene un estado 200. Cuando la vea, el socket está activo.
Suscríbase con md/subscribeQuote
Ahora envíe la suscripción. La misma trama de cuatro campos: el endpoint es md/subscribeQuote y el cuerpo nombra el contrato. Use el contrato vigente del mes frontal (cambie ESU6 por el que esté activo cuando lo ejecute), o pase un contractId numérico en lugar de la cadena del símbolo. Un detalle: suscríbase a un solo símbolo por solicitud. Para vigilar varios instrumentos, envíe md/subscribeQuote de nuevo con un nuevo id de solicitud para cada uno; la misma conexión los atiende a todos.
Lea las cotizaciones y mantenga los heartbeats
Las cotizaciones llegan ahora como tramas a que envuelven un evento md. Cada objeto de cotización incluye un timestamp, un contractId y un mapa entries con Bid, Offer y Trade, cada uno con un price y un size. Hay algo que no puede omitir: los heartbeats. Envíe una trama con un array vacío, literalmente [], cada 2,5 segundos, o el servidor cerrará la conexión por inactividad y sus cotizaciones se detendrán en seco. Cuando termine con un feed, envíe md/unsubscribeQuote con el mismo símbolo para apagarlo.
| Entorno | URL de datos de mercado |
|---|---|
| Demo / simulado | wss://md-demo.tradovateapi.com/v1/websocket |
| En vivo / fondeado | wss://md.tradovateapi.com/v1/websocket |
Como referencia, el socket de la cuenta está en wss://demo.tradovateapi.com/v1/websocket y wss://live.tradovateapi.com/v1/websocket, nombres de host totalmente distintos.
authorize
1
YOUR_ACCESS_TOKEN
Es decir: authorize, luego 1, luego una línea de consulta vacía y después el token, cada uno en su propia línea.
md/subscribeQuote
2
{"symbol":"ESU6"}
{"e":"md","d":{"quotes":[{"contractId":123456,"entries":{"Bid":{"price":5602.25,"size":18},"Offer":{"price":5602.50,"size":24},"Trade":{"price":5602.25,"size":3}}}]}}
Problemas habituales
- "Not found: md/subscribeQuote", está en el socket de la cuenta. Vuelva a conectarse al host
md-demo/mddel Paso 2. - "Symbol is inaccessible", su inicio de sesión no tiene un acuerdo de datos en tiempo real para ese producto, o el símbolo no es un contrato válido del mes frontal.
- El feed se silencia tras unos segundos, dejó de enviar los heartbeats
[]. Póngalos en un temporizador de 2,5 segundos que se ejecute durante toda la vida del socket.
Olvídese de la infraestructura con PickMyTrade
Montar un socket de datos de mercado, renovación de tokens, heartbeats, lógica de reconexión y la licencia de datos de CME es trabajo de verdad antes de haber colocado una sola orden. Si su objetivo es simplemente automatizar las entradas y salidas de su estrategia, PickMyTrade conecta sus alertas de TradingView directamente con Tradovate. Sin ningún WebSocket que vigilar.
Olvídese de la infraestructura de WebSocket
Sin renovación de tokens, heartbeats ni lógica de reconexión que vigilar: PickMyTrade conecta sus alertas de TradingView directamente con Tradovate.
Comience su prueba gratuita de 7 díasPreguntas frecuentes
No. Autorice el socket de datos de mercado con el mismo token de acceso que obtiene de auth/accessTokenRequest. La respuesta de autenticación también devuelve un campo mdAccessToken; consulte la documentación actual si alguna llamada rechaza su token.
La conexión es correcta, pero su cuenta no tiene un acuerdo de datos en tiempo real para ese producto, o el símbolo no es el contrato activo. Añada la suscripción de datos de mercado de CME y use un símbolo válido del mes frontal.
Sí. Envíe md/subscribeQuote una vez por símbolo, cada una con su propio id de solicitud, por el mismo socket. No existe una forma con array; repita la solicitud en su lugar.
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 siempre debe confirmar el proceso vigente en la plataforma y la documentación oficiales de Tradovate antes de actuar.