Kraken WebSocket API – często zadawane pytania

Ostatnia aktualizacja: 31 mar 2025

Czy Kraken posiada interfejs API WebSocket? Jak mogę się z nim połączyć?

Kraken posiada zarówno interfejs API REST, jak i interfejs API WebSocket. Nasz interfejs API WebSocket jest dostępny pod następującymi bezpiecznymi adresami URL:

Publiczne (nieautoryzowane) kanały danych rynkowych: wss://ws.kraken.com/

Prywatne (autoryzowane) kanały danych konta i punkty końcowe handlu: wss://ws-auth.kraken.com/

Uwierzytelnianie nie jest wymagane do połączenia z publicznymi kanałami danych rynkowych, ale ważny token uwierzytelniający jest wymagany dla kanałów prywatnych.

Wszystkie wiadomości wysyłane i odbierane za pośrednictwem interfejsu API WebSocket są zwykłym tekstem zakodowanym w formacie JSON. Szczegóły każdego typu wiadomości są dostępne w naszej dokumentacji API WebSocket.

Czy dostępne są biblioteki WebSocket?

Posiadamy różnorodne przykładowe kody API WebSocket, które można wykorzystać bezpośrednio lub jako punkt wyjścia do własnej implementacji:

  • klient wiersza poleceń API WebSocket (w Pythonie),

  • pakiet testowy API WebSocket (w JavaScript),

  • przykłady użycia naszego zalecanego modułu Python WebSocket (websocket-client),

  • oraz biblioteka API WebSocket (Github).

Nasz interfejs API WebSocket może być zaimplementowany w dowolnym preferowanym języku programowania, a nasz zespół wsparcia API z przyjemnością pomoże lub dostarczy przykładowy kod w dodatkowych językach, jeśli zajdzie taka potrzeba.

Które kanały/punkty końcowe są obsługiwane?

Nasz interfejs API WebSocket zapewnia różnorodne kanały danych rynkowych w czasie rzeczywistym, kanały danych konta i punkty końcowe handlu. Pełna lista dostępnych kanałów/punktów końcowych, wraz ze szczegółami implementacji dla każdego kanału/punktu końcowego, znajduje się w naszej dokumentacji API WebSocket.

Skąd mam wiedzieć, że jestem pomyślnie połączony? Skąd mam wiedzieć, że nadal jestem połączony?

Po zasubskrybowaniu kanału, wiadomość {u'event': u'heartbeat'} będzie odbierana z częstotliwością 1 sygnału co sekundę.

Sygnały pulsu nie będą odbierane, jeśli zamiast nich zostaną odebrane inne wiadomości (dane rynkowe, dane konta itp.). Kiedy i dlaczego dane rynkowe lub dane konta są odbierane, zależy od kanału, który subskrybujesz.

Jeśli subskrybujesz kanał pary walutowej o niskim wolumenie handlu, możesz otrzymywać tylko sygnały pulsu przez długie okresy.

Jeśli anulujesz subskrypcję kanału, nie będziesz już otrzymywać sygnałów pulsu ani danych handlowych, a po minucie braku subskrypcji jakiegokolwiek kanału zostaniesz odłączony od kanału WebSockets.

Kiedy i dlaczego WebSocket wysyła zaktualizowane dane?

Kiedy i dlaczego dane rynkowe lub dane konta są odbierane, zależy od kanału, który subskrybujesz. Na przykład:

Ticker: Gdy następuje transakcja lub partia transakcji dla pary walutowej, publikowana jest wiadomość ticker dla tej pary. Otrzymasz tę wiadomość tylko wtedy, gdy subskrybujesz kanał ticker dla tej pary.

Transakcja: Podobnie, gdy następuje transakcja lub partia transakcji dla pary walutowej, publikowana jest również wiadomość transakcyjna dla tej pary. Otrzymasz tę wiadomość tylko wtedy, gdy subskrybujesz kanał transakcyjny dla tej pary.

OHLC: Zaktualizowany interwał OHLC jest publikowany dla każdego interwału, gdy transakcja lub partia transakcji dla pary walutowej zostanie wykonana. Otrzymasz aktualizacje tylko dla interwałów, które subskrybujesz. Po przekroczeniu granicy interwału żadna wiadomość nie jest wysyłana, dopóki nie nastąpi następna transakcja.

Księga zleceń: Początkowa migawka księgi zleceń z wybraną głębokością jest publikowana po pierwszym zasubskrybowaniu kanału księgi zleceń.

W miarę dodawania nowych zleceń do księgi zleceń lub wykonywania transakcji, które wpływają na głębokość księgi zleceń, którą subskrybujesz, publikowana jest wiadomość zawierająca aktualizacje księgi zleceń dla wszystkich dotkniętych poziomów cen i wolumenów. Te aktualizacje mogą zawierać tylko oferty kupna, tylko oferty sprzedaży lub zarówno oferty kupna, jak i sprzedaży. Szczegóły znajdują się w sekcji Jak zbudować księgę zleceń poniżej.

Spread: Gdy zostanie złożone nowe najwyższe zlecenie kupna lub najniższe zlecenie sprzedaży, lub zostanie wykonana transakcja, która zmienia najlepszą cenę kupna lub najlepszą cenę sprzedaży, publikowana jest wiadomość spread z zaktualizowanymi cenami kupna i sprzedaży.

Czy kanały WebSocket dostarczają dane historyczne, czy tylko bieżące?

Kanały danych rynkowych WebSocket dostarczają tylko bieżące dane, jednak możliwe jest jednoczesne połączenie z API WebSocket dla bieżących danych i API REST dla danych historycznych.

Użycie parametru reqid.

Żądania subskrypcji mogą zawierać dostarczony przez klienta parametr reqid, który może być następnie użyty do dopasowania żądanego żądania subskrypcji WebSocket do identyfikatora kanału dla tej subskrypcji.

Zauważ, że jeśli wykonasz wiele subskrypcji WebSocket jednocześnie, wszystkie otrzymają tę samą wartość reqid. Aby przypisać inną wartość reqid, każdy kanał musi być subskrybowany indywidualnie.

Chcę więcej szczegółów, gdzie mogę je znaleźć?

Pełna specyfikacja API WebSocket jest dostępna w dokumentacji API WebSocket.

Różnice między symbolami par walutowych w interfejsach API REST i WebSocket.

Interfejs API WebSocket akceptuje symbole par walutowych tylko w formacie ISO 4217-A3, takim jak XBT/USD.

Punkt końcowy AssetPairs interfejsu API REST może być używany do tłumaczenia symboli między wersjami API REST (takimi jak XBTUSD lub XXBTZUSD) a wersją API WebSocket (taką jak XBT/USD).

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

Pole wsname dostarcza symbol API WebSocket.

Jak zbudować księgę zleceń

Kanał księgi zleceń API WebSocket jest najbardziej złożony ze wszystkich kanałów WebSocket, ale dopóki wiadomości kanału księgi zleceń są poprawnie interpretowane, możliwe jest utrzymanie lokalnej kopii księgi zleceń za pomocą zaledwie kilku linii kodu.

Nasze strony wsparcia API WebSocket zawierają szczegółowe instrukcje dotyczące interpretacji wiadomości kanału księgi zleceń, wraz z przykładem transkrypcji kanału księgi zleceń oraz przykładowym kodem (w Pythonie) do utrzymywania ważnej lokalnej kopii księgi zleceń.

Jakie są limity połączeń API WebSocket?

Interfejs API WebSocket ogranicza maksymalną liczbę jednoczesnych połączeń, aby zapewnić ochronę przed niewłaściwym użyciem (takim jak na przykład ataki DDoS). Jeśli klient WebSocket nawiąże zbyt wiele połączeń jednocześnie, zostanie odebrany następujący komunikat o błędzie:

{“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”}}

Interfejs API WebSocket umożliwia wiele subskrypcji kanałów za pośrednictwem jednego połączenia WebSocket (takich jak subskrybowanie wszystkich dostępnych danych rynkowych dla pary walutowej XBT/USD za pośrednictwem jednego połączenia), więc możliwe jest przesyłanie strumieniowe wszystkich dostępnych danych rynkowych dla wszystkich par walutowych bez osiągania limitów połączeń WebSocket.

Jakie są limity szybkości API WebSocket?

Te same limity szybkości handlu obowiązują we wszystkich interfejsach wprowadzania zleceń (strona internetowa, Kraken Terminal, interfejsy API REST i WebSocket) i są szczegółowo wyjaśnione na naszej stronie wsparcia dotyczącej limitów szybkości.

Limit szybkości wiadomości dla pojedynczego połączenia API WebSocket będzie się różnić w zależności od obciążenia systemu. Klienci API WebSocket otrzymają komunikat o błędzie {"Error": "Exceeded msg rate"} po przekroczeniu limitu szybkości wiadomości.

Handel (składanie/anulowanie zleceń) za pośrednictwem interfejsu API WebSocket.

Handel za pośrednictwem interfejsu API WebSocket jest dostępny za pośrednictwem punktów końcowych addOrder i cancelOrder, które służą odpowiednio do składania nowych zleceń i anulowania istniejących (otwartych) zleceń.

Punkty końcowe handlu WebSocket są dostępne za pośrednictwem tego samego prywatnego połączenia WebSocket (wss://ws-auth.kraken.com/) co prywatne kanały zarządzania kontem (openOrders i ownTrades).

Pełne szczegóły dotyczące punktów końcowych handlu są dostępne w dokumentacji API WebSocket, a nasze strony wsparcia API WebSocket dostarczają dalszych informacji i przykładów użycia punktów końcowych handlu we własnym kodzie.

Dlaczego otrzymuję błąd 403 podczas łączenia się z API WebSocket?

Połączenia API WebSocket są pośredniczone przez Cloudflare, dlatego wszelkie ustawienia bezpieczeństwa zaimplementowane przez Cloudflare mogą wpływać na połączenia zarówno z publicznymi (wss://ws.kraken.com), jak i prywatnymi (wss://ws-auth.kraken.com) adresami URL.

Cloudflare wymaga, aby dla wszystkich połączeń TLS używane było Server Name Indication (SNI), w przeciwnym razie połączenie WebSocket zakończyłoby się niepowodzeniem, a zamiast tego zwrócony zostałby błąd HTTP 403 Forbidden. Strony wsparcia Cloudflare zawierają dalsze szczegóły dotyczące ich wymagań TLS SNI.

Nasza oficjalna biblioteka API Python WebSocket została zaktualizowana w celu obsługi TLS SNI, ale niektóre biblioteki API WebSocket innych firm mogą nadal być dotknięte. Skontaktuj się z naszym zespołem wsparcia API, jeśli potrzebujesz pomocy w aktualizacji kodu API WebSocket w celu obsługi TLS SNI.

Pomoc API WebSocket.

Skontaktuj się z naszym zespołem wsparcia API, jeśli potrzebujesz pomocy w implementacji klienta API WebSocket.

Potrzebujesz więcej pomocy?