API Huobi

Huobi (HTX)

Huobi (przemianowany na HTX) to międzynarodowa wielojęzyczna giełda kryptowalut.

Konfiguracja

Aby subskrybować prywatne aktualizacje konta, należy utworzyć klucz API na koncie Huobi. Po utworzeniu należy ustawić klucz API i sekret w kliencie Huobi API

Dane publiczne i prywatne w jednym komponencie

HTX udostępnia dane rynkowe i dane konta na dwóch różnych punktach końcowych, z dwoma różnymi schematami: wss://api.htx.com/ws przenosi dane rynkowe jako ramki subskrypcji v1, a wss://api.htx.com/ws/v2 przenosi kanały konta i zleceń jako uwierzytelnione ramki v2. Żaden z tych punktów końcowych nie odpowiada na ramki tego drugiego.

Poprzednie zachowanie. Komponent otwierał jedno połączenie i wybierał punkt końcowy na podstawie danych uwierzytelniających: przy pustym ApiKey łączył się z publicznym punktem końcowym i działały wyłącznie metody publiczne, a przy skonfigurowanym ApiKey łączył się z prywatnym punktem końcowym i działały wyłącznie metody prywatne. Aplikacja, która potrzebowała jednocześnie danych rynkowych i danych konta, musiała utworzyć dwie instancje komponentu, jedną z danymi uwierzytelniającymi i jedną bez nich.

Obecne zachowanie. Połączenie komponentu jest zawsze połączeniem publicznym, więc dane rynkowe są dostępne niezależnie od tego, czy skonfigurowano dane uwierzytelniające. Gdy skonfigurowano ApiKey, komponent samodzielnie otwiera również drugie połączenie z punktem końcowym v2, dzięki czemu jedna instancja odbiera jednocześnie publiczne dane rynkowe i prywatne dane konta. To drugie połączenie jest wewnętrzne: jest otwierane i zamykane przez komponent razem z połączeniem publicznym, nie ma własnej właściwości Active ani własnych zdarzeń, a wszystko, co na nie dociera, jest ujawniane poprzez zdarzenia komponentu, dokładnie tak samo jak dane rynkowe.

W istniejących aplikacjach nie trzeba niczego zmieniać. Nie dodano żadnej nowej właściwości ani żadnego nowego zdarzenia, publiczne API komponentu jest takie samo jak wcześniej. Aplikacja, która już ustawia ApiKey i subskrybuje wyłącznie kanały prywatne, nadal działa i może teraz subskrybować na tej samej instancji także kanały publiczne. Aplikacja, która używała dwóch instancji, nadal działa, choć druga instancja nie jest już potrzebna.

Uwierzytelnianie połączenia prywatnego przebiega samodzielnie, więc w momencie, gdy aplikacja subskrybuje kanał, połączenie prywatne może wciąż się łączyć lub uwierzytelniać. Nie jest to błąd i na nic nie trzeba czekać: kanał zostaje zapamiętany i jest żądany, gdy tylko uwierzytelnienie zostanie potwierdzone. To samo dotyczy sytuacji po ponownym połączeniu, gdy włączone jest Resubscribe, kanały prywatne są odbudowywane i żądane ponownie, gdy tylko nowa sesja zostanie uwierzytelniona.

Wywołanie metody subskrypcji prywatnej bez skonfigurowanego ApiKey wywołuje teraz zdarzenie OnHuobiError, zgłaszając żądany kanał oraz punkt końcowy, którego potrzebował. Wcześniej żądanie było zapisywane na połączeniu, które nie mogło go obsłużyć, i ginęło bez śladu.

Klient kontraktów terminowych (TsgcWS_API_Huobi_Fut) łączy się z innym punktem końcowym, który nie ma tutaj odpowiednika v2, więc nie otwiera drugiego połączenia, a jego ramki prywatne przemieszczają się przez jego własne połączenie, dokładnie tak jak dotychczas.

Metody publiczne

Można subskrybować następujące kanały publiczne (klucz API nie jest wymagany).

Metoda Opis
SubscribeKLine Ten temat wysyła nową świecę, gdy tylko jest dostępna. Obsługiwane okresy: 1min, 5min, 15min, 30min, 60min, 4hour, 1day, 1mon, 1week, 1year.
SubscribeMarketDepth Ten temat wysyła najnowszy arkusz zleceń według ceny w trybie migawki w odstępach 1-sekundowych. Obsługiwane poziomy agregacji głębokości: od step0 do step15.
SubscribeTradeDetail Ten temat wysyła najnowsze zakończone transakcje. Aktualizowany jest w trybie tick by tick.
SubscribeMarketDetail

Ten temat przesyła najnowsze statystyki rynkowe z podsumowaniem 24-godzinnym. Aktualizowany jest w trybie snapshot z częstotliwością nie większą niż 10 razy na sekundę.

SubscribeBBO Użytkownik może otrzymywać aktualizacje BBO (Best Bid/Offer) w trybie tick-by-tick.
SubscribeMarketTicker

Pobieranie tickera rynkowego. Dane są przekazywane co 100 ms.

SubscribeMarketByPrice Użytkownik może subskrybować ten kanał, aby otrzymywać aktualizacje arkusza zleceń Market By Price. Interwał aktualizacji wynosi około 100 ms. Obsługiwane poziomy: 5, 10, 20, 150, 400.

Metody publiczne kontraktów terminowych

Następujące metody są dostępne dla klienta Futures API (TsgcWS_API_Huobi_Fut) jako uzupełnienie wszystkich wymienionych powyżej metod publicznych.

Metoda Opis
SubscribeIncrementalMarketDepth Subskrybuj przyrostowe aktualizacje głębokości rynku z konfigurowalnym rozmiarem i typem danych (migawka lub przyrostowa).
SubscribePremiumIndexKLine Subskrybuj dane kline/świecznikowe indeksu premium dla kontraktów futures.
SubscribeEstimatedRateKLine Subskrybuje dane kline/świecowe szacowanej stopy finansowania dla kontraktów futures.
SubscribeBasisData Subskrypcja danych bazowych (spread cenowy spot-futures). Obsługuje różne typy cen bazowych: open, close, high, low.
SubscribeMarkPriceKLine Subskrybuje dane kline/świecowe ceny mark dla kontraktów futures.
SubscribeLiquidationOrders Subskrybuj publiczny feed zleceń likwidacyjnych dla danego kontraktu. Uwierzytelnianie nie jest wymagane.
SubscribeFundingRate Subskrybuj publiczne aktualizacje stopy finansowania dla danego kontraktu. Uwierzytelnianie nie jest wymagane.
SubscribeContractInfo Subskrybuj zmiany parametrów kontraktu (np. notowania kontraktów, usunięcia z notowań, korekty parametrów).

Prywatne metody

Można subskrybować następujące kanały prywatne (wymagany jest klucz API). Są one obsługiwane przez drugie połączenie, które komponent otwiera automatycznie, gdy skonfigurowano ApiKey, dzięki czemu można je łączyć z kanałami publicznymi na tej samej instancji komponentu. Jeśli dane uwierzytelniające są nieprawidłowe, połączenie zostanie automatycznie zamknięte, a jeśli ApiKey w ogóle nie jest ustawiony, żądanie zostaje zgłoszone w zdarzeniu OnHuobiError.

Metoda Opis
SubscribeOrderUpdates

Aktualizacja zamówienia może zostać wywołana przez dowolne z poniższych zdarzeń:


- Błąd wyzwolenia zlecenia warunkowego (eventType=trigger)
- Anulowanie zlecenia warunkowego przed wyzwoleniem (eventType=deletion)
- Utworzenie zlecenia (eventType=creation)
- Dopasowanie zlecenia (eventType=trade)
- Anulowanie zlecenia (eventType=cancellation)

SubscribeTradeClearing Aktualizacja następuje wyłącznie, gdy zlecenie jest w trakcie transakcji lub anulowania. Aktualizacja transakcji zlecenia odbywa się w trybie tick-by-tick, co oznacza, że jeśli zlecenie biorącego (taker) pasuje do wielu zleceń dającego (maker), jednoczesne wielokrotne transakcje są przesyłane jedna po drugiej. Kolejność aktualizacji wielu transakcji może jednak nie być dokładnie taka sama jak kolejność wykonanych transakcji. Ponadto, jeśli zlecenie zostanie automatycznie anulowane natychmiast po częściowym realizowaniu — na przykład typowe zlecenie IOC — ten kanał może najpierw przesłać aktualizację anulowania przed informacją o transakcji.
SubscribeAccountChange

Po określeniu wartości pola subskrypcji aktualizacja może być wyzwalana przez dowolne z następujących zdarzeń. Parametr aMode steruje zachowaniem aktualizacji:

Tryb 0: Aktualizacja tylko w przypadku zmiany salda konta.

Tryb 1: Aktualizacja przy zmianie salda konta lub dostępnego salda (oddzielne aktualizacje).

Tryb 2: Aktualizacja przy zmianie salda konta lub dostępnego salda (aktualizacja łączona).

Zdarzenia

OnHuobiSubscribed: zdarzenie wywoływane po pomyślnej subskrypcji.

OnHuobiUnSubscribed: zdarzenie wywoływane po pomyślnym anulowaniu subskrypcji.

OnHuobiUpdate: zdarzenie wywoływane przy każdej aktualizacji danych (kline, głębokość rynku itp.). Zgłasza aktualizacje zarówno kanałów publicznych, jak i prywatnych, niezależnie od tego, z którego z dwóch połączeń dotarły.

OnHuobiError: jeśli wystąpi błąd w API Huobi, to zdarzenie dostarczy informacje o błędzie. Jest również wywoływane, gdy zażądano kanału prywatnego, a komponent nie ma ApiKey potrzebnego do otwarcia połączenia prywatnego, z parametrem Code ustawionym na "private-credentials" i parametrem Msg zawierającym nazwę żądanego kanału.