API Huobi

Huobi (HTX)

A Huobi (agora renomeada como HTX) é uma exchange de criptomoedas internacional e multilíngue.

Configuração

Se você quiser assinar as atualizações privadas da conta, precisa criar uma API Key em sua conta Huobi. Uma vez criada, defina a API Key e o Secret no Huobi API Client

Dados Públicos e Privados com um Único Componente

A HTX serve os dados de mercado e os dados da conta em dois endpoints diferentes, com dois esquemas diferentes: wss://api.htx.com/ws transporta os dados de mercado como frames de assinatura v1, e wss://api.htx.com/ws/v2 transporta os canais de conta e de ordens como frames autenticados v2. Nenhum dos dois endpoints responde aos frames do outro.

Comportamento anterior. O componente abria uma única conexão e escolhia o endpoint a partir das credenciais: com uma ApiKey vazia ele conectava ao endpoint público e apenas os métodos públicos funcionavam, e com uma ApiKey configurada ele conectava ao endpoint privado e apenas os métodos privados funcionavam. Uma aplicação que precisasse dos dados de mercado e dos dados da conta ao mesmo tempo precisava criar duas instâncias do componente, uma com credenciais e outra sem.

Comportamento atual. A conexão do componente é sempre a pública, então os dados de mercado estão disponíveis independentemente de as credenciais estarem configuradas ou não. Quando uma ApiKey é configurada, o componente também abre uma segunda conexão ao endpoint v2 por conta própria, e uma única instância passa a receber os dados públicos de mercado e os dados privados da conta ao mesmo tempo. Essa segunda conexão é interna: ela é aberta e fechada pelo componente junto com a pública, não tem uma propriedade Active própria nem eventos próprios, e tudo o que chega por ela é exposto através dos eventos do componente, exatamente como os dados de mercado.

Não há nada a alterar nas aplicações existentes. Nenhuma propriedade nova e nenhum evento novo foi adicionado, a API pública do componente é a mesma de antes. Uma aplicação que já define a ApiKey e assina apenas os canais privados continua funcionando, e agora também pode assinar os canais públicos na mesma instância. Uma aplicação que usava duas instâncias ainda funciona, embora a segunda instância não seja mais necessária.

A autenticação da conexão privada é executada por conta própria, então a conexão privada ainda pode estar conectando ou autenticando quando a aplicação faz a assinatura. Isso não é um erro e não há nada a esperar: o canal é registrado e é requisitado assim que a autenticação é confirmada. O mesmo se aplica após uma reconexão quando Resubscribe está habilitado, os canais privados são reconstruídos e requisitados novamente assim que a nova sessão for autenticada.

Chamar um método de assinatura privado com nenhuma ApiKey configurada agora dispara o evento OnHuobiError, informando o canal que foi requisitado e o endpoint que ele precisava. Anteriormente a requisição era escrita em uma conexão que não podia atendê-la e era perdida sem deixar rastro.

O cliente de futuros (TsgcWS_API_Huobi_Fut) conecta a um endpoint diferente, que não tem uma contrapartida v2 aqui, então ele não abre uma segunda conexão e seus frames privados trafegam pela sua própria conexão, exatamente como sempre fizeram.

Métodos Públicos

Você pode assinar os seguintes canais públicos (a api key não é obrigatória)

Method Descrição
SubscribeKLine Este tópico envia um novo candlestick sempre que ele estiver disponível. Períodos suportados: 1min, 5min, 15min, 30min, 60min, 4hour, 1day, 1mon, 1week, 1year.
SubscribeMarketDepth Este tópico envia o order book mais recente por preço de mercado em modo snapshot a intervalos de 1 segundo. Níveis de agregação de profundidade suportados: step0 a step15.
SubscribeTradeDetail Este tópico envia as negociações concluídas mais recentes. Ele atualiza no modo tick a tick.
SubscribeMarketDetail

Este tópico envia as estatísticas de mercado mais recentes com resumo de 24h. Ele é atualizado em modo de snapshot, a uma frequência de no máximo 10 vezes por segundo

SubscribeBBO O usuário pode receber atualizações de BBO (Best Bid/Offer) em modo tick a tick.
SubscribeMarketTicker

Recupera o ticker de mercado. Os dados são enviados a cada 100ms.

SubscribeMarketByPrice O usuário pode fazer subscribe a este canal para receber atualizações de refresh do order book Market By Price. O intervalo de atualização é de cerca de 100ms. Níveis suportados: 5, 10, 20, 150, 400.

Futures Public Methods

Os seguintes métodos estão disponíveis para o cliente da Futures API (TsgcWS_API_Huobi_Fut), além de todos os métodos públicos acima.

Method Descrição
SubscribeIncrementalMarketDepth Assina atualizações incrementais de profundidade de mercado com tamanho e tipo de dados configuráveis (snapshot ou incremental).
SubscribePremiumIndexKLine Assine os dados de premium index kline/candlestick para contratos de futuros.
SubscribeEstimatedRateKLine Faça subscribe a dados de kline/candlestick de taxa de funding estimada para contratos de futuros.
SubscribeBasisData Assine os dados de basis (spread de preço spot-futures). Suporta diferentes tipos de basis price: open, close, high, low.
SubscribeMarkPriceKLine Faça subscribe a dados de kline/candlestick de mark price para contratos de futuros.
SubscribeLiquidationOrders Assina o feed público de ordens de liquidação de um determinado contrato. Nenhuma autenticação necessária.
SubscribeFundingRate Assine atualizações públicas de funding rate para um contrato informado. Nenhuma autenticação necessária.
SubscribeContractInfo Assinar mudanças de parâmetros de contrato (por exemplo, listagens de contratos, deslistagens, ajustes de parâmetros).

Métodos privados

Você pode assinar os seguintes canais privados (uma api key é necessária). Eles são servidos pela segunda conexão que o componente abre automaticamente quando a ApiKey é configurada, então podem ser combinados com os canais públicos na mesma instância do componente. Se as credenciais não estiverem corretas, a conexão será fechada automaticamente, e se não houver nenhuma ApiKey a requisição é reportada no evento OnHuobiError.

Method Descrição
SubscribeOrderUpdates

Uma atualização de ordem pode ser acionada por qualquer um dos seguintes:


- Falha no acionamento de ordem condicional (eventType=trigger)
- Cancelamento de ordem condicional antes do acionamento (eventType=deletion)
- Criação de ordem (eventType=creation)
- Correspondência de ordem (eventType=trade)
- Cancelamento de ordem (eventType=cancellation)

SubscribeTradeClearing Atualize apenas quando a ordem estiver em transação ou cancelamento. A atualização da transação da ordem ocorre no modo tick by tick, o que significa que, se a ordem de um taker corresponder a múltiplas ordens de makers, os múltiplos trades simultâneos serão disseminados um a um. Porém, a sequência de atualização dos múltiplos trades pode não ser exatamente a mesma que a sequência das transações realizadas. Além disso, se uma ordem for cancelada automaticamente imediatamente após seus preenchimentos parciais, por exemplo uma ordem IOC típica, este canal poderia possivelmente disseminar a atualização de cancelamento antes do trade.
SubscribeAccountChange

Após o valor do campo de assinatura especificado, a atualização pode ser disparada por qualquer um dos seguintes eventos. O parâmetro aMode controla o comportamento da atualização:

Mode 0: Atualizar apenas quando o saldo da conta for alterado.

Modo 1: Atualiza quando o saldo da conta ou o saldo disponível é alterado (atualizações separadas).

Modo 2: Atualiza quando o saldo da conta ou o saldo disponível é alterado (atualização combinada).

Eventos

OnHuobiSubscribed: evento chamado após uma assinatura bem-sucedida.

OnHuobiUnSubscribed: evento chamado após uma desinscrição bem-sucedida.

OnHuobiUpdate: toda vez que há uma atualização nos dados (kline, market depth...) este evento é chamado. Ele reporta as atualizações dos canais públicos e dos privados, seja qual for a conexão em que chegaram.

OnHuobiError: se houver um erro na API da Huobi, este evento fornecerá informações sobre o erro. Também é chamado quando um canal privado é requisitado e o componente não tem uma ApiKey para abrir a conexão privada, com o parâmetro Code definido como "private-credentials" e o parâmetro Msg informando o canal que foi requisitado.