Marktdaten über die Tradovate-API abonnieren
Möchten Sie Live-Bids, -Offers und -Trades in Ihren eigenen Code streamen? Hier ist der genaue Weg vom Access-Token zum laufenden Quote-Stream, plus die zwei Fehler, über die fast jeder stolpert.
On This Page
Möchten Sie Live-Bids, -Offers und -Trades in Ihren eigenen Code streamen statt in die Trader-App? Tradovate liefert sie über einen WebSocket, aber nicht über den, den die meisten zuerst versuchen. Ist der Endpunkt falsch, kommt jedes Abonnement als kryptisches Not found: md/subscribeQuote zurück. Hier ist der genaue Weg vom Access-Token zum laufenden Quote-Stream, plus die zwei Fehler, über die fast jeder stolpert.
Warum ein separater Marktdaten-Socket?
Tradovate teilt seinen Echtzeit-Datenverkehr auf zwei WebSockets auf. Einer überträgt Ihre Konto- und Order-Ereignisse, der andere Marktdaten, Quotes, DOM-Tiefe, Charts und Histogramme. Sie sprechen dasselbe Frame-Protokoll, liegen aber auf verschiedenen Hosts. Marktdaten-Endpunkte wie md/subscribeQuote existieren nur auf dem Marktdaten-Socket. Senden Sie diese Anfrage also an den Konto-Socket, erhalten Sie einen „Not found“-Fehler, obwohl Ihr Token völlig gültig ist.
Bevor Sie beginnen
- API-Zugang aktiviert, das API-Access-Add-on muss für Ihr Login eingeschaltet sein.
- Ein Access-Token, das Sie in Schritt 1 abrufen.
- Eine Live-Marktdaten-Berechtigung, Echtzeit-API-Daten erfordern ein CME-Marktdatenabonnement (Sie werden registrierter Sub-Vendor). Die Gebühr beträgt einige hundert Dollar im Monat, prüfen Sie also Tradovates aktuellen Tarif, bevor Sie sich festlegen. Ohne sie verbinden Sie sich zwar, erhalten aber nur die Antwort
Symbol is inaccessible.
Tradovate-Marktdaten abonnieren: Schritt für Schritt
Ein Access-Token abrufen
Senden Sie Ihre Zugangsdaten per POST an auth/accessTokenRequest. Die Antwort liefert ein accessToken (und ein mdAccessToken) samt Ablaufzeit. Bewahren Sie dieses Token auf, denn der Marktdaten-Socket autorisiert sich mit demselben Access-Token wie die REST-API. Schlägt die Anfrage komplett fehl, prüfen Sie zuerst, ob das API-Access-Add-on in Ihrem Konto tatsächlich aktiviert ist.
Den Marktdaten-WebSocket öffnen
Richten Sie Ihren WebSocket-Client auf den Marktdaten-Host, nicht auf den Konto-Host. Sobald Ihre Marktdatenverbindung offen ist, sendet der Server einen einzelnen o-Frame. Das ist Ihr Stichwort zur Autorisierung.
Den Socket autorisieren
Jede Anfrage über den Socket ist ein einfacher Text-Frame mit vier durch Zeilenumbrüche getrennten Feldern: dem Endpunkt, einer eindeutigen ganzzahligen Request-ID, einem optionalen Query-String und einem optionalen Body. Zur Autorisierung ist der Endpunkt authorize und der Body Ihr Token. Der Server antwortet mit einem a-Frame mit dem Status 200. Sobald Sie ihn sehen, ist der Socket aktiv.
Mit md/subscribeQuote abonnieren
Senden Sie nun das Abonnement. Derselbe Vier-Felder-Frame: Der Endpunkt ist md/subscribeQuote und der Body benennt den Kontrakt. Verwenden Sie den aktuellen Front-Month-Kontrakt (ersetzen Sie ESU6 durch den, der gerade aktiv ist) oder übergeben Sie statt des Symbol-Strings eine numerische contractId. Ein Haken: Abonnieren Sie pro Anfrage nur ein Symbol. Um mehrere Instrumente zu beobachten, senden Sie md/subscribeQuote für jedes erneut mit neuer Request-ID; dieselbe Verbindung bedient alle.
Quotes lesen und Heartbeats am Leben halten
Quotes treffen nun als a-Frames ein, die ein md-Ereignis umschließen. Jedes Quote-Objekt enthält einen timestamp, eine contractId und eine entries-Map mit Bid, Offer und Trade, jeweils mit price und size. Eines dürfen Sie nicht auslassen: Heartbeats. Senden Sie alle 2,5 Sekunden einen Frame mit leerem Array, buchstäblich [], sonst schließt der Server die Verbindung wegen Inaktivität und Ihre Quotes versiegen schlagartig. Wenn Sie einen Feed nicht mehr brauchen, senden Sie md/unsubscribeQuote mit demselben Symbol, um ihn abzuschalten.
| Umgebung | Marktdaten-URL |
|---|---|
| Demo / simuliert | wss://md-demo.tradovateapi.com/v1/websocket |
| Live / finanziert | wss://md.tradovateapi.com/v1/websocket |
Zur Orientierung: Der Konto-Socket liegt unter wss://demo.tradovateapi.com/v1/websocket und wss://live.tradovateapi.com/v1/websocket, also auf völlig anderen Hostnamen.
authorize
1
YOUR_ACCESS_TOKEN
Das ist authorize, dann 1, dann eine leere Query-Zeile, dann das Token, jeweils in einer eigenen Zeile.
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}}}]}}
Häufige Stolperfallen
- "Not found: md/subscribeQuote", Sie befinden sich auf dem Konto-Socket. Verbinden Sie sich erneut mit dem Host
md-demo/mdaus Schritt 2. - "Symbol is inaccessible", Ihrem Login fehlt eine Echtzeitdaten-Vereinbarung für dieses Produkt, oder das Symbol ist kein gültiger Front-Month-Kontrakt.
- Der Feed verstummt nach wenigen Sekunden, Sie haben keine
[]-Heartbeats mehr gesendet. Legen Sie sie auf einen 2,5-Sekunden-Timer, der für die gesamte Lebensdauer des Sockets läuft.
Sparen Sie sich die Installation mit PickMyTrade
Einen Marktdaten-Socket aufzusetzen, Token-Refresh, Heartbeats, Reconnect-Logik und die CME-Datenlizenz, ist echte Arbeit, noch bevor Sie eine einzige Order platziert haben. Wenn Ihr Ziel nur ist, Ein- und Ausstiege Ihrer Strategie zu automatisieren, verbindet PickMyTrade Ihre TradingView-Alerts direkt mit Tradovate. Kein WebSocket, um den Sie sich kümmern müssen.
Sparen Sie sich die WebSocket-Installation
Kein Token-Refresh, keine Heartbeats und keine Reconnect-Logik, um die Sie sich kümmern müssen: PickMyTrade verbindet Ihre TradingView-Alerts direkt mit Tradovate.
Starten Sie Ihre kostenlose 7-Tage-TestphaseHäufig gestellte Fragen
Nein. Autorisieren Sie den Marktdaten-Socket mit demselben Access-Token, das Sie von auth/accessTokenRequest erhalten. Die Auth-Antwort liefert außerdem ein Feld mdAccessToken; prüfen Sie die aktuelle Dokumentation, falls ein Aufruf Ihr Token jemals ablehnt.
Die Verbindung steht, aber Ihr Konto hat keine Echtzeitdaten-Vereinbarung für dieses Produkt, oder das Symbol ist nicht der aktive Kontrakt. Fügen Sie das CME-Marktdatenabonnement hinzu und verwenden Sie ein gültiges Front-Month-Symbol.
Ja. Senden Sie md/subscribeQuote einmal pro Symbol, jeweils mit eigener Request-ID, über denselben Socket. Es gibt keine Array-Form; wiederholen Sie stattdessen die Anfrage.
Dieser Leitfaden dient ausschließlich Bildungs- und Informationszwecken und stellt keine Finanz-, Anlage- oder 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 diesem unterstützt noch gesponsert. „Tradovate“ und alle zugehörigen Namen, Logos und Marken sind Eigentum ihrer jeweiligen Inhaber. Plattformfunktionen und Schritte ändern sich im Laufe der Zeit; bestätigen Sie daher stets den aktuellen Ablauf in der offiziellen Tradovate-Plattform und -Dokumentation, bevor Sie handeln.