WebSocket API v1 - placer et annuler des ordres

Dernière mise à jour : 1 avril 2025

Notre WebSocket API v1 prend en charge le trading via les endpoints addOrder et cancelOrder. L'endpoint addOrder est utilisé pour placer de nouveaux ordres et l'endpoint cancelOrder est utilisé pour annuler des ordres existants (ouverts).

Les endpoints addOrder et cancelOrder sont tous deux des endpoints privés, ce qui signifie qu'ils ne peuvent être consultés que via une connexion WebSocket authentifiée.

Une connexion initiale doit être établie avec l'URL WebSocket authentifiée wss://ws-auth.kraken.com/, qui peut ensuite être maintenue ouverte indéfiniment pendant que les ordres sont placés et annulés. Une seule connexion WebSocket est conçue pour prendre en charge plusieurs requêtes, il n'est donc pas nécessaire (ni recommandé) de se connecter/déconnecter pour chaque appel aux endpoints de trading.

Authentification WebSocket

Un token d'authentification WebSocket peut être récupéré via l'endpoint REST API GetWebSocketsToken.

Une fois qu'un token a été récupéré, une connexion peut être établie avec l'URL WebSocket privée wss://ws-auth.kraken.com/ et les endpoints addOrder et cancelOrder peuvent ensuite être utilisés indéfiniment (le token n'expirera pas tant qu'il est utilisé pour placer et annuler des ordres).

Notez que la clé API utilisée pour récupérer le token doit disposer des autorisations Modifier les ordres et Annuler/Clôturer les ordres, sinon une erreur d'autorisation refusée sera reçue de la WebSocket API.

Placer un ordre

Une fois qu'une connexion WebSocket authentifiée a été établie, un ordre peut être placé en envoyant un message comme suit :

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

Une réponse sera alors reçue indiquant le statut de la requête (si l'ordre a été accepté ou rejeté). Pour un ordre accepté et placé avec succès, la réponse indiquera un statut « ok » et sera similaire à ce qui suit :

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

Pour un ordre qui a été rejeté et non placé, la réponse indiquera un statut « error », ainsi qu'un message d'erreur indiquant la raison du rejet (arguments invalides, fonds insuffisants, etc.), tel que le rejet suivant pour un ordre qui n'a pas atteint la taille minimale d'ordre :

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

Annuler un ordre

Une fois qu'une connexion WebSocket authentifiée a été établie (ou de préférence une connexion existante réutilisée), un ordre peut être annulé en envoyant un message comme suit :

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

Une réponse sera alors reçue indiquant le statut de la requête (si l'annulation a été acceptée ou rejetée). Pour un ordre annulé avec succès, la réponse indiquera un statut « ok » et sera similaire à ce qui suit :

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

Pour une requête d'annulation qui a été rejetée, la réponse indiquera un statut « error », ainsi qu'un message d'erreur indiquant la raison du rejet (ID d'ordre invalide, etc.), tel que le rejet suivant pour une requête d'annulation d'un ordre qui avait déjà été annulé :

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

Notez que, contrairement à l'endpoint REST API CancelOrder, il est possible de spécifier plusieurs ID d'ordre dans un seul message d'annulation WebSocket. Les ID d'ordre à annuler doivent être inclus comme entrées distinctes dans le tableau txid, comme suit :

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

Besoin d'aide supplémentaire ?