Tradovate API

WS Tradovate sottoscrive ma nessuna quotazione (nessun dato)

La sua chiamata md/subscribeQuote restituisce un 200 pulito, eppure non arriva in streaming altro che heartbeat. Controlli il flag hasMarketData dell'account, è quasi sempre la vera spiegazione.

On This Page

Ha collegato il WebSocket di Tradovate, si è autorizzato senza problemi, ha lanciato md/subscribeQuote e ha ricevuto un ordinato {"s":200,"i":1}, successo. Poi niente. Solo una sequenza infinita di frame di heartbeat h e nemmeno un frame di dati a con un bid o un ask. Ispezioni l'account e una riga spiega tutto: "hasMarketData": false. Il socket fa esattamente ciò che gli ha detto; l'account semplicemente non è abilitato a ricevere quotazioni live. È uno degli intoppi più confusi dell'API di Tradovate proprio perché ogni riga di log dice “OK” mentre il suo feed di prezzi resta del tutto muto. Ecco il dettaglio completo: cosa significa il flag, perché accade e come riattivare le quotazioni.

Checklist rapida per l'assenza di quotazioni in tempo reale

  • "hasMarketData": false sull'account, l'account non ha alcuna abilitazione ai dati di mercato live. Attivi o sottoscriva i dati di mercato prima di aspettarsi frame di dati a.
  • Socket sbagliato, le quotazioni arrivano dal WebSocket dei dati di mercato (md.tradovateapi.com), non dal socket di trading (live.tradovateapi.com). Se sottoscrive su quello sbagliato, ottiene solo heartbeat.
  • Token sbagliato, il socket dei dati di mercato deve essere autorizzato con il mdAccessToken, non con l'accessToken di trading.
  • Feed demo/simulato, un account demo o di valutazione può servire dati ritardati o simulati anziché il tempo reale di borsa. Confermi il piano dati dell'account.
  • Simbolo errato, sottoscriva un contratto valido del mese in corso (ad es. MNQU5), non un alias continuo, altrimenti potrebbe ricevere "Symbol is inaccessible."
  • Account prop/finanziato, sugli account di valutazione solo la prop firm può abilitare i dati live. Non può sottoscrivere da solo.

Cosa significa "hasMarketData": false

hasMarketData è un flag a livello di account che Tradovate restituisce nelle impostazioni del suo account. Quando è true, l'account detiene un'abilitazione attiva ai dati di mercato, quindi il flusso di quotazioni in tempo reale della borsa è autorizzato a raggiungerlo. Quando è false, l'account non ha alcun accordo o sottoscrizione di dati di mercato live, e quel singolo flag prevale su tutto ciò che sta a valle.

L'aspetto chiave è capire che abilitazione e sottoscrizione sono due livelli distinti. md/subscribeQuote che restituisce {"s":200} conferma solo che la richiesta di sottoscrizione era ben formata ed è stata accettata dal socket. Non dice nulla sul fatto che l'account sia abilitato a ricevere i dati dietro quella sottoscrizione. Così finisce nella trappola esatta che il flag descrive: una sottoscrizione valida e “riuscita” che produce zero frame a perché l'account non è mai stato autorizzato a ricevere prezzi live.

In parole semplici: il tubo è collegato e aperto, ma il rubinetto a monte è chiuso. Aprirlo è un'azione sull'account e sull'abilitazione, non una correzione del codice, nessuna nuova sottoscrizione farà cambiare un flag false.

Principali cause dell'assenza di quotazioni tramite WebSocket

1. L'account non ha alcuna abilitazione ai dati di mercato live (hasMarketData: false)

Questa è la causa radice che il flag segnala letteralmente. Le quotazioni dei futures in tempo reale sono dati con licenza di borsa. Per riceverle, l'account necessita di una sottoscrizione attiva ai dati di mercato più il relativo accordo sui dati di borsa in archivio, per i prodotti CME, è l'accordo CME non professionale o professionale. Finché tale abilitazione non esiste, la borsa non rilascerà tick live all'account, quindi il socket non ha nulla da inoltrare.

2. Sottoscrivere sul socket di trading invece che su quello dei dati di mercato

Tradovate gestisce due connessioni WebSocket separate. L'instradamento degli ordini e i dati dell'account passano dal socket di trading (wss://live.tradovateapi.com/v1/websocket, o wss://demo.tradovateapi.com/... in demo). Quotazioni, DOM e grafici passano dal socket dei dati di mercato (wss://md.tradovateapi.com/v1/websocket, o wss://md-demo.tradovateapi.com/... in demo). Se invia md/subscribeQuote al socket di trading, può comunque ricevere una conferma 200 più heartbeat, ma i frame a in tempo reale non arrivano mai, perché quel socket non serve dati di mercato.

3. Autorizzare il socket dei dati di mercato con il token sbagliato

Quando si autentica, Tradovate restituisce due token: accessToken per il socket di trading e mdAccessToken per il socket dei dati di mercato. Ogni socket deve essere autorizzato con il proprio token tramite il frame authorize dopo l'apertura. Se autorizza il socket md con l'accessToken di trading, la connessione si comporta come se non fosse mai stata abilitata correttamente: heartbeat, ma nessuna quotazione.

4. Si trova su un feed demo/simulato o ritardato

Un ambiente nuovo o demo spesso fornisce dati simulati o ritardati anziché un feed di borsa in tempo reale. Ecco perché testare sull'endpoint demo mostra così spesso una sottoscrizione pulita seguita da nessun tick live, l'ambiente semplicemente non è collegato a un flusso in tempo reale a pagamento e abilitato. Confermi se l'account è destinato ad avere dati di borsa live prima di presumere un bug nel codice.

5. Simbolo non valido o "Symbol is inaccessible"

Anche con l'abilitazione in regola, sottoscrivere un simbolo per cui il suo account non ha licenza, o un simbolo continuo/alias invece di un vero contratto del mese in corso, può restituire un errore Symbol is inaccessible e nessun dato. Sottoscriva sempre il contratto del mese in corso utilizzando il codice mese CME corretto (ad esempio MNQU5), non una radice generica o un alias del grafico.

Come risolvere l'assenza di quotazioni tramite WebSocket: passo dopo passo

Correggere l'abilitazione (portare hasMarketData a true)

1

Acceda alla piattaforma web

Acceda alla piattaforma web di Tradovate con lo stesso account che collega tramite API.

2

Apra le impostazioni dei dati di mercato

Apra le impostazioni dell'account/dei dati di mercato e trovi la sezione della sottoscrizione ai dati di mercato.

3

Aggiunga una sottoscrizione in tempo reale e firmi l'accordo

Aggiunga una sottoscrizione ai dati di mercato in tempo reale per le borse che negozia (CME per ES, NQ, MNQ, MES e così via) e completi e firmi l'accordo sui dati di borsa richiesto, non professionale per la maggior parte dei trader retail. Il livello corretto e la tariffa attuale variano, quindi controlli le tariffe attuali di Tradovate.

4

Esca e acceda di nuovo per propagare

Salvi, poi esca completamente e acceda di nuovo affinché l'abilitazione si propaghi. Interroghi di nuovo l'account e confermi "hasMarketData": true.

Correggere il collegamento di socket e token

1

Apra un secondo WebSocket verso l'host dei dati di mercato

Apra un secondo WebSocket verso l'host dei dati di mercato: wss://md.tradovateapi.com/v1/websocket (usi md-demo.tradovateapi.com per l'ambiente demo).

2

Autorizzi con mdAccessToken

Dopo il frame open o, invii un frame authorize usando il mdAccessToken della sua risposta di autenticazione, non l'accessToken di trading.

3

Sottoscriva un simbolo valido del mese in corso

Attenda la conferma 200 dell'autorizzazione, poi invii md/subscribeQuote con un simbolo valido del mese in corso (ad es. MNQU5).

4

Osservi i frame

Osservi i frame: gli heartbeat arrivano come h; le quotazioni reali arrivano ora come frame di dati a contenenti bid/ask/last. Se vede ancora solo h, il suo ostacolo è l'abilitazione (passaggio precedente), non il collegamento.

Correggere un account prop / di valutazione

1

Non sottoscriva da solo

Se l'account è una valutazione o un account finanziato di una prop firm, non provi a sottoscrivere da solo, la società fornisce i dati in modo centralizzato.

2

Contatti il supporto della prop firm

Contatti il supporto della prop firm e chieda di abilitare o riparare i dati di mercato live sul suo account.

3

Ricontrolli dopo la conferma

Una volta che hanno confermato, esca e acceda di nuovo e ricontrolli hasMarketData.

Nota specifica per l'API

I dati in tempo reale programmatici tramite API comportano una propria licenza di borsa oltre ai dati della piattaforma. A seconda dell'uso e della borsa, ciò può richiedere lo status di fornitore di dati di mercato registrato e una tariffa di licenza ricorrente, l'importo varia a seconda della borsa e cambia nel tempo, quindi confermi la cifra attuale CME/Tradovate prima di fare il budget. Se vuole solo inviare ordini, può instradarli su dati ritardati gratuiti e saltare del tutto la licenza in tempo reale.

Tabella di risoluzione dei problemi

Sintomo / errore Significato Correzione
"hasMarketData": false nelle impostazioni dell'accountL'account non ha alcuna abilitazione ai dati di mercato liveAggiungere una sottoscrizione ai dati di mercato in tempo reale e firmare l'accordo sui dati di borsa, poi accedere di nuovo
Subscribe restituisce {"s":200} ma solo frame hSottoscrizione accettata ma nessun dato autorizzato/servitoVerificare che l'abilitazione sia true, il socket corretto e il token corretto
Solo heartbeat su live.tradovateapi.comSottoscritto sul socket di tradingAprire il socket dei dati di mercato md.tradovateapi.com e sottoscrivere lì
Le quotazioni falliscono dopo l'autorizzazioneSocket md autorizzato con il token di tradingAutorizzare il socket md con mdAccessToken, non con accessToken
Symbol is inaccessibleNessuna abilitazione per quel simbolo, o simbolo non valido/continuoUsare un contratto del mese in corso con licenza e il codice mese corretto
I tick live non arrivano mai in demoFeed demo/simulato o ritardatoConfermare che l'account sia destinato a portare un feed in tempo reale abilitato
L'account prop/di valutazione non mostra datiSolo la società può abilitare i datiChiedere alla prop firm di abilitare i dati di mercato live

Lo eviti con PickMyTrade

Se il suo obiettivo è automatizzare Tradovate da TradingView anziché costruire a mano un socket di dati di mercato grezzo, PickMyTrade aggira buona parte di tutto questo instradando i suoi alert TradingView direttamente al suo account Tradovate per l'esecuzione:

  • Nessun socket di dati di mercato grezzo da collegare, PickMyTrade agisce sui suoi segnali TradingView, quindi non mantiene flussi md/subscribeQuote né deve destreggiarsi tra due socket e due token.
  • Attento ad abilitazioni e accordi sui dati, l'instradamento degli ordini rispetta lo stato dei dati live e dell'accordo dell'account, così non viene colto di sorpresa da un silenzioso hasMarketData: false.
  • Instradamento sicuro rispetto ai limiti di frequenza, il flusso degli ordini è distanziato in modo che nulla rimbalzi contro i limiti di richieste di Tradovate.
  • Sincronizzazione multi-account, replichi lo stesso ordine automatizzato su più account Tradovate contemporaneamente.

Automatizzi senza il socket grezzo

Inizi la prova gratuita di 7 giorni e automatizzi Tradovate da TradingView senza costruire a mano un socket di dati di mercato.

Inizi la prova gratuita di 7 giorni

Domande frequenti

Significa che la richiesta di sottoscrizione è stata accettata dal socket, non che i dati stiano fluendo. Se hasMarketData è false, riceverà comunque solo frame di heartbeat h e nessun frame di dati a.

È un flag a livello di account che Tradovate restituisce nelle impostazioni dell'account. True significa che l'account ha un'abilitazione attiva ai dati di mercato live; false significa che nessun dato di borsa in tempo reale è autorizzato per esso.

I frame di heartbeat (h) mantengono solo in vita la connessione. Le quotazioni reali arrivano come frame di dati a, e vengono trasmesse solo quando l'account è abilitato e lei è sottoscritto sul socket di dati di mercato corretto con il token corretto.

Al socket dedicato ai dati di mercato, wss://md.tradovateapi.com/v1/websocket (o md-demo.tradovateapi.com in demo). Il socket di trading su live.tradovateapi.com non serve quotazioni.

Utilizzi il mdAccessToken per autorizzare il socket dei dati di mercato. Il semplice accessToken è per il socket di trading.

Le quotazioni di borsa in tempo reale richiedono una sottoscrizione ai dati di mercato e l'accordo sui dati della borsa. L'accesso programmatico via API può comportare una tariffa di licenza di borsa aggiuntiva. Gli importi variano a seconda della borsa e cambiano nel tempo, consulti le tariffe attuali di Tradovate.

Sulla maggior parte degli account prop/di valutazione non può sottoscrivere da solo. Contatti il supporto della prop firm e chieda di abilitare i dati di mercato live, poi esca e acceda di nuovo.

No. Può inviare ordini con dati ritardati gratuiti e saltare del tutto la licenza dei dati di mercato in tempo reale, l'abilitazione regola soprattutto quotazioni e grafici live.

Questa guida ha esclusivamente finalità educative e informative e non costituisce consulenza finanziaria, di investimento o di trading. Operare in futures e in altri prodotti a leva comporta un rischio di perdita sostanziale 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: confermi sempre la procedura aggiornata nella piattaforma e nella documentazione ufficiali di Tradovate prima di agire.