API WebSocket v1 - Come mantenere un book degli ordini valido

Ultimo aggiornamento: 1 apr 2025

Il feed del book degli ordini dell'API WebSocket v1 fornisce tutti i dati di mercato necessari per mantenere una copia locale del book degli ordini di Kraken.

Ad esempio, il feed del book degli ordini per XBT/USD potrebbe essere utilizzato per recuperare e mantenere il book degli ordini per la nostra coppia di valute Bitcoin/Dollaro USA, esattamente come il book degli ordini è mostrato sulla nostra piattaforma di trading.

Il feed del book degli ordini fornisce un'istantanea iniziale del book degli ordini attuale, e poi trasmette gli aggiornamenti al book degli ordini in tempo reale, in modo che un book degli ordini mantenuto tramite il feed del book degli ordini sia sempre aggiornato.

I dettagli completi del formato JSON per il feed del book degli ordini sono disponibili nella nostra documentazione dell'API WebSocket v1.

Istantanea del Book degli Ordini

Dopo aver sottoscritto il feed del book degli ordini, il primo messaggio di dati di mercato sarà un'istantanea del book degli ordini attuale.

L'istantanea del book degli ordini include l'intero book degli ordini fino alla profondità richiesta (sottoscritta), come il seguente esempio del book degli ordini XBT/USD con una profondità di 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"]

L'istantanea include i migliori prezzi bid/ask attuali, con i loro volumi disponibili, e la data/ora in cui il livello di prezzo è stato aggiornato più di recente (come timestamp UNIX in secondi con 6 cifre decimali).

Modifiche al Livello di Prezzo

Dopo l'istantanea iniziale, i livelli di prezzo del book degli ordini vengono modificati in tempo reale tramite messaggi di aggiornamento, inserimento ed eliminazione.

Messaggi di Aggiornamento

Un messaggio di aggiornamento aggiorna un livello di prezzo già esistente all'interno del book degli ordini fornendo un nuovo volume e timestamp, come il seguente aggiornamento per il livello di prezzo 5293.1 sul lato ask del book degli ordini:

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

Mentre il prezzo rimane lo stesso (5293.1), il volume disponibile a quel prezzo viene modificato da 0.69800000 (come fornito dall'istantanea iniziale) a 0.39800000, e il nuovo timestamp per il livello di prezzo riflette la data/ora in cui è avvenuta la modifica.

I messaggi di aggiornamento modificano solo i livelli di prezzo già esistenti all'interno del book degli ordini; non aggiungono né rimuovono livelli di prezzo dal book degli ordini.

Messaggi di Inserimento

Un messaggio di inserimento aggiunge un nuovo livello di prezzo al book degli ordini, come il seguente inserimento per il livello di prezzo 5294.4 sul lato ask del book degli ordini:

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

Ogni messaggio di inserimento include il nuovo livello di prezzo (5294.4), il volume disponibile a quel prezzo (0.99600000) e il timestamp in cui il livello di prezzo è stato aggiornato più di recente.

I messaggi di inserimento modificano i livelli di prezzo all'interno del book degli ordini creando un nuovo livello di prezzo, spostando tutti i livelli di prezzo successivi (prezzi bid inferiori o prezzi ask superiori) verso l'esterno e spingendo il livello di prezzo più esterno fuori dall'ambito del book degli ordini.

Ad esempio, dall'istantanea iniziale sopra, il messaggio di inserimento:

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

Aggiungerebbe il livello di prezzo 5294.4 al book degli ordini al livello 10 (il prezzo ask più alto) e sposterebbe il livello di prezzo 5294.5 fuori dall'ambito del book degli ordini (spostando di fatto 5294.5 al livello 11).

Messaggi di Eliminazione

Un messaggio di eliminazione rimuove un livello di prezzo dal book degli ordini, come il seguente messaggio di eliminazione parziale per il livello di prezzo 5294.1 sul lato ask del book degli ordini:

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

I messaggi di eliminazione includono il livello di prezzo che non esiste più, specificano sempre un volume disponibile di 0.0 e includono un timestamp che indica la data/ora in cui il livello di prezzo è stato rimosso dal book degli ordini.

I messaggi di eliminazione modificano i livelli di prezzo all'interno del book degli ordini rimuovendo il livello di prezzo interessato (interamente dal book degli ordini, non solo dalla profondità sottoscritta), spostando tutti i livelli di prezzo successivi (prezzi bid inferiori o prezzi ask superiori) verso l'interno e tirando un nuovo livello di prezzo nell'ambito del book degli ordini.

Si noti che un'eliminazione è sempre immediatamente seguita da un inserimento che porta un nuovo livello di prezzo nell'ambito al livello più esterno (come il livello 10 per una profondità sottoscritta di 10).

Ad esempio, dall'istantanea iniziale sopra, il messaggio di eliminazione/inserimento:

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

Questo eliminerebbe il livello di prezzo 5294.1 dal livello 9 del book degli ordini, sposterebbe il livello di prezzo 5294.5 dal livello 10 al livello 9 e aggiungerebbe immediatamente il nuovo livello di prezzo 5294.7 al livello 10 del book degli ordini (il livello più esterno e il prezzo ask più alto per una profondità di 10).

Risorse Aggiuntive

Ulteriori dettagli sulla logica del book degli ordini sono disponibili tramite una trascrizione di esempio del book degli ordini e codice di esempio che implementa client da riga di comando asincroni (multi-threaded) e sincroni (single-threaded).

I separatori decimali e delle migliaia mostrati in questo articolo potrebbero differire dai formati visualizzati sulle nostre piattaforme di trading. Consulta il nostro articolo su come utilizziamo punti e virgole per maggiori informazioni.

Hai ancora bisogno di aiuto?