API WebSocket di Kraken - Domande frequenti

Ultimo aggiornamento: 31 mar 2025

Kraken dispone di un'API WebSocket? Come posso connettermi ad essa?

Kraken dispone sia di un'API REST che di un'API WebSocket. La nostra API WebSocket è disponibile ai seguenti URL sicuri:

Feed di dati di mercato pubblici (non autenticati): wss://ws.kraken.com/

Feed di dati dell'account privati (autenticati) ed endpoint di trading: wss://ws-auth.kraken.com/

L'autenticazione non è richiesta per connettersi ai feed di dati di mercato pubblici, ma è necessario un token di autenticazione valido per i feed privati.

Tutti i messaggi inviati e ricevuti tramite l'API WebSocket sono testo semplice codificato in formato JSON. I dettagli di ogni tipo di messaggio sono forniti nella nostra documentazione dell'API WebSocket.

Disponete di librerie WebSocket?

Abbiamo a disposizione una varietà di codice di esempio dell'API WebSocket, che può essere utilizzato direttamente o come punto di partenza per la propria implementazione:

  • un client da riga di comando dell'API WebSocket (in Python),

  • una suite di test dell'API WebSocket (in JavaScript),

  • esempi su come utilizzare il nostro modulo Python WebSocket consigliato (websocket-client),

  • e una libreria API WebSocket (Github).

La nostra API WebSocket può essere implementata in qualsiasi linguaggio di programmazione si preferisca, e il nostro team di supporto API sarà lieto di assistervi o fornire codice di esempio in lingue aggiuntive, se necessario.

Quali feed/endpoint sono supportati?

La nostra API WebSocket fornisce una varietà di feed di dati di mercato in tempo reale, feed di dati dell'account ed endpoint di trading. Un elenco completo dei feed/endpoint disponibili, insieme ai dettagli di implementazione per ciascun feed/endpoint, è disponibile nella nostra documentazione dell'API WebSocket.

Come faccio a sapere se sono connesso con successo? Come faccio a sapere se sono ancora connesso?

Quando si è iscritti a un feed, un messaggio {u'event': u'heartbeat'} verrà ricevuto con una frequenza di 1 heartbeat al secondo.

Gli heartbeat non verranno ricevuti se vengono ricevuti altri messaggi (dati di mercato, dati dell'account, ecc.). Quando e perché i dati di mercato o dell'account vengono ricevuti dipende dal feed a cui si è iscritti.

Se ci si iscrive al feed di una coppia di valute con basso volume di trading, si potrebbero ricevere solo heartbeat per lunghi periodi.

Se ci si disiscrive da un feed, non si riceveranno più heartbeat o dati di trading e, dopo non essere stati iscritti a nessun feed per 1 minuto, si verrà disconnessi dal feed WebSockets.

Quando e perché il WebSocket invia dati aggiornati?

Quando e perché i dati di mercato o dell'account vengono ricevuti, dipende dal feed a cui si è iscritti. Ad esempio:

Ticker: Quando c'è un trade o un lotto di trade per una coppia di valute, viene pubblicato un messaggio ticker per quella coppia. Si riceverà questo messaggio solo se si è iscritti al feed ticker per questa coppia.

Trade: Allo stesso modo, quando c'è un trade o un lotto di trade per una coppia di valute, viene pubblicato anche un messaggio di trade per quella coppia. Si riceverà questo messaggio solo se si è iscritti al feed di trade per questa coppia.

OHLC: Un intervallo OHLC aggiornato viene pubblicato per ogni intervallo quando viene eseguito un trade o un lotto di trade per una coppia di valute. Si riceveranno aggiornamenti solo per gli intervalli a cui si è iscritti. Dopo aver superato un confine di intervallo, nessun messaggio viene inviato fino al prossimo trade.

Book: Uno snapshot iniziale del book degli ordini con la profondità scelta viene pubblicato quando ci si iscrive per la prima volta al feed del book.

Man mano che nuovi ordini vengono aggiunti al book degli ordini o vengono eseguiti trade che influenzano la profondità del book degli ordini a cui si è iscritti, viene pubblicato un messaggio contenente aggiornamenti del book degli ordini per tutti i livelli di prezzo e volumi interessati. Questi aggiornamenti possono contenere solo offerte, solo richieste o sia offerte che richieste. Vedere Come costruire un book degli ordini di seguito per i dettagli.

Spread: Quando viene inserito un nuovo ordine di offerta più alta o di richiesta più bassa, o viene eseguito un trade che modifica il miglior prezzo di offerta o di richiesta, viene pubblicato un messaggio di spread con i prezzi di offerta e richiesta aggiornati.

I feed WebSocket forniscono dati storici o solo dati attuali?

I feed di dati di mercato WebSocket forniscono solo dati attuali, tuttavia è possibile connettersi contemporaneamente all'API WebSocket per i dati attuali e all'API REST per i dati storici.

Uso del parametro reqid.

Le richieste di sottoscrizione possono includere un parametro reqid fornito dal client che può essere successivamente utilizzato per abbinare la richiesta di sottoscrizione WebSocket desiderata con l'ID del canale per tale sottoscrizione.

Si noti che se si effettuano più sottoscrizioni WebSocket contemporaneamente, a tutte verrà assegnato lo stesso valore reqid. Per assegnare un valore reqid diverso, ogni feed deve essere sottoscritto individualmente.

Voglio maggiori dettagli, dove posso trovarli?

La specifica completa dell'API WebSocket è disponibile nella documentazione dell'API WebSocket.

Differenze tra i simboli delle coppie di valute nelle API REST e WebSocket.

L'API WebSocket accetta solo simboli di coppie di valute nel formato ISO 4217-A3, come XBT/USD.

L'endpoint AssetPairs dell'API REST può essere utilizzato per tradurre i simboli tra le versioni dell'API REST (come XBTUSD o XXBTZUSD) e la versione dell'API WebSocket (come XBT/USD).

https://api.kraken.com/0/public/AssetPairs

Il campo wsname fornisce il simbolo dell'API WebSocket.

Come costruire un book degli ordini

Il feed del book dell'API WebSocket è il più complesso di tutti i feed WebSocket, ma finché i messaggi del feed del book vengono interpretati correttamente, è possibile mantenere una copia locale di un book degli ordini con poche righe di codice.

Le nostre pagine di supporto dell'API WebSocket forniscono istruzioni dettagliate per l'interpretazione dei messaggi del feed del book, insieme a una trascrizione di esempio del feed del book e codice di esempio (in Python) per mantenere una copia locale valida di un book degli ordini.

Quali sono i limiti di connessione dell'API WebSocket?

L'API WebSocket limita il numero massimo di connessioni simultanee per fornire protezione contro l'uso improprio (come gli attacchi DDoS, ad esempio). Se il client WebSocket effettua troppe connessioni contemporaneamente, verrà ricevuto il seguente messaggio di errore:

{“error”: {“message”: “You have reached maximum capacity for WebSocket connections. Please reach out to Kraken support team for any questions.“, “hint”: “Your code may be reconnecting too often or when it has no need to.“, “name”: “WebSocket connection rate error”}}

L'API WebSocket consente più sottoscrizioni di feed tramite una singola connessione WebSocket (come la sottoscrizione a tutti i dati di mercato disponibili per la coppia di valute XBT/USD tramite una singola connessione), quindi è possibile trasmettere in streaming tutti i dati di mercato disponibili per tutte le coppie di valute senza raggiungere i limiti di connessione WebSocket.

Quali sono i limiti di frequenza dell'API WebSocket?

Gli stessi limiti di frequenza di trading si applicano a tutte le interfacce di inserimento ordini (sito web, Kraken Terminal, API REST e WebSocket) e sono spiegati in dettaglio nella nostra pagina di supporto sui limiti di frequenza.

Il limite di frequenza dei messaggi di una singola connessione API WebSocket varierà a seconda del carico sul sistema. I client API WebSocket riceveranno il messaggio di errore {"Error": "Exceeded msg rate"} quando il limite di frequenza dei messaggi viene superato.

Trading (inserimento/annullamento ordini) tramite l'API WebSocket.

Il trading tramite l'API WebSocket è disponibile tramite gli endpoint addOrder e cancelOrder, che vengono utilizzati rispettivamente per inserire nuovi ordini e annullare ordini esistenti (aperti).

Gli endpoint di trading WebSocket sono disponibili tramite la stessa connessione WebSocket privata (wss://ws-auth.kraken.com/) dei feed di gestione dell'account privati (openOrders e ownTrades).

I dettagli completi sugli endpoint di trading sono disponibili tramite la documentazione dell'API WebSocket, e le nostre pagine di supporto dell'API WebSocket forniscono ulteriori informazioni ed esempi per l'utilizzo degli endpoint di trading nel proprio codice.

Perché ricevo un errore 403 quando mi connetto all'API WebSocket?

Le connessioni API WebSocket sono mediate tramite Cloudflare, quindi qualsiasi impostazione di sicurezza implementata da Cloudflare può influenzare le connessioni sia agli URL pubblici (wss://ws.kraken.com) che privati (wss://ws-auth.kraken.com).

Cloudflare richiede che l'indicazione del nome del server (SNI) sia utilizzata per tutte le connessioni TLS, altrimenti la connessione WebSocket fallirebbe e verrebbe restituito un errore HTTP 403 Forbidden. Le pagine di supporto di Cloudflare forniscono ulteriori dettagli sul loro requisito TLS SNI.

La nostra libreria ufficiale Python WebSocket API è stata aggiornata per supportare TLS SNI, ma alcune librerie API WebSocket di terze parti potrebbero essere ancora interessate. Si prega di contattare il nostro team di supporto API se si necessita di assistenza per aggiornare il proprio codice API WebSocket per supportare TLS SNI.

Assistenza API WebSocket.

Si prega di contattare il nostro team di supporto API se si necessita di assistenza per l'implementazione del proprio client API WebSocket.

Hai ancora bisogno di aiuto?