WebSocket API v1 - orders plaatsen en annuleren

Laatst bijgewerkt: 1 april 2025

Onze WebSocket API v1 ondersteunt handelen via de addOrder- en cancelOrder-endpoints. Het addOrder-endpoint wordt gebruikt voor het plaatsen van nieuwe orders en het cancelOrder-endpoint wordt gebruikt voor het annuleren van bestaande (open) orders.

Zowel addOrder als cancelOrder zijn privé-endpoints, wat betekent dat ze alleen toegankelijk zijn via een geauthenticeerde WebSocket-verbinding.

Er moet een initiële verbinding worden gemaakt met de geauthenticeerde WebSocket-URL wss://ws-auth.kraken.com/ , die vervolgens onbeperkt open kan blijven terwijl orders worden geplaatst en geannuleerd. Een enkele WebSocket-verbinding is ontworpen om meerdere verzoeken te ondersteunen, dus het is niet nodig (of aanbevolen) om voor elke aanroep naar de handels-endpoints verbinding te maken of te verbreken.

WebSocket-authenticatie

Een WebSocket-authenticatietoken kan worden opgehaald via het REST API GetWebSocketsToken-endpoint.

Zodra een token is opgehaald, kan er verbinding worden gemaakt met de privé WebSocket-URL wss://ws-auth.kraken.com/ en kunnen de addOrder- en cancelOrder-endpoints onbeperkt worden gebruikt (het token verloopt niet zolang het wordt gebruikt om orders te plaatsen en te annuleren).

Let op dat de API-sleutel die wordt gebruikt om het token op te halen, zowel de machtigingen Modify Orders als Cancel/Close Orders moet hebben, anders wordt er een 'permission denied'-fout ontvangen van de WebSocket API.

Een order plaatsen

Zodra een geauthenticeerde WebSocket-verbinding tot stand is gebracht, kan een order worden geplaatst door een bericht als het volgende te sturen:

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

Er wordt dan een antwoord ontvangen dat de status van het verzoek aangeeft (of de order is geaccepteerd of geweigerd). Voor een order die is geaccepteerd en succesvol is geplaatst, geeft het antwoord de status 'ok' aan en ziet het er ongeveer als volgt uit:

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

Voor een order die is geweigerd en niet is geplaatst, geeft het antwoord de status 'error' aan, samen met een foutmelding die de reden voor de weigering aangeeft (ongeldige argumenten, onvoldoende saldo, enz.), zoals de volgende weigering voor een order die niet voldeed aan de minimale ordergrootte:

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

Een order annuleren

Zodra een geauthenticeerde WebSocket-verbinding tot stand is gebracht (of bij voorkeur een bestaande verbinding is hergebruikt), kan een order worden geannuleerd door een bericht als het volgende te sturen:

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

Er wordt dan een antwoord ontvangen dat de status van het verzoek aangeeft (of de annulering is geaccepteerd of geweigerd). Voor een order die succesvol is geannuleerd, geeft het antwoord de status 'ok' aan en ziet het er ongeveer als volgt uit:

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

Voor een annuleringsverzoek dat is geweigerd, geeft het antwoord de status 'error' aan, samen met een foutmelding die de reden voor de weigering aangeeft (ongeldig order-ID, enz.), zoals de volgende weigering voor een verzoek om een order te annuleren die al was geannuleerd:

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

Let op dat het, in tegenstelling tot het REST API CancelOrder-endpoint, mogelijk is om meerdere order-ID's op te geven in een enkel WebSocket-annuleringsbericht. De te annuleren order-ID's moeten als afzonderlijke vermeldingen in de txid-array worden opgenomen, als volgt:

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

Meer hulp nodig?