WebSocket API v1 - fazendo e cancelando pedidos

Última atualização: 1 de abril de 2025

Nossa WebSocket API v1 oferece suporte a negociações por meio dos endpoints addOrder e cancelOrder. O endpoint addOrder é usado para fazer novos pedidos e o endpoint cancelOrder é usado para cancelar pedidos existentes (abertos).

Ambos addOrder e cancelOrder são endpoints privados, o que significa que eles só podem ser acessados por meio de uma conexão WebSocket autenticada.

Uma conexão inicial deve ser feita para a URL autenticada do WebSocket wss://ws-auth.kraken.com/ , que pode então ser mantida aberta indefinidamente enquanto os pedidos são feitos e cancelados. Uma única conexão WebSocket foi projetada para suportar múltiplas solicitações, portanto, não é necessário (nem recomendado) conectar/desconectar para cada chamada aos endpoints de negociação.

Autenticação WebSocket

Um token de autenticação WebSocket pode ser recuperado por meio do endpoint GetWebSocketsToken da REST API.

Uma vez que um token tenha sido recuperado, uma conexão pode ser feita para a URL privada do WebSocket wss://ws-auth.kraken.com/ e os endpoints addOrder e cancelOrder podem então ser usados indefinidamente (o token não expirará enquanto estiver sendo usado para fazer e cancelar pedidos).

Observe que a chave API usada para recuperar o token deve ter as permissões Modify Orders e Cancel/Close Orders, caso contrário, um erro de permissão negada será recebido da WebSocket API.

Fazendo um pedido

Uma vez que uma conexão WebSocket autenticada tenha sido estabelecida, um pedido pode ser feito 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"}

Uma resposta será então recebida indicando o status da solicitação (se o pedido foi aceito ou rejeitado). Para um pedido que foi aceito e feito com sucesso, a resposta indicará um status 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 um pedido que foi rejeitado e não feito, a resposta indicará um status 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 um pedido que não atendeu ao tamanho mínimo do pedido:

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

Cancelando um pedido

Uma vez que uma conexão WebSocket autenticada tenha sido estabelecida (ou, preferencialmente, uma conexão existente seja reutilizada), um pedido pode ser cancelado enviando uma mensagem como a seguinte:

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

Uma resposta será então recebida indicando o status da solicitação (se o cancelamento foi aceito ou rejeitado). Para um pedido que foi cancelado com sucesso, a resposta indicará um status de ok e será semelhante ao seguinte:

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

Para uma solicitação de cancelamento que foi rejeitada, a resposta indicará um status de erro, juntamente com uma mensagem de erro indicando o motivo da rejeição (ID de pedido inválido, etc.), como a seguinte rejeição para uma solicitação de cancelamento de um pedido que já havia sido cancelado:

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

Observe que, ao contrário do endpoint CancelOrder da REST API, é possível especificar múltiplos IDs de pedido em uma única mensagem de cancelamento WebSocket. Os IDs de pedido a serem cancelados devem ser incluídos como entradas separadas dentro do array txid, como segue:

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

Precisa de mais ajuda?