WebSocket API v1 – Hvordan opprettholde en gyldig ordrebok

Sist oppdatert: 1. april 2025

WebSocket API v1 ordrebok-feeden gir alle markedsdata som trengs for å opprettholde en lokal kopi av en Kraken ordrebok.

For eksempel kan ordrebok-feeden for XBT/USD brukes til å hente og opprettholde ordreboken for vårt Bitcoin/amerikanske dollar valutapar, nøyaktig slik ordreboken vises på vår handelsplattform.

Ordrebok-feeden gir et innledende øyeblikksbilde av den nåværende ordreboken, og strømmer deretter oppdateringer til ordreboken i sanntid, slik at en ordrebok som vedlikeholdes via ordrebok-feeden alltid vil være oppdatert.

Fullstendige detaljer om JSON-formatet for ordrebok-feeden er tilgjengelig i vår WebSocket API v1-dokumentasjon.

Øyeblikksbilde av ordrebok

Etter å ha abonnert på ordrebok-feeden, vil den første markedsdata-meldingen være et øyeblikksbilde av den nåværende ordreboken.

Ordrebok-øyeblikksbildet inkluderer hele ordreboken opp til den forespurte (abonnerte) dybden, slik som følgende eksempel på XBT/USD-ordreboken til en dybde på 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"]

Øyeblikksbildet inkluderer de nåværende beste kjøps-/salgsprisene, med deres tilgjengelige volumer, og dato/klokkeslett da prisnivået sist ble oppdatert (som et UNIX-tidsstempel i sekunder med 6 desimaler).

Endringer i prisnivå

Etter det innledende øyeblikksbildet endres prisnivåene i ordreboken i sanntid via oppdaterings-, innsettings- og slettingsmeldinger.

Oppdateringsmeldinger

En oppdateringsmelding oppdaterer et prisnivå som allerede eksisterer i ordreboken ved å oppgi et nytt volum og tidsstempel, slik som følgende oppdatering for prisnivå 5293.1 på salgssiden av ordreboken:

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

Mens prisen forblir den samme (5293.1), endres det tilgjengelige volumet til den prisen fra 0.69800000 (som angitt av det innledende øyeblikksbildet) til 0.39800000, og det nye tidsstempelet for prisnivået reflekterer dato/klokkeslett da endringen skjedde.

Oppdateringsmeldinger endrer kun prisnivåer som allerede eksisterer i ordreboken; de legger ikke til eller fjerner prisnivåer til/fra ordreboken.

Innsettingsmeldinger

En innsettingsmelding legger til et nytt prisnivå i ordreboken, slik som følgende innsetting for prisnivå 5294.4 på salgssiden av ordreboken:

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

Hver innsettingsmelding inkluderer det nye prisnivået (5294.4), det tilgjengelige volumet til den prisen (0.99600000), og tidsstempelet da prisnivået sist ble oppdatert.

Innsettingsmeldinger endrer prisnivåene i ordreboken ved å opprette et nytt prisnivå, flytte alle de påfølgende prisnivåene (lavere kjøpspriser eller høyere salgspriser) utover, og skyve det ytterste prisnivået ut av ordrebokens omfang.

For eksempel, fra det innledende øyeblikksbildet ovenfor, vil innsettingsmeldingen:

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

legge til prisnivå 5294.4 i ordreboken på nivå 10 (den høyeste salgsprisen), og flytte prisnivå 5294.5 ut av ordrebokens omfang (ved effektivt å flytte 5294.5 til nivå 11).

Slettingsmeldinger

En slettingsmelding fjerner et prisnivå fra ordreboken, slik som følgende delvise slettingsmelding for prisnivå 5294.1 på salgssiden av ordreboken:

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

Slettingsmeldinger inkluderer prisnivået som ikke lenger eksisterer, spesifiserer alltid et tilgjengelig volum på 0.0, og inkluderer et tidsstempel som indikerer dato/klokkeslett da prisnivået ble fjernet fra ordreboken.

Slettingsmeldinger endrer prisnivåene i ordreboken ved å fjerne det berørte prisnivået (fra ordreboken i sin helhet, ikke bare fra den abonnerte dybden), flytte alle de påfølgende prisnivåene (lavere kjøpspriser eller høyere salgspriser) innover, og trekke et nytt prisnivå inn i ordrebokens omfang.

Merk at en sletting alltid umiddelbart følges av en innsetting som bringer et nytt prisnivå inn i omfanget på det ytterste nivået (for eksempel nivå 10 for en abonnert dybde på 10).

For eksempel, fra det innledende øyeblikksbildet ovenfor, vil slette-/innsettingsmeldingen:

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

slette prisnivå 5294.1 fra nivå 9 i ordreboken, flytte prisnivå 5294.5 fra nivå 10 til nivå 9, og umiddelbart legge til det nye prisnivået 5294.7 til nivå 10 i ordreboken (det ytterste nivået og høyeste salgsprisen for en dybde på 10).

Ytterligere ressurser

Ytterligere detaljer om ordreboklogikken er tilgjengelig via et eksempel på ordreboktranskripsjon og eksempelkode som implementerer asynkrone (flertrådede) og synkrone (entrådede) kommandolinjeklienter.

Desimal- og tusenskilletegnene som vises i denne artikkelen kan avvike fra formatene som vises på våre handelsplattformer. Se vår artikkel om hvordan vi bruker punktum og komma for mer informasjon.

Trenger du mer hjelp?