WebSocket API v1 - inserimento e annullamento ordini

Ultimo aggiornamento: 1 aprile 2025

La nostra WebSocket API v1 supporta il trading tramite gli endpoint addOrder e cancelOrder. L'endpoint addOrder viene utilizzato per l'inserimento di nuovi ordini e l'endpoint cancelOrder per l'annullamento di ordini esistenti (aperti).

Sia addOrder che cancelOrder sono endpoint privati, il che significa che sono accessibili solo tramite una connessione WebSocket autenticata.

Una connessione iniziale dovrebbe essere stabilita all'URL WebSocket autenticato wss://ws-auth.kraken.com/, che può poi essere mantenuta aperta indefinitamente mentre gli ordini vengono inseriti e annullati. Una singola connessione WebSocket è progettata per supportare più richieste, quindi non è necessario (o raccomandato) connettersi/disconnettersi per ogni chiamata agli endpoint di trading.

Autenticazione WebSocket

Un token di autenticazione WebSocket può essere recuperato tramite l'endpoint REST API GetWebSocketsToken.

Una volta recuperato un token, è possibile stabilire una connessione all'URL WebSocket privato wss://ws-auth.kraken.com/ e gli endpoint addOrder e cancelOrder potranno essere utilizzati indefinitamente (il token non scadrà finché verrà utilizzato per inserire e annullare ordini).

Si noti che la chiave API utilizzata per recuperare il token deve avere entrambe le autorizzazioni Modify Orders e Cancel/Close Orders, altrimenti si riceverà un errore di permesso negato dalla WebSocket API.

Inserimento di un ordine

Una volta stabilita una connessione WebSocket autenticata, un ordine può essere inserito inviando un messaggio come il seguente:

  • {"event":"addOrder", "token":"nT9n23/7oLdq+bNHNMNJ4VvF1hiHhjTnPOaCMiB1GJ0", "pair":"XBT/USD", "type":"buy", "ordertype":"limit", "price":"9857", "volume":"0.002", "leverage":"5", "userref":"8874657"}

Verrà quindi ricevuta una risposta che indica lo stato della richiesta (se l'ordine è stato accettato o rifiutato). Per un ordine accettato e inserito con successo, la risposta indicherà uno stato di ok e sarà simile al seguente:

  • {"descr":"buy 0.00200000 XBTUSD @ limit 9857.0 with 5:1 leverage","event":"addOrderStatus","status":"ok","txid":"OPOUJF-BWKCL-FG5DQL"}

Per un ordine rifiutato e non inserito, la risposta indicherà uno stato di errore, insieme a un messaggio di errore che indica il motivo del rifiuto (argomenti non validi, fondi insufficienti, ecc.), come il seguente rifiuto per un ordine che non ha soddisfatto la dimensione minima dell'ordine:

  • {"errorMessage":"EOrder:Order minimum not met","event":"addOrderStatus","status":"error"}

Annullamento di un ordine

Una volta stabilita una connessione WebSocket autenticata (o preferibilmente riutilizzata una connessione esistente), un ordine può essere annullato inviando un messaggio come il seguente:

  • {"event":"cancelOrder", "token":"s74Ajl83it0dNNKcF072NJ5wDmLTGIceaCbV96eWbFg", "txid":["OJZ3DI-IU6QC-ME7TVE"]}

Verrà quindi ricevuta una risposta che indica lo stato della richiesta (se l'annullamento è stato accettato o rifiutato). Per un ordine annullato con successo, la risposta indicherà uno stato di ok e sarà simile al seguente:

  • {"event":"cancelOrderStatus","status":"ok"}

Per una richiesta di annullamento rifiutata, la risposta indicherà uno stato di errore, insieme a un messaggio di errore che indica il motivo del rifiuto (ID ordine non valido, ecc.), come il seguente rifiuto per una richiesta di annullamento di un ordine che era già stato annullato:

  • {"errorMessage":"EOrder:Unknown order","event":"cancelOrderStatus","status":"error"}

Si noti che, a differenza dell'endpoint REST API CancelOrder, è possibile specificare più ID ordine in un singolo messaggio di annullamento WebSocket. Gli ID ordine da annullare devono essere inclusi come voci separate all'interno dell'array txid, come segue:

  • {"event":"cancelOrder", "token":"c4JjTNHSurKmWDsnrGaCxIuCOa4FurCZK2ppktvT2Yo", "txid":["OLVCRZ-DNKJI-VRTZKY","O67X6E-PBGSR-GU23R5","OECCDC-T2R4V-52CR7T"]}

Hai bisogno di ulteriore assistenza?