WebSocket API v1 – Hur man upprätthåller en giltig order book

Senast uppdaterad: 1 april 2025

WebSocket API v1 order book-flödet tillhandahåller all marknadsdata som behövs för att upprätthålla en lokal kopia av en Kraken order book.

Till exempel kan order book-flödet för XBT/USD användas för att hämta och upprätthålla order book för vårt Bitcoin/US Dollar-valutapar, exakt som order book visas på vår trading platform.

Order book-flödet tillhandahåller en initial ögonblicksbild av den aktuella order book och strömmar sedan uppdateringar till order book i realtid, så en order book som upprätthålls via order book-flödet kommer att vara uppdaterad hela tiden.

Fullständiga detaljer om JSON-formatet för order book-flödet finns tillgängliga i vår WebSocket API v1 documentation.

Ögonblicksbild av order book

Efter att ha prenumererat på order book-flödet kommer det första marknadsdatameddelandet att vara en ögonblicksbild av den aktuella order book.

Order book-ögonblicksbilden inkluderar hela order book upp till det begärda (prenumererade) djupet, såsom följande exempel på XBT/USD order book till ett djup av 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"]

Ögonblicksbilden inkluderar de aktuella bästa köp-/säljpriserna, med deras tillgängliga volymer, och datum/tid då prisnivån senast uppdaterades (som en UNIX timestamp i sekunder med 6 decimaler).

Ändringar av prisnivåer

Efter den initiala ögonblicksbilden modifieras prisnivåerna i order book i realtid via uppdaterings-, infognings- och borttagningsmeddelanden.

Uppdateringsmeddelanden

Ett uppdateringsmeddelande uppdaterar en prisnivå som redan finns i order book genom att tillhandahålla en ny volym och tidsstämpel, såsom följande uppdatering för prisnivå 5293.1 på säljsidan av order book:

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

Medan priset förblir detsamma (5293.1) ändras den tillgängliga volymen vid det priset från 0.69800000 (som tillhandahölls av den initiala ögonblicksbilden) till 0.39800000, och den nya tidsstämpeln för prisnivån återspeglar datum/tid då ändringen inträffade.

Uppdateringsmeddelanden ändrar endast prisnivåer som redan finns i order book; de lägger inte till eller tar bort prisnivåer till/från order book.

Infogningsmeddelanden

Ett infogningsmeddelande lägger till en ny prisnivå i order book, såsom följande infogning för prisnivå 5294.4 på säljsidan av order book:

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

Varje infogningsmeddelande inkluderar den nya prisnivån (5294.4), den tillgängliga volymen vid det priset (0.99600000) och tidsstämpeln då prisnivån senast uppdaterades.

Infogningsmeddelanden ändrar prisnivåerna inom order book genom att skapa en ny prisnivå, flytta alla efterföljande prisnivåer (lägre köppriser eller högre säljpriser) utåt och skjuta den yttersta prisnivån utanför order bookens omfång.

Till exempel, från den initiala ögonblicksbilden ovan, infogningsmeddelandet:

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

Skulle lägga till prisnivå 5294.4 i order book på nivå 10 (det högsta säljpriset) och flytta prisnivå 5294.5 utanför order bookens omfång (genom att effektivt flytta 5294.5 till nivå 11).

Borttagningsmeddelanden

Ett borttagningsmeddelande tar bort en prisnivå från order book, såsom följande partiella borttagningsmeddelande för prisnivå 5294.1 på säljsidan av order book:

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

Borttagningsmeddelanden inkluderar prisnivån som inte längre existerar, anger alltid en tillgänglig volym på 0.0 och inkluderar en tidsstämpel som indikerar datum/tid då prisnivån togs bort från order book.

Borttagningsmeddelanden ändrar prisnivåerna inom order book genom att ta bort den berörda prisnivån (från order book helt, inte bara från det prenumererade djupet), flytta alla efterföljande prisnivåer (lägre köppriser eller högre säljpriser) inåt och dra in en ny prisnivå i order bookens omfång.

Observera att en borttagning alltid omedelbart följs av en infogning som för in en ny prisnivå i omfånget på den yttersta nivån (såsom nivå 10 för ett prenumererat djup på 10).

Till exempel, från den initiala ögonblicksbilden ovan, borttagnings-/infogningsmeddelandet:

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

Detta skulle ta bort prisnivå 5294.1 från nivå 9 i order book, flytta prisnivå 5294.5 från nivå 10 till nivå 9 och omedelbart lägga till den nya prisnivå 5294.7 till nivå 10 i order book (den yttersta nivån och högsta säljpriset för ett djup på 10).

Ytterligare resurser

Ytterligare detaljer om order book-logiken finns tillgängliga via en exempeltranskription av order book och exempelkod som implementerar asynkrona (flertrådade) och synkrona (entrådade) kommandoradsklienter.

Decimal- och tusentalsavgränsarna som visas i denna artikel kan skilja sig från de format som visas på våra trading platforms. Granska vår artikel om hur vi använder punkter och kommatecken för mer information.

Behöver du mer hjälp?