API WebSocket v1 - inserimento e annullamento ordini

Ultimo aggiornamento: 1 apr 2025

La nostra API WebSocket 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 viene utilizzato per l'annullamento di ordini esistenti (aperti).

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

Una connessione iniziale dovrebbe essere stabilita all'URL WebSocket autenticato wss://ws-auth.kraken.com/ , che può quindi 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 GetWebSocketsToken dell'API REST.

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

Si noti che la chiave API utilizzata per recuperare il token deve avere entrambe le autorizzazioni Modifica ordini e Annulla/Chiudi ordini, altrimenti si riceverà un errore di autorizzazione negata dall'API WebSocket.

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 ancora bisogno di aiuto?