WebSocket API v1 - Hoe een geldig orderboek te onderhouden

Laatst bijgewerkt: 1 apr 2025

De WebSocket API v1 orderboekfeed levert alle marktgegevens die nodig zijn om een lokale kopie van een Kraken orderboek te onderhouden.

De orderboekfeed voor XBT/USD kan bijvoorbeeld worden gebruikt om het orderboek voor ons Bitcoin/Amerikaanse dollar-valutapaar op te halen en te onderhouden, precies zoals het orderboek wordt weergegeven op ons handelsplatform.

De orderboekfeed biedt een initiële momentopname van het huidige orderboek en streamt vervolgens real-time updates naar het orderboek, zodat een orderboek dat via de orderboekfeed wordt bijgehouden altijd up-to-date is.

Volledige details van het JSON-formaat voor de orderboekfeed zijn beschikbaar in onze WebSocket API v1-documentatie.

Momentopname orderboek

Na het abonneren op de orderboekfeed, zal het eerste marktgegevensbericht een momentopname zijn van het huidige orderboek.

De momentopname van het orderboek omvat het gehele orderboek tot de gevraagde (geabonneerde) diepte, zoals het volgende voorbeeld van het XBT/USD orderboek tot een diepte van 10:

[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"]

De momentopname omvat de huidige beste bied-/laatprijzen, met hun beschikbare volumes, en de datum/tijd waarop het prijsniveau het meest recent is bijgewerkt (als een UNIX-tijdstempel in seconden tot 6 decimalen).

Wijzigingen in prijsniveaus

Na de initiële momentopname worden de prijsniveaus van het orderboek in real time gewijzigd via update-, invoeg- en verwijderberichten.

Updateberichten

Een updatebericht werkt een prijsniveau bij dat al bestaat binnen het orderboek door een nieuw volume en tijdstempel te verstrekken, zoals de volgende update voor prijsniveau 5293.1 aan de laatkant van het orderboek:

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

Hoewel de prijs hetzelfde blijft (5293.1), wordt het beschikbare volume op die prijs gewijzigd van 0.69800000 (zoals verstrekt door de initiële momentopname) naar 0.39800000, en het nieuwe tijdstempel voor het prijsniveau weerspiegelt de datum/tijd waarop de wijziging plaatsvond.

Updateberichten wijzigen alleen prijsniveaus die al bestaan binnen het orderboek; ze voegen geen prijsniveaus toe aan of verwijderen ze uit het orderboek.

Invoegberichten

Een invoegbericht voegt een nieuw prijsniveau toe aan het orderboek, zoals de volgende invoeging voor prijsniveau 5294.4 aan de laatkant van het orderboek:

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

Elk invoegbericht bevat het nieuwe prijsniveau (5294.4), het beschikbare volume op die prijs (0.99600000) en het tijdstempel waarop het prijsniveau het meest recent is bijgewerkt.

Invoegberichten wijzigen de prijsniveaus binnen het orderboek door een nieuw prijsniveau te creëren, alle volgende prijsniveaus (lagere biedprijzen of hogere laatprijzen) naar buiten te verplaatsen en het buitenste prijsniveau buiten het bereik van het orderboek te duwen.

Bijvoorbeeld, vanuit de initiële momentopname hierboven, het invoegbericht:

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

Zou prijsniveau 5294.4 toevoegen aan het orderboek op niveau 10 (de hoogste laatprijs), en prijsniveau 5294.5 buiten het bereik van het orderboek verplaatsen (door 5294.5 effectief naar niveau 11 te verplaatsen).

Verwijderberichten

Een verwijderbericht verwijdert een prijsniveau uit het orderboek, zoals het volgende gedeeltelijke verwijderbericht voor prijsniveau 5294.1 aan de laatkant van het orderboek:

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

Verwijderberichten omvatten het prijsniveau dat niet langer bestaat, specificeren altijd een beschikbaar volume van 0.0, en bevatten een tijdstempel dat de datum/tijd aangeeft waarop het prijsniveau uit het orderboek is verwijderd.

Verwijderberichten wijzigen de prijsniveaus binnen het orderboek door het betreffende prijsniveau te verwijderen (volledig uit het orderboek, niet alleen uit de geabonneerde diepte), alle volgende prijsniveaus (lagere biedprijzen of hogere laatprijzen) naar binnen te verplaatsen, en een nieuw prijsniveau binnen het bereik van het orderboek te trekken.

Merk op dat een verwijdering altijd onmiddellijk wordt gevolgd door een invoeging die een nieuw prijsniveau binnen het bereik brengt op het buitenste niveau (zoals niveau 10 voor een geabonneerde diepte van 10).

Bijvoorbeeld, vanuit de initiële momentopname hierboven, het verwijder-/invoegbericht:

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

Dit zou prijsniveau 5294.1 verwijderen van niveau 9 van het orderboek, prijsniveau 5294.5 verplaatsen van niveau 10 naar niveau 9, en onmiddellijk het nieuwe prijsniveau 5294.7 toevoegen aan niveau 10 van het orderboek (het buitenste niveau en de hoogste laatprijs voor een diepte van 10).

Aanvullende bronnen

Verdere details van de orderboeklogica zijn beschikbaar via een voorbeeld van een orderboektranscript en voorbeeldcode die asynchrone (multi-threaded) en synchrone (single-threaded) commandoregelclients implementeert.

De decimaal- en duizendtalscheidingstekens die in dit artikel worden weergegeven, kunnen afwijken van de formaten die op onze handelsplatformen worden weergegeven. Raadpleeg ons artikel over hoe wij punten en komma's gebruiken voor meer informatie.

Meer hulp nodig?