Huobi (ora rinominata HTX) è un exchange di criptovalute internazionale multilingua.
Se si desidera sottoscrivere agli aggiornamenti privati dell'account, è necessario creare una API Key nel proprio account Huobi. Una volta creata, impostare la API Key e il Secret nel client API Huobi
HTX serve i dati di mercato e i dati dell'account su due endpoint diversi, con due schemi diversi: wss://api.htx.com/ws trasporta i dati di mercato come frame di sottoscrizione v1, e wss://api.htx.com/ws/v2 trasporta i canali dell'account e degli ordini come frame autenticati v2. Nessuno dei due endpoint risponde ai frame dell'altro.
Comportamento precedente. Il componente apriva un'unica connessione e sceglieva l'endpoint in base alle credenziali: con ApiKey vuota si connetteva all'endpoint pubblico e funzionavano solo i metodi pubblici, con ApiKey configurata si connetteva all'endpoint privato e funzionavano solo i metodi privati. Un'applicazione che aveva bisogno dei dati di mercato e dei dati dell'account allo stesso tempo doveva creare due istanze del componente, una con credenziali e una senza.
Comportamento attuale. La connessione del componente è sempre quella pubblica, quindi i dati di mercato sono disponibili indipendentemente dal fatto che le credenziali siano configurate o meno. Quando è configurata una ApiKey, il componente apre anche in autonomia una seconda connessione all'endpoint v2, e un'unica istanza riceve così contemporaneamente i dati di mercato pubblici e i dati dell'account privati. Questa seconda connessione è interna: viene aperta e chiusa dal componente insieme a quella pubblica, non ha una propria proprietà Active né propri eventi, e tutto ciò che arriva su di essa viene esposto tramite gli eventi del componente, esattamente come i dati di mercato.
Non c'è nulla da modificare nelle applicazioni esistenti. Non è stata aggiunta nessuna nuova proprietà né nessun nuovo evento, l'API pubblica del componente è la stessa di prima. Un'applicazione che imposta già ApiKey e sottoscrive solo i canali privati continua a funzionare, e ora può sottoscrivere anche i canali pubblici sulla stessa istanza. Un'applicazione che usava due istanze continua a funzionare, anche se la seconda istanza non è più necessaria.
L'autenticazione della connessione privata avviene in modo autonomo, quindi la connessione privata potrebbe essere ancora in fase di connessione o di autenticazione nel momento in cui l'applicazione effettua la sottoscrizione. Non si tratta di un errore e non è necessario attendere nulla: il canale viene registrato e viene richiesto non appena l'autenticazione viene confermata. Lo stesso vale dopo una riconnessione quando Resubscribe è abilitato: i canali privati vengono ricostruiti e richiesti di nuovo una volta che la nuova sessione è stata autenticata.
Chiamare un metodo di sottoscrizione privato con nessuna ApiKey configurata ora genera l'evento OnHuobiError, che riporta il canale richiesto e l'endpoint di cui aveva bisogno. In precedenza la richiesta veniva scritta su una connessione che non poteva soddisfarla e andava persa senza lasciare traccia.
Il client futures (TsgcWS_API_Huobi_Fut) si connette a un endpoint diverso, che qui non ha una controparte v2, quindi non apre una seconda connessione e i suoi frame privati viaggiano sulla propria connessione, esattamente come hanno sempre fatto.
È possibile iscriversi ai seguenti canali pubblici (la chiave API non è necessaria)
| Method | Description |
| SubscribeKLine | Questo topic invia una nuova candela ogni volta che è disponibile. Periodi supportati: 1min, 5min, 15min, 30min, 60min, 4hour, 1day, 1mon, 1week, 1year. |
| SubscribeMarketDepth | Questo argomento invia il più recente libro degli ordini di mercato per prezzo in modalità snapshot a intervalli di 1 secondo. Livelli di aggregazione della profondità supportati: da step0 a step15. |
| SubscribeTradeDetail | Questo argomento invia gli ultimi scambi completati. Si aggiorna tick per tick. |
| SubscribeMarketDetail |
Questo topic invia le ultime statistiche di mercato con riepilogo 24h. Si aggiorna in modalità snapshot, con una frequenza non superiore a 10 volte al secondo. |
| SubscribeBBO | L'utente può ricevere l'aggiornamento BBO (Best Bid/Offer) in modalità tick by tick. |
| SubscribeMarketTicker |
Recuperare il ticker di mercato. I dati vengono inviati ogni 100 ms. |
| SubscribeMarketByPrice | L'utente può iscriversi a questo canale per ricevere aggiornamenti del book degli ordini Market By Price. L'intervallo di aggiornamento è di circa 100 ms. Livelli supportati: 5, 10, 20, 150, 400. |
I seguenti metodi sono disponibili per il client API Futures (TsgcWS_API_Huobi_Fut) in aggiunta a tutti i metodi pubblici sopra indicati.
| Method | Description |
| SubscribeIncrementalMarketDepth | Sottoscrivi aggiornamenti incrementali della profondità di mercato con dimensione e tipo di dati configurabili (snapshot o incrementale). |
| SubscribePremiumIndexKLine | Sottoscrivere i dati kline/candlestick premium dell'indice per i contratti futures. |
| SubscribeEstimatedRateKLine | Iscriviti ai dati kline/candlestick del tasso di finanziamento stimato per i contratti futures. |
| SubscribeBasisData | Sottoscriversi ai dati di base (spread di prezzo spot-futures). Supporta diversi tipi di prezzi di base: open, close, high, low. |
| SubscribeMarkPriceKLine | Iscriviti ai dati kline/candlestick del prezzo mark per i contratti futures. |
| SubscribeLiquidationOrders | Abbonati al feed degli ordini di liquidazione pubblica per un determinato contratto. Non è richiesta l'autenticazione. |
| SubscribeFundingRate | Sottoscrivere gli aggiornamenti pubblici del tasso di finanziamento per un determinato contratto. Non è richiesta autenticazione. |
| SubscribeContractInfo | Sottoscrive le modifiche dei parametri del contratto (ad esempio quotazioni, ritiri dalla quotazione, aggiustamenti dei parametri dei contratti). |
È possibile sottoscrivere i seguenti canali privati (è richiesta una chiave API). Sono serviti dalla seconda connessione che il componente apre automaticamente quando è configurata la ApiKey, quindi possono essere combinati con i canali pubblici sulla stessa istanza del componente. Se le credenziali non sono corrette, la connessione verrà chiusa automaticamente, e se non è presente alcuna ApiKey la richiesta viene riportata nell'evento OnHuobiError.
| Method | Description |
| SubscribeOrderUpdates |
Un aggiornamento dell'ordine può essere attivato da uno dei seguenti eventi:
|
| SubscribeTradeClearing | Aggiornamento solo quando l'ordine è in transazione o in cancellazione. L'aggiornamento della transazione dell'ordine avviene in modalità tick by tick, il che significa che se l'ordine di un taker corrisponde a più ordini di maker, le più transazioni simultanee verranno diffuse una alla volta. Tuttavia, la sequenza di aggiornamento delle transazioni multiple potrebbe non corrispondere esattamente alla sequenza delle transazioni effettuate. Inoltre, se un ordine viene annullato automaticamente immediatamente dopo le sue esecuzioni parziali, come un tipico ordine IOC, questo canale potrebbe diffondere prima l'aggiornamento di cancellazione rispetto alla transazione. |
| SubscribeAccountChange |
Specificato il campo di sottoscrizione, l'aggiornamento può essere attivato da uno dei seguenti eventi. Il parametro aMode controlla il comportamento dell'aggiornamento:
Modalità 0: aggiorna solo quando il saldo del conto viene modificato. Modalità 1: aggiornamento quando il saldo del conto o il saldo disponibile cambia (aggiornamenti separati). Modalità 2: aggiornamento quando il saldo del conto o il saldo disponibile cambia (aggiornamento combinato). |
OnHuobiSubscribed: evento chiamato dopo una sottoscrizione avvenuta con successo.
OnHuobiUnSubscribed: evento chiamato dopo una cancellazione della sottoscrizione avvenuta con successo.
OnHuobiUpdate: ogni volta che c'è un aggiornamento nei dati (kline, market depth...) viene chiamato questo evento. Riporta gli aggiornamenti sia dei canali pubblici sia di quelli privati, indipendentemente da quale delle due connessioni provengano.
OnHuobiError: se si verifica un errore nell'API Huobi, questo evento fornirà informazioni sull'errore. Viene chiamato anche quando viene richiesto un canale privato e il componente non dispone di una ApiKey per aprire la connessione privata, con il parametro Code impostato a "private-credentials" e il parametro Msg che indica il nome del canale richiesto.