Tradovate-WS abonniert, aber keine Kurse (keine Daten)
Ihr md/subscribeQuote-Aufruf liefert ein sauberes 200, und trotzdem strömt nichts außer Heartbeats. Prüfen Sie das hasMarketData-Flag des Kontos, das ist fast immer die eigentliche Ursache.
On This Page
- Was "hasMarketData": false bedeutet
- Häufigste Ursachen für fehlende Kurse über den WebSocket
- 1. Das Konto hat keine Live-Marktdatenberechtigung (hasMarketData: false)
- 2. Abonnement auf dem Handels-Socket statt auf dem Marktdaten-Socket
- 3. Marktdaten-Socket mit dem falschen Token autorisiert
- 4. Sie befinden sich auf einem Demo-/simulierten oder verzögerten Feed
- 5. Ungültiges Symbol oder "Symbol is inaccessible"
- So beheben Sie fehlende Kurse über den WebSocket: Schritt für Schritt
- Die Berechtigung korrigieren (hasMarketData auf true setzen)
- Socket und Token-Verdrahtung korrigieren
- Ein Prop-/Evaluierungskonto korrigieren
- API-spezifischer Hinweis
- Tabelle zur Fehlerbehebung
- Vermeiden Sie das mit PickMyTrade
Sie haben den Tradovate-WebSocket verdrahtet, sich sauber autorisiert, md/subscribeQuote abgefeuert und ein ordentliches {"s":200,"i":1} zurückerhalten, Erfolg. Und dann nichts. Nur eine endlose Folge von h-Heartbeat-Frames und nicht ein einziger a-Datenframe mit Bid oder Ask. Prüfen Sie das Konto, und eine Zeile erklärt alles: "hasMarketData": false. Der Socket tut genau das, was Sie ihm gesagt haben; das Konto ist schlicht nicht berechtigt, Live-Kurse zu empfangen. Das ist eine der verwirrenderen Stolperfallen der Tradovate-API, genau weil jede Logzeile “OK” meldet, während Ihr Kurs-Feed völlig stumm bleibt. Hier die vollständige Aufschlüsselung, was das Flag bedeutet, warum es dazu kommt und wie Sie die Kurse wieder einschalten.
Kurz-Checkliste bei fehlenden Echtzeitkursen
- "hasMarketData": false am Konto, das Konto hat keine Berechtigung für Live-Marktdaten. Aktivieren oder abonnieren Sie Marktdaten, bevor Sie a-Datenframes erwarten.
- Falscher Socket, Kurse kommen vom Marktdaten-WebSocket (md.tradovateapi.com), nicht vom Handels-Socket (live.tradovateapi.com). Abonnieren Sie auf dem falschen, erhalten Sie nur Heartbeats.
- Falsches Token, der Marktdaten-Socket muss mit dem mdAccessToken autorisiert werden, nicht mit dem Handels-accessToken.
- Demo-/simulierter Feed, ein Demo- oder Eval-Konto liefert möglicherweise verzögerte oder simulierte Daten statt Börsen-Echtzeitdaten. Prüfen Sie den Datenplan des Kontos.
- Ungültiges Symbol, abonnieren Sie einen gültigen Front-Month-Kontrakt (z. B. MNQU5), keinen kontinuierlichen Alias, sonst erhalten Sie womöglich "Symbol is inaccessible."
- Prop-/Funded-Konto, bei Evaluierungskonten kann nur die Prop Firm Live-Daten aktivieren. Sie können sich nicht selbst abonnieren.
Was "hasMarketData": false bedeutet
hasMarketData ist ein Flag auf Kontoebene, das Tradovate in Ihren Kontoeinstellungen zurückgibt. Ist es true, besitzt das Konto eine aktive Marktdatenberechtigung, sodass der Echtzeit-Kursstrom der Börse dorthin fließen darf. Ist es false, hat das Konto keine Live-Marktdatenvereinbarung und kein Abonnement, und dieses eine Flag setzt alles Nachgelagerte außer Kraft.
Entscheidend ist, dass Berechtigung und Abonnement zwei getrennte Ebenen sind. md/subscribeQuote mit der Antwort {"s":200} bestätigt nur, dass die Abonnementanfrage wohlgeformt war und vom Socket akzeptiert wurde. Es sagt nichts darüber aus, ob das Konto berechtigt ist, die Daten hinter diesem Abonnement zu empfangen. So tappen Sie in genau die Falle, die das Flag beschreibt: ein gültiges, “erfolgreiches” Abonnement, das null a-Frames erzeugt, weil das Konto nie für den Empfang von Live-Preisen freigegeben wurde.
Klar gesagt: Die Leitung ist verbunden und offen, aber der Hahn davor ist zu. Ihn zu öffnen ist eine Konto- und Berechtigungsmaßnahme, keine Code-Korrektur, kein noch so häufiges erneutes Abonnieren stellt ein false-Flag um.
Häufigste Ursachen für fehlende Kurse über den WebSocket
1. Das Konto hat keine Live-Marktdatenberechtigung (hasMarketData: false)
Das ist die Grundursache, die das Flag buchstäblich meldet. Echtzeit-Futures-Kurse sind lizenzierte Börsendaten. Um sie zu erhalten, braucht das Konto ein aktives Marktdaten-Abonnement plus die passende Börsendatenvereinbarung, für CME-Produkte ist das die CME-Vereinbarung für Nicht-Professionelle oder Professionelle. Solange diese Berechtigung fehlt, gibt die Börse keine Live-Ticks an das Konto frei, sodass der Socket nichts weiterleiten kann.
2. Abonnement auf dem Handels-Socket statt auf dem Marktdaten-Socket
Tradovate betreibt zwei getrennte WebSocket-Verbindungen. Order-Routing und Kontodaten laufen über den Handels-Socket (wss://live.tradovateapi.com/v1/websocket bzw. wss://demo.tradovateapi.com/... in der Demo). Kurse, DOM und Charts laufen über den Marktdaten-Socket (wss://md.tradovateapi.com/v1/websocket bzw. wss://md-demo.tradovateapi.com/... in der Demo). Senden Sie md/subscribeQuote an den Handels-Socket, erhalten Sie womöglich trotzdem eine 200-Bestätigung plus Heartbeats, aber die a-Echtzeitframes kommen nie an, weil dieser Socket keine Marktdaten ausliefert.
3. Marktdaten-Socket mit dem falschen Token autorisiert
Bei der Authentifizierung liefert Tradovate zwei Tokens zurück: accessToken für den Handels-Socket und mdAccessToken für den Marktdaten-Socket. Jeder Socket muss nach dem Öffnen mit dem Authorize-Frame und seinem eigenen Token autorisiert werden. Autorisieren Sie den md-Socket mit dem Handels-accessToken, verhält sich die Verbindung so, als wäre sie nie ordnungsgemäß berechtigt gewesen: Heartbeats, aber keine Kurse.
4. Sie befinden sich auf einem Demo-/simulierten oder verzögerten Feed
Eine neue oder Demo-Umgebung liefert oft simulierte oder verzögerte Daten statt eines Börsen-Echtzeit-Feeds. Deshalb zeigt das Testen am Demo-Endpunkt so oft ein sauberes Abonnement gefolgt von keinen Live-Ticks, die Umgebung ist schlicht nicht an einen bezahlten, berechtigten Echtzeitstrom angebunden. Klären Sie, ob das Konto überhaupt Live-Börsendaten haben soll, bevor Sie einen Code-Fehler vermuten.
5. Ungültiges Symbol oder "Symbol is inaccessible"
Selbst bei vorhandener Berechtigung kann das Abonnieren eines Symbols, für das Ihr Konto nicht lizenziert ist, oder eines kontinuierlichen/Alias-Symbols statt eines echten Front-Month-Kontrakts einen Symbol is inaccessible-Fehler und keine Daten liefern. Abonnieren Sie immer den aktuellen Front-Month-Kontrakt mit dem korrekten CME-Monatscode (zum Beispiel MNQU5), nicht eine generische Wurzel oder einen Chart-Alias.
So beheben Sie fehlende Kurse über den WebSocket: Schritt für Schritt
Die Berechtigung korrigieren (hasMarketData auf true setzen)
Bei der Web-Plattform anmelden
Melden Sie sich bei der Tradovate-Web-Plattform mit demselben Konto an, das Sie über die API verbinden.
Die Marktdaten-Einstellungen öffnen
Öffnen Sie die Konto-/Marktdaten-Einstellungen und suchen Sie den Abschnitt für das Marktdaten-Abonnement.
Ein Echtzeit-Abonnement hinzufügen und die Vereinbarung unterzeichnen
Fügen Sie ein Echtzeit-Marktdaten-Abonnement für die Börse(n) hinzu, die Sie handeln (CME für ES, NQ, MNQ, MES usw.), und füllen Sie die erforderliche Börsendatenvereinbarung aus und unterzeichnen Sie sie, für die meisten Privathändler als Nicht-Professioneller. Die richtige Stufe und die aktuelle Gebühr variieren, prüfen Sie daher die aktuellen Tarife von Tradovate.
Ab- und wieder anmelden, damit es wirksam wird
Speichern Sie, melden Sie sich dann vollständig ab und wieder an, damit die Berechtigung übernommen wird. Fragen Sie das Konto erneut ab und bestätigen Sie "hasMarketData": true.
Socket und Token-Verdrahtung korrigieren
Einen zweiten WebSocket zum Marktdaten-Host öffnen
Öffnen Sie einen zweiten WebSocket zum Marktdaten-Host: wss://md.tradovateapi.com/v1/websocket (verwenden Sie md-demo.tradovateapi.com für die Demo-Umgebung).
Mit mdAccessToken autorisieren
Senden Sie nach dem o-Open-Frame einen Authorize-Frame mit dem mdAccessToken aus Ihrer Auth-Antwort, nicht mit dem Handels-accessToken.
Ein gültiges Front-Month-Symbol abonnieren
Warten Sie die 200-Bestätigung der Autorisierung ab und senden Sie dann md/subscribeQuote mit einem gültigen Front-Month-Symbol (z. B. MNQU5).
Die Frames beobachten
Beobachten Sie die Frames: Heartbeats kommen als h an, echte Kurse jetzt als a-Datenframes mit Bid/Ask/Last. Sehen Sie weiterhin nur h, ist die Berechtigung (Schritt oben) Ihr Hindernis, nicht die Verdrahtung.
Ein Prop-/Evaluierungskonto korrigieren
Nicht selbst abonnieren
Ist das Konto eine Evaluierung oder ein Funded-Konto einer Prop Firm, versuchen Sie nicht, sich selbst zu abonnieren, die Firma stellt die Daten zentral bereit.
Den Support der Prop Firm kontaktieren
Wenden Sie sich an den Support der Prop Firm und bitten Sie darum, Live-Marktdaten für Ihr Konto zu aktivieren oder zu reparieren.
Nach der Bestätigung erneut prüfen
Sobald diese es bestätigt, melden Sie sich ab und wieder an und prüfen Sie hasMarketData erneut.
API-spezifischer Hinweis
Programmatische Echtzeitdaten über die API unterliegen zusätzlich zu den Plattformdaten einer eigenen Börsenlizenz. Je nach Nutzung und Börse kann das den Status als registrierter Marktdatenanbieter und eine wiederkehrende Lizenzgebühr erfordern, der Betrag variiert je nach Börse und ändert sich im Lauf der Zeit, bestätigen Sie daher die aktuelle CME-/Tradovate-Zahl, bevor Sie budgetieren. Wenn Sie nur Orders platzieren möchten, können Sie sie auf kostenlosen verzögerten Daten routen und die Echtzeitlizenz komplett überspringen.
Tabelle zur Fehlerbehebung
| Symptom / Fehler | Bedeutung | Lösung |
|---|---|---|
| "hasMarketData": false in den Kontoeinstellungen | Konto hat keine Live-Marktdatenberechtigung | Ein Echtzeit-Marktdaten-Abonnement hinzufügen und die Börsendatenvereinbarung unterzeichnen, dann neu anmelden |
| Subscribe liefert {"s":200}, aber nur h-Frames | Abonnement akzeptiert, aber keine Daten freigegeben/geliefert | Prüfen, ob die Berechtigung true ist, sowie richtigen Socket und richtiges Token |
| Nur Heartbeats auf live.tradovateapi.com | Auf dem Handels-Socket abonniert | Den Marktdaten-Socket md.tradovateapi.com öffnen und dort abonnieren |
| Kurse schlagen nach der Autorisierung fehl | md-Socket mit Handels-Token autorisiert | Den md-Socket mit mdAccessToken autorisieren, nicht mit accessToken |
| Symbol is inaccessible | Nicht für dieses Symbol berechtigt oder ungültiges/kontinuierliches Symbol | Einen lizenzierten Front-Month-Kontrakt mit dem korrekten Monatscode verwenden |
| Live-Ticks kommen in der Demo nie an | Demo-/simulierter oder verzögerter Feed | Klären, ob das Konto einen berechtigten Echtzeit-Feed führen soll |
| Prop-/Eval-Konto zeigt keine Daten | Nur die Firma kann Daten aktivieren | Die Prop Firm bitten, Live-Marktdaten zu aktivieren |
Vermeiden Sie das mit PickMyTrade
Wenn Ihr Ziel darin besteht, Tradovate aus TradingView zu automatisieren, statt selbst einen rohen Marktdaten-Socket zu bauen, umgeht PickMyTrade das meiste davon, indem es Ihre TradingView-Alerts direkt zur Ausführung an Ihr Tradovate-Konto weiterleitet:
- Kein roher Marktdaten-Socket zu verdrahten, PickMyTrade handelt auf Ihre TradingView-Signale, sodass Sie keine md/subscribeQuote-Streams pflegen oder zwei Sockets und zwei Tokens jonglieren müssen.
- Berechtigungs- und Datenvereinbarungs-bewusst, das Order-Routing berücksichtigt den Live-Daten- und Vereinbarungsstatus des Kontos, sodass Sie nicht von einem stillen hasMarketData: false überrascht werden.
- Ratenlimit-sicheres Routing, der Orderfluss wird getaktet, sodass nichts an den Anfragelimits von Tradovate abprallt.
- Multi-Account-Synchronisierung, spiegeln Sie dieselbe automatisierte Order gleichzeitig auf mehrere Tradovate-Konten.
Automatisieren ohne rohen Socket
Starten Sie Ihre kostenlose 7-Tage-Testphase und automatisieren Sie Tradovate aus TradingView, ohne selbst einen Marktdaten-Socket zu bauen.
Starten Sie Ihre kostenlose 7-Tage-TestphaseHäufig gestellte Fragen
Sie bedeutet, dass die Abonnementanfrage vom Socket akzeptiert wurde, nicht, dass Daten fließen. Ist hasMarketData false, erhalten Sie weiterhin nur h-Heartbeat-Frames und keine a-Datenframes.
Es ist ein Flag auf Kontoebene, das Tradovate in den Kontoeinstellungen zurückgibt. True bedeutet, dass das Konto eine aktive Berechtigung für Live-Marktdaten besitzt, false bedeutet, dass für das Konto keine Echtzeit-Börsendaten freigegeben sind.
Heartbeat-Frames (h) halten nur die Verbindung am Leben. Echte Kurse kommen als a-Datenframes an, und diese werden nur gestreamt, wenn das Konto berechtigt ist und Sie auf dem richtigen Marktdaten-Socket mit dem richtigen Token abonniert sind.
An den dedizierten Marktdaten-Socket wss://md.tradovateapi.com/v1/websocket (oder md-demo.tradovateapi.com in der Demo). Der Handels-Socket unter live.tradovateapi.com liefert keine Kurse.
Verwenden Sie das mdAccessToken, um den Marktdaten-Socket zu autorisieren. Das einfache accessToken ist für den Handels-Socket.
Echtzeit-Börsenkurse erfordern ein Marktdaten-Abonnement und die Datenvereinbarung der Börse. Der programmatische API-Zugriff kann eine zusätzliche Börsenlizenzgebühr nach sich ziehen. Die Beträge variieren je nach Börse und ändern sich im Lauf der Zeit, prüfen Sie die aktuellen Tarife von Tradovate.
Bei den meisten Prop-/Eval-Konten können Sie sich nicht selbst abonnieren. Wenden Sie sich an den Support der Prop Firm und bitten Sie darum, Live-Marktdaten zu aktivieren, melden Sie sich dann ab und wieder an.
Nein. Sie können Orders auf kostenlosen verzögerten Daten absenden und die Echtzeit-Marktdatenlizenz komplett überspringen, die Berechtigung steuert hauptsächlich den Zugang zu Live-Kursen und Charts.
Dieser Leitfaden dient ausschließlich Bildungs- und Informationszwecken und stellt weder Finanz-, Anlage- noch Handelsberatung dar. Der Handel mit Futures und anderen gehebelten Produkten birgt ein erhebliches Verlustrisiko und ist nicht für jeden Anleger geeignet. PickMyTrade ist eine unabhängige Automatisierungsplattform eines Drittanbieters und steht in keiner Verbindung zu Tradovate, Inc., wird weder von Tradovate, Inc. unterstützt noch gesponsert. „Tradovate“ sowie alle zugehörigen Namen, Logos und Marken sind Eigentum ihrer jeweiligen Inhaber. Funktionen und Schritte der Plattform ändern sich im Laufe der Zeit. Prüfen Sie daher stets den aktuellen Ablauf in der offiziellen Tradovate-Plattform und -Dokumentation, bevor Sie handeln.