Kraken WebSocket API - Perguntas Frequentes

Última atualização: 31 de mar. de 2025

A Kraken tem uma WebSocket API? Como posso me conectar a ela?

A Kraken possui uma REST API e uma WebSocket API. Nossa WebSocket API está disponível nos seguintes URLs seguros:

Feeds de dados de mercado públicos (não autenticados): wss://ws.kraken.com/

Feeds de dados de conta privados (autenticados) e endpoints de negociação: wss://ws-auth.kraken.com/

A autenticação não é necessária para se conectar aos feeds de dados de mercado públicos, mas um token de autenticação válido é exigido para os feeds privados.

Todas as mensagens enviadas e recebidas via WebSocket API são texto simples codificado em formato JSON. Os detalhes de cada tipo de mensagem são fornecidos em nossa documentação da WebSocket API.

Vocês têm bibliotecas WebSocket disponíveis?

Temos uma variedade de códigos de exemplo da WebSocket API disponíveis, que podem ser usados diretamente ou como ponto de partida para sua própria implementação:

  • um cliente de linha de comando da WebSocket API (em Python),

  • um conjunto de testes da WebSocket API (em JavaScript),

  • exemplos de como usar nosso módulo Python WebSocket recomendado (websocket-client),

  • e uma biblioteca da WebSocket API (Github).

Nossa WebSocket API pode ser implementada em qualquer linguagem de programação que você preferir, e nossa equipe de suporte da API terá prazer em ajudar ou fornecer código de exemplo em idiomas adicionais, se necessário.

Quais feeds/endpoints são suportados?

Nossa WebSocket API fornece uma variedade de feeds de dados de mercado em tempo real, feeds de dados de conta e endpoints de negociação. Uma lista completa de feeds/endpoints disponíveis, juntamente com os detalhes de implementação para cada feed/endpoint, pode ser encontrada em nossa documentação da WebSocket API.

Como sei que estou conectado com sucesso? Como sei que ainda estou conectado?

Ao assinar um feed, uma mensagem {u'event': u'heartbeat'} será recebida com uma frequência de 1 heartbeat por segundo.

Heartbeats não serão recebidos se outras mensagens (dados de mercado, dados de conta, etc.) forem recebidas. Quando e por que os dados de mercado ou de conta são recebidos depende do feed ao qual você está inscrito.

Se você estiver assinando o feed de um par de moedas com baixo volume de negociação, poderá receber apenas heartbeats por longos períodos.

Se você cancelar a assinatura de um feed, não receberá mais heartbeats ou dados de negociação e, após não estar inscrito em nenhum feed por 1 minuto, você será desconectado do feed WebSockets.

Quando e por que o WebSocket envia dados atualizados?

Quando e por que os dados de mercado ou de conta são recebidos, depende do feed ao qual você está inscrito. Por exemplo:

Ticker: Quando há uma negociação ou um lote de negociações para um par de moedas, uma mensagem de ticker é publicada para esse par. Você só receberá esta mensagem se estiver inscrito no feed de ticker para este par.

Trade: Da mesma forma, quando há uma negociação ou um lote de negociações para um par de moedas, uma mensagem de trade também é publicada para esse par. Você só receberá esta mensagem se estiver inscrito no feed de trade para este par.

OHLC: Um intervalo OHLC atualizado é publicado para cada intervalo quando uma negociação ou um lote de negociações para um par de moedas é executado. Você só receberá atualizações para os intervalos aos quais está inscrito. Após cruzar um limite de intervalo, nenhuma mensagem é enviada até que a próxima negociação ocorra.

Book: Um snapshot inicial do livro de ordens com a profundidade escolhida é publicado quando você se inscreve pela primeira vez no feed do livro.

À medida que novas ordens são adicionadas ao livro de ordens ou negociações são executadas que afetam a profundidade do livro de ordens à qual você está inscrito, uma mensagem é publicada contendo atualizações do livro de ordens para quaisquer níveis de preço e volumes afetados. Essas atualizações podem conter apenas bids, apenas asks, ou ambos bids e asks. Veja Como construir um livro de ordens abaixo para detalhes.

Spread: Quando uma nova ordem de bid mais alta ou ask mais baixa é colocada, ou uma negociação é executada que altera o melhor preço de bid ou ask, uma mensagem de spread é publicada com os preços de bid e ask atualizados.

Os feeds WebSocket fornecem dados históricos ou apenas dados atuais?

Os feeds de dados de mercado WebSocket fornecem apenas dados atuais, no entanto, é possível conectar-se simultaneamente à WebSocket API para dados atuais e à REST API para dados históricos.

Uso do parâmetro reqid.

As solicitações de assinatura podem incluir um parâmetro reqid fornecido pelo cliente que pode ser usado posteriormente para corresponder a solicitação de assinatura WebSocket desejada com o ID do canal para essa assinatura.

Observe que, se você fizer várias assinaturas WebSocket ao mesmo tempo, todas elas receberão o mesmo valor de reqid. Para atribuir um valor de reqid diferente, cada feed deve ser assinado individualmente.

Quero mais detalhes, onde posso encontrá-los?

A especificação completa da WebSocket API está disponível na documentação da WebSocket API.

Diferenças entre os símbolos de pares de moedas nas REST e WebSocket APIs.

A WebSocket API aceita apenas símbolos de pares de moedas no formato ISO 4217-A3, como XBT/USD.

O endpoint AssetPairs da REST API pode ser usado para traduzir símbolos entre as versões da REST API (como XBTUSD ou XXBTZUSD) e a versão da WebSocket API (como XBT/USD).

https://api.kraken.com/0/public/AssetPairs

O campo wsname fornece o símbolo da WebSocket API.

Como construir um livro de ordens

O feed de livro da WebSocket API é o mais complexo de todos os feeds WebSocket, mas, desde que as mensagens do feed de livro sejam interpretadas corretamente, é possível manter uma cópia local de um livro de ordens com apenas algumas linhas de código.

Nossas páginas de suporte da WebSocket API fornecem instruções detalhadas para interpretar as mensagens do feed de livro, juntamente com um exemplo de transcrição do feed de livro e código de exemplo (em Python) para manter uma cópia local válida de um livro de ordens.

Quais são os limites de conexão da WebSocket API?

A WebSocket API limita o número máximo de conexões simultâneas para fornecer proteção contra uso indevido (como ataques DDoS, por exemplo). Se o seu cliente WebSocket fizer muitas conexões ao mesmo tempo, a seguinte mensagem de erro será recebida:

{"error": {"message": "You have reached maximum capacity for WebSocket connections. Please reach out to Kraken support team for any questions.", "hint": "Your code may be reconnecting too often or when it has no need to.", "name": "WebSocket connection rate error"}}

A WebSocket API permite múltiplas assinaturas de feed via uma única conexão WebSocket (como assinar todos os dados de mercado disponíveis para o par de moedas XBT/USD via uma única conexão), então é possível transmitir todos os dados de mercado disponíveis para todos os pares de moedas sem atingir os limites de conexão da WebSocket.

Quais são os limites de taxa da WebSocket API?

Os mesmos limites de taxa de negociação se aplicam a todas as interfaces de entrada de ordens (site, Kraken Terminal, REST e WebSocket APIs) e são explicados em detalhes em nossa página de suporte sobre limites de taxa.

O limite de taxa de mensagens de uma única conexão WebSocket API irá variar dependendo da carga no sistema. Clientes da WebSocket API receberão a mensagem de erro {"Error": "Exceeded msg rate"} quando o limite de taxa de mensagens for excedido.

Negociação (colocação/cancelamento de ordens) via WebSocket API.

A negociação via WebSocket API está disponível através dos endpoints addOrder e cancelOrder, que são usados para colocar novas ordens e cancelar ordens existentes (abertas), respectivamente.

Os endpoints de negociação WebSocket estão disponíveis através da mesma conexão WebSocket privada (wss://ws-auth.kraken.com/) que os feeds de gerenciamento de conta privados (openOrders e ownTrades).

Detalhes completos sobre os endpoints de negociação estão disponíveis na documentação da WebSocket API, e nossas páginas de suporte da WebSocket API fornecem informações adicionais e exemplos para usar os endpoints de negociação em seu próprio código.

Por que recebo um erro 403 ao me conectar à WebSocket API?

As conexões da WebSocket API são intermediadas via Cloudflare, portanto, quaisquer configurações de segurança implementadas pela Cloudflare podem afetar as conexões para os URLs públicos (wss://ws.kraken.com) e privados (wss://ws-auth.kraken.com).

A Cloudflare exige que o Server Name Indication (SNI) seja usado para todas as conexões TLS, caso contrário, a conexão WebSocket falharia e um erro HTTP 403 Forbidden seria retornado. As páginas de suporte da Cloudflare fornecem mais detalhes sobre o requisito de TLS SNI.

Nossa biblioteca oficial Python da WebSocket API foi atualizada para suportar TLS SNI, mas algumas bibliotecas de terceiros da WebSocket API ainda podem ser afetadas. Entre em contato com nossa equipe de suporte da API se precisar de ajuda para atualizar seu código da WebSocket API para suportar TLS SNI.

Assistência da WebSocket API.

Entre em contato com nossa equipe de suporte da API se precisar de ajuda para implementar seu cliente da WebSocket API.

Precisa de mais ajuda?