A nossa API WebSocket pode ser implementada em qualquer linguagem de programação que prefira, e a nossa equipa de suporte da API terá todo o gosto em ajudá-lo ou fornecer código de exemplo em idiomas adicionais, se necessário.
Quais feeds/endpoints são suportados?
A nossa API WebSocket 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 na nossa documentação da API WebSocket.
Como sei que estou ligado com sucesso? Como sei que ainda estou ligado?
Ao subscrever um feed, uma mensagem {u'event': u'heartbeat'} será recebida com uma frequência de 1 batimento cardíaco por segundo.
Os batimentos cardíacos 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 está subscrito.
Se estiver a subscrever o feed de um par de moedas com baixo volume de negociação, poderá receber apenas batimentos cardíacos por longos períodos.
Se cancelar a subscrição de um feed, deixará de receber batimentos cardíacos ou dados de negociação e, após não estar subscrito a nenhum feed por 1 minuto, 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 está subscrito. 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. Só receberá esta mensagem se estiver subscrito ao feed de ticker para este par.
Negociação: Da mesma forma, quando há uma negociação ou um lote de negociações para um par de moedas, uma mensagem de negociação também é publicada para esse par. Só receberá esta mensagem se estiver subscrito ao feed de negociação 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. Só receberá atualizações para os intervalos aos quais está subscrito. Após cruzar um limite de intervalo, nenhuma mensagem é enviada até que a próxima negociação ocorra.
Livro: Um instantâneo inicial do livro de ordens com a profundidade escolhida é publicado quando se subscreve pela primeira vez ao 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 está subscrito, uma mensagem é publicada contendo atualizações do livro de ordens para quaisquer níveis de preço e volumes afetados. Estas atualizações podem conter apenas lances, apenas pedidos, ou ambos lances e pedidos. Consulte Como construir um livro de ordens abaixo para obter detalhes.
Spread: Quando uma nova ordem de lance mais alta ou de pedido mais baixa é colocada, ou uma negociação é executada que altera o melhor preço de lance ou de pedido, uma mensagem de spread é publicada com os preços de lance e pedido 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 ligar-se simultaneamente à API WebSocket para dados atuais e à API REST para dados históricos.
Uso do parâmetro reqid.
Os pedidos de subscrição podem incluir um parâmetro reqid fornecido pelo cliente que pode ser subsequentemente usado para corresponder o pedido de subscrição WebSocket desejado com o ID do canal para essa subscrição.
Note que se fizer várias subscrições WebSocket ao mesmo tempo, todas elas terão o mesmo valor reqid atribuído. Para atribuir um valor reqid diferente, cada feed deve ser subscrito individualmente.
Quero mais detalhes, onde os posso encontrar?
A especificação completa da API WebSocket está disponível na documentação da API WebSocket.
Diferenças entre os símbolos de pares de moedas nas APIs REST e WebSocket.
A API WebSocket aceita apenas símbolos de pares de moedas no formato ISO 4217-A3, como XBT/USD.
O endpoint AssetPairs da API REST pode ser usado para traduzir símbolos entre as versões da API REST (como XBTUSD ou XXBTZUSD) e a versão da API WebSocket (como XBT/USD).
https://api.kraken.com/0/public/AssetPairs
O campo wsname fornece o símbolo da API WebSocket.
Como construir um livro de ordens
O feed do livro da API WebSocket é o mais complexo de todos os feeds WebSocket, mas desde que as mensagens do feed do livro sejam interpretadas corretamente, é possível manter uma cópia local de um livro de ordens com apenas algumas linhas de código.
As nossas páginas de suporte da API WebSocket fornecem instruções detalhadas para interpretar as mensagens do feed do livro, juntamente com uma transcrição de exemplo do feed do 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 API WebSocket?
A API WebSocket 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 API WebSocket permite múltiplas subscrições de feed através de uma única conexão WebSocket (como subscrever todos os dados de mercado disponíveis para o par de moedas XBT/USD através de uma única conexão), por isso é possível transmitir todos os dados de mercado disponíveis para todos os pares de moedas sem atingir os limites de conexão WebSocket.
Quais são os limites de taxa da API WebSocket?
Os mesmos limites de taxa de negociação aplicam-se a todas as interfaces de entrada de ordens (site, Kraken Terminal, APIs REST e WebSocket), e são explicados em detalhe na nossa página de suporte de limites de taxa.
O limite de taxa de mensagens de uma única conexão da API WebSocket variará dependendo da carga no sistema. Os clientes da API WebSocket 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 API WebSocket.
A negociação via API WebSocket está disponível através dos endpoints addOrder e cancelOrder, que são usados para colocar novas ordens e cancelar ordens existentes (abertas), respetivamente.
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 gestão de conta privados (openOrders e ownTrades).
Detalhes completos sobre os endpoints de negociação estão disponíveis na documentação da API WebSocket, e as nossas páginas de suporte da API WebSocket fornecem informações adicionais e exemplos para usar os endpoints de negociação no seu próprio código.
Por que recebo um erro 403 ao ligar-me à API WebSocket?
As conexões da API WebSocket são intermediadas através do Cloudflare, portanto, quaisquer configurações de segurança implementadas pelo Cloudflare podem afetar as conexões para os URLs públicos (wss://ws.kraken.com) e privados (wss://ws-auth.kraken.com).
O Cloudflare exige que a Indicação de Nome de Servidor (SNI) seja usada para todas as conexões TLS, caso contrário, a conexão WebSocket falharia e um erro HTTP 403 Proibido seria retornado. As páginas de suporte do Cloudflare fornecem mais detalhes sobre o seu requisito de TLS SNI.
A nossa biblioteca oficial da API WebSocket em Python foi atualizada para suportar TLS SNI, mas algumas bibliotecas de API WebSocket de terceiros ainda podem ser afetadas. Entre em contato com a nossa equipa de suporte da API se precisar de ajuda para atualizar o seu código da API WebSocket para suportar TLS SNI.
Assistência da API WebSocket.
Entre em contato com a nossa equipa de suporte da API se precisar de ajuda para implementar o seu cliente da API WebSocket.