WebSocket API v1 – Wie man ein gültiges Orderbuch pflegt

Zuletzt aktualisiert: 1. Apr. 2025

Der WebSocket API v1 Orderbuch-Feed liefert alle Marktdaten, die zur Pflege einer lokalen Kopie eines Kraken Orderbuchs benötigt werden.

Zum Beispiel könnte der Orderbuch-Feed für XBT/USD verwendet werden, um das Orderbuch für unser Bitcoin/US-Dollar-Währungspaar abzurufen und zu pflegen, genau wie das Orderbuch auf unserer Handelsplattform angezeigt wird.

Der Orderbuch-Feed liefert einen anfänglichen Snapshot des aktuellen Orderbuchs und streamt dann Updates des Orderbuchs in Echtzeit, sodass ein über den Orderbuch-Feed gepflegtes Orderbuch jederzeit aktuell ist.

Alle Details zum JSON-Format für den Orderbuch-Feed finden Sie in unserer WebSocket API v1 Dokumentation.

Orderbuch-Snapshot

Nach dem Abonnieren des Orderbuch-Feeds ist die erste Marktdatenmeldung ein Snapshot des aktuellen Orderbuchs.

Der Orderbuch-Snapshot enthält das gesamte Orderbuch bis zur angeforderten (abonnierten) Tiefe, wie das folgende Beispiel des XBT/USD-Orderbuchs mit einer Tiefe von 10 zeigt:

[0,{"as":[["5290.80000","1.00000000","1556724667.748660"],["5290.90000","4.49956524","1556724664.331028"],["5291.70000","1.00000000","1556724653.480504"],["5292.00000","0.95388940","1556724619.682690"],["5292.20000","1.51300000","1556724494.497326"],["5293.10000","0.69800000","1556724667.635414"],["5293.20000","2.00000000","1556724656.022756"],["5293.90000","2.83200000","1556724668.057687"],["5294.10000","0.99600000","1556724666.340462"],["5294.50000","5.00000000","1556724661.980996"]],"bs":[["5290.10000","1.43195600","1556724666.594179"],["5289.80000","2.00000000","1556724663.082526"],["5289.40000","0.49400000","1556724665.274827"],["5289.20000","0.89533312","1556724640.520134"],["5287.40000","3.23600000","1556724660.997516"],["5287.30000","3.33000000","1556724659.999108"],["5287.00000","10.20000000","1556724635.850932"],["5286.00000","3.86378703","1556724662.757360"],["5285.70000","6.40000000","1556724488.785281"],["5283.90000","0.50000000","1556723616.006805"]]},"book-10","XBT/USD"]

Der Snapshot enthält die aktuellen besten Bid-/Ask-Preise mit ihren verfügbaren Volumina und das Datum/die Uhrzeit der letzten Aktualisierung des Preisniveaus (als UNIX-Zeitstempel in Sekunden mit 6 Dezimalstellen).

Änderungen der Preisniveaus

Nach dem anfänglichen Snapshot werden die Preisniveaus des Orderbuchs in Echtzeit über Update-, Insert- und Delete-Nachrichten geändert.

Update-Nachrichten

Eine Update-Nachricht aktualisiert ein bereits im Orderbuch vorhandenes Preisniveau, indem sie ein neues Volumen und einen Zeitstempel bereitstellt, wie das folgende Update für das Preisniveau 5293.1 auf der Ask-Seite des Orderbuchs:

[0,{"a":[["5293.10000","0.39800000","1556724673.104421"]], "c":"408163318"},"book-10","XBT/USD"]

Während der Preis gleich bleibt (5293.1), wird das verfügbare Volumen zu diesem Preis von 0.69800000 (wie im anfänglichen Snapshot angegeben) auf 0.39800000 geändert, und der neue Zeitstempel für das Preisniveau spiegelt das Datum/die Uhrzeit der Änderung wider.

Update-Nachrichten ändern nur Preisniveaus, die bereits im Orderbuch existieren; sie fügen keine Preisniveaus zum Orderbuch hinzu oder entfernen sie.

Insert-Nachrichten

Eine Insert-Nachricht fügt ein neues Preisniveau zum Orderbuch hinzu, wie das folgende Insert für das Preisniveau 5294.4 auf der Ask-Seite des Orderbuchs:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]], "c":"393966308"},"book-10","XBT/USD"]

Jede Insert-Nachricht enthält das neue Preisniveau (5294.4), das verfügbare Volumen zu diesem Preis (0.99600000) und den Zeitstempel der letzten Aktualisierung des Preisniveaus.

Insert-Nachrichten ändern die Preisniveaus innerhalb des Orderbuchs, indem sie ein neues Preisniveau erstellen, alle nachfolgenden Preisniveaus (niedrigere Bid-Preise oder höhere Ask-Preise) nach außen verschieben und das äußerste Preisniveau aus dem Geltungsbereich des Orderbuchs herausdrängen.

Zum Beispiel würde aus dem obigen anfänglichen Snapshot die Insert-Nachricht:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]], "c":"393966308"},"book-10","XBT/USD"]

Das Preisniveau 5294.4 in das Orderbuch auf Ebene 10 (dem höchsten Ask-Preis) hinzufügen und das Preisniveau 5294.5 aus dem Geltungsbereich des Orderbuchs verschieben (indem 5294.5 effektiv auf Ebene 11 verschoben wird).

Delete-Nachrichten

Eine Delete-Nachricht entfernt ein Preisniveau aus dem Orderbuch, wie die folgende partielle Delete-Nachricht für das Preisniveau 5294.1 auf der Ask-Seite des Orderbuchs:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"]] ... },"book-10","XBT/USD"]

Delete-Nachrichten enthalten das nicht mehr existierende Preisniveau, geben immer ein verfügbares Volumen von 0.0 an und enthalten einen Zeitstempel, der das Datum/die Uhrzeit angibt, zu der das Preisniveau aus dem Orderbuch entfernt wurde.

Delete-Nachrichten ändern die Preisniveaus innerhalb des Orderbuchs, indem sie das betroffene Preisniveau entfernen (vollständig aus dem Orderbuch, nicht nur aus der abonnierten Tiefe), alle nachfolgenden Preisniveaus (niedrigere Bid-Preise oder höhere Ask-Preise) nach innen verschieben und ein neues Preisniveau in den Geltungsbereich des Orderbuchs ziehen.

Beachten Sie, dass einem Delete immer sofort ein Insert folgt, das ein neues Preisniveau auf der äußersten Ebene (z. B. Ebene 10 für eine abonnierte Tiefe von 10) in den Geltungsbereich bringt.

Zum Beispiel würde aus dem obigen anfänglichen Snapshot die Delete-/Insert-Nachricht:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"],["5294.70000","3.34000000","1556724653.951982","r"]], "c":"3679121060"},"book-10","XBT/USD"]

Dies würde das Preisniveau 5294.1 von Ebene 9 des Orderbuchs löschen, das Preisniveau 5294.5 von Ebene 10 auf Ebene 9 verschieben und sofort das neue Preisniveau 5294.7 auf Ebene 10 des Orderbuchs hinzufügen (die äußerste Ebene und der höchste Ask-Preis für eine Tiefe von 10).

Zusätzliche Ressourcen

Weitere Details zur Orderbuch-Logik sind über ein Beispiel-Orderbuch-Transkript und Beispielcode zur Implementierung von asynchronen (multi-threaded) und synchronen (single-threaded) Kommandozeilen-Clients verfügbar.

Die in diesem Artikel gezeigten Dezimal- und Tausendertrennzeichen können von den auf unseren Handelsplattformen angezeigten Formaten abweichen. Lesen Sie unseren Artikel darüber, wie wir Punkte und Kommas verwenden, um weitere Informationen zu erhalten.

Brauchst du weitere Hilfe?