Abbonarsi ai dati di mercato tramite l’API di Tradovate
Vuole ricevere bid, offer e operazioni in tempo reale nel suo codice? Ecco il percorso esatto dal token di accesso a un flusso di quotazioni attivo, più i due errori che fanno inciampare quasi tutti.
On This Page
Vuole ricevere bid, offer e operazioni in tempo reale nel suo codice anziché nell’app Trader? Tradovate li fornisce tramite un WebSocket, ma non quello che la maggior parte prova per primo. Se sbaglia endpoint, ogni sottoscrizione restituisce un criptico Not found: md/subscribeQuote. Ecco il percorso esatto dal token di accesso a un flusso di quotazioni attivo, più i due errori che fanno inciampare quasi tutti.
Perché un socket dati di mercato separato?
Tradovate suddivide il suo traffico in tempo reale su due WebSocket. Uno trasporta gli eventi del suo conto e dei suoi ordini; l’altro trasporta i dati di mercato, quotazioni, profondità del DOM, grafici e istogrammi. Parlano lo stesso protocollo di frame, ma risiedono su host diversi. Gli endpoint dei dati di mercato come md/subscribeQuote esistono solo sul socket dei dati di mercato, quindi, se invia quella richiesta al socket del conto, riceve un errore «not found» anche se il suo token è perfettamente valido.
Prima di iniziare
- Accesso API abilitato, il componente aggiuntivo API Access deve essere attivo per il suo login.
- Un token di accesso, lo otterrà al Passaggio 1.
- Un’abilitazione ai dati di mercato in tempo reale, i dati API in tempo reale richiedono un abbonamento ai dati di mercato CME (diventa sub-vendor registrato). La tariffa è di alcune centinaia di dollari al mese, quindi controlli la tariffa attuale di Tradovate prima di impegnarsi. Senza di essa si collegherà comunque, ma riceverà una risposta
Symbol is inaccessible.
Abbonarsi ai dati di mercato di Tradovate: passo dopo passo
Ottenere un token di accesso
Invii le sue credenziali con POST a auth/accessTokenRequest. La risposta restituisce un accessToken (e un mdAccessToken) insieme a un orario di scadenza. Conservi quel token: il socket dei dati di mercato si autorizza con lo stesso token di accesso usato sull’API REST. Se la richiesta fallisce del tutto, verifichi prima che il componente aggiuntivo API Access sia effettivamente abilitato sul suo conto.
Aprire il WebSocket dei dati di mercato
Punti il suo client WebSocket all’host dei dati di mercato, non all’host del conto. Nel momento in cui la connessione ai dati di mercato si apre, il server invia un singolo frame o. È il suo segnale per autorizzarsi.
Autorizzare il socket
Ogni richiesta sul socket è un frame di testo semplice con quattro campi separati da ritorni a capo: l’endpoint, un id di richiesta intero univoco, una query string facoltativa e un body facoltativo. Per autorizzare, l’endpoint è authorize e il body è il suo token. Il server risponde con un frame a contenente uno stato 200. Una volta visto, il socket è attivo.
Sottoscrivere con md/subscribeQuote
Ora invii la sottoscrizione. Lo stesso frame a quattro campi: l’endpoint è md/subscribeQuote e il body indica il contratto. Utilizzi il contratto attuale del mese frontale (sostituisca ESU6 con quello attivo quando lo esegue), oppure passi un contractId numerico al posto della stringa del simbolo. Un’avvertenza: si sottoscriva a un solo simbolo per richiesta. Per seguire più strumenti, invii di nuovo md/subscribeQuote con un nuovo id di richiesta per ciascuno; la stessa connessione li gestisce tutti.
Leggere le quotazioni e mantenere attivi gli heartbeat
Le quotazioni arrivano ora come frame a che racchiudono un evento md. Ogni oggetto quotazione contiene un timestamp, un contractId e una mappa entries con Bid, Offer e Trade, ciascuno con un price e un size. C’è una cosa che non può saltare: gli heartbeat. Invii un frame con un array vuoto, letteralmente [], ogni 2,5 secondi, altrimenti il server chiude la connessione per inattività e le quotazioni si fermano di colpo. Quando ha finito con un feed, invii md/unsubscribeQuote con lo stesso simbolo per spegnerlo.
| Ambiente | URL dei dati di mercato |
|---|---|
| Demo / simulato | wss://md-demo.tradovateapi.com/v1/websocket |
| Live / finanziato | wss://md.tradovateapi.com/v1/websocket |
Per riferimento, il socket del conto si trova su wss://demo.tradovateapi.com/v1/websocket e wss://live.tradovateapi.com/v1/websocket, nomi host del tutto diversi.
authorize
1
YOUR_ACCESS_TOKEN
Cioè authorize, poi 1, poi una riga di query vuota, poi il token, ciascuno su una riga propria.
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}}}]}}
Problemi comuni
- "Not found: md/subscribeQuote", si trova sul socket del conto. Si riconnetta all’host
md-demo/mddel Passaggio 2. - "Symbol is inaccessible", il suo login non ha un accordo sui dati in tempo reale per quel prodotto, oppure il simbolo non è un contratto valido del mese frontale.
- Il feed si zittisce dopo pochi secondi, ha smesso di inviare gli heartbeat
[]. Li metta su un timer di 2,5 secondi che giri per tutta la vita del socket.
Eviti l’infrastruttura con PickMyTrade
Mettere in piedi un socket dei dati di mercato, rinnovo dei token, heartbeat, logica di riconnessione e licenza dati CME è un lavoro concreto ancora prima di aver piazzato un solo ordine. Se il suo obiettivo è solo automatizzare ingressi e uscite dalla sua strategia, PickMyTrade collega i suoi alert di TradingView direttamente a Tradovate. Nessun WebSocket da gestire.
Eviti l’infrastruttura WebSocket
Nessun rinnovo del token, heartbeat o logica di riconnessione da gestire: PickMyTrade collega i suoi alert di TradingView direttamente a Tradovate.
Inizi la prova gratuita di 7 giorniDomande frequenti
No. Autorizzi il socket dei dati di mercato con lo stesso token di accesso che ottiene da auth/accessTokenRequest. La risposta di autenticazione restituisce anche un campo mdAccessToken; controlli la documentazione attuale se una chiamata dovesse rifiutare il suo token.
La connessione è corretta, ma il suo conto non ha un accordo sui dati in tempo reale per quel prodotto, oppure il simbolo non è il contratto attivo. Aggiunga l’abbonamento ai dati di mercato CME e utilizzi un simbolo valido del mese frontale.
Sì. Invii md/subscribeQuote una volta per simbolo, ciascuna con il proprio id di richiesta, sullo stesso socket. Non esiste una forma con array; ripeta invece la richiesta.
Questa guida ha scopo esclusivamente educativo e informativo e non costituisce consulenza finanziaria, di investimento o di trading. Il trading di futures e di altri prodotti a leva comporta un rischio sostanziale di perdita e non è adatto a tutti gli investitori. PickMyTrade è una piattaforma di automazione indipendente di terze parti e non è affiliata, approvata né sponsorizzata da Tradovate, Inc. «Tradovate» e tutti i nomi, loghi e marchi correlati sono di proprietà dei rispettivi titolari. Le funzionalità e i passaggi della piattaforma cambiano nel tempo, quindi confermi sempre la procedura attuale nella piattaforma e nella documentazione ufficiali di Tradovate prima di agire.