API WebSocket v1 - colocação e cancelamento de ordens

Última atualização: 1/04/2025

A nossa API WebSocket v1 suporta negociação através dos endpoints addOrder e cancelOrder. O endpoint addOrder é utilizado para colocar novas ordens e o endpoint cancelOrder é utilizado para cancelar ordens existentes (abertas).

Ambos os endpoints addOrder e cancelOrder são privados, o que significa que só podem ser acedidos através de uma ligação WebSocket autenticada.

Uma ligação inicial deve ser feita ao URL WebSocket autenticado wss://ws-auth.kraken.com/ , que pode então ser mantida aberta indefinidamente enquanto as ordens são colocadas e canceladas. Uma única ligação WebSocket foi concebida para suportar múltiplos pedidos, pelo que não é necessário (nem recomendado) ligar/desligar para cada chamada aos endpoints de negociação.

Autenticação WebSocket

Um token de autenticação WebSocket pode ser obtido através do endpoint GetWebSocketsToken da API REST.

Uma vez obtido um token, pode ser feita uma ligação ao URL WebSocket privado wss://ws-auth.kraken.com/ e os endpoints addOrder e cancelOrder podem então ser utilizados indefinidamente (o token não expirará enquanto estiver a ser utilizado para colocar e cancelar ordens).

Note que a chave API utilizada para obter o token deve ter as permissões Modificar Ordens e Cancelar/Fechar Ordens, caso contrário, será recebido um erro de permissão negada da API WebSocket.

Colocar uma ordem

Uma vez estabelecida uma ligação WebSocket autenticada, uma ordem pode ser colocada enviando uma mensagem como a seguinte:

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

Será então recebida uma resposta indicando o estado do pedido (se a ordem foi aceite ou rejeitada). Para uma ordem que foi aceite e colocada com sucesso, a resposta indicará um estado de ok e será semelhante ao seguinte:

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

Para uma ordem que foi rejeitada e não colocada, a resposta indicará um estado de erro, juntamente com uma mensagem de erro indicando o motivo da rejeição (argumentos inválidos, fundos insuficientes, etc.), como a seguinte rejeição para uma ordem que não cumpriu o tamanho mínimo da ordem:

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

Cancelar uma ordem

Uma vez estabelecida uma ligação WebSocket autenticada (ou preferencialmente uma ligação existente reutilizada), uma ordem pode ser cancelada enviando uma mensagem como a seguinte:

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

Será então recebida uma resposta indicando o estado do pedido (se o cancelamento foi aceite ou rejeitado). Para uma ordem que foi cancelada com sucesso, a resposta indicará um estado de ok e será semelhante ao seguinte:

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

Para um pedido de cancelamento que foi rejeitado, a resposta indicará um estado de erro, juntamente com uma mensagem de erro indicando o motivo da rejeição (ID de ordem inválido, etc.), como a seguinte rejeição para um pedido de cancelamento de uma ordem que já tinha sido cancelada:

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

Note-se que, ao contrário do endpoint CancelOrder da API REST, é possível especificar vários IDs de ordem numa única mensagem de cancelamento WebSocket. Os IDs de ordem a serem cancelados devem ser incluídos como entradas separadas dentro do array txid, da seguinte forma:

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

Precisa de mais ajuda?