WebSocket API v1 – składanie i anulowanie zleceń

Ostatnia aktualizacja: 1 kwi 2025

Nasze API WebSocket v1 obsługuje handel za pośrednictwem punktów końcowych addOrder i cancelOrder. Punkt końcowy addOrder służy do składania nowych zleceń, a punkt końcowy cancelOrder służy do anulowania istniejących (otwartych) zleceń.

Zarówno addOrder, jak i cancelOrder są prywatnymi punktami końcowymi, co oznacza, że można uzyskać do nich dostęp wyłącznie za pośrednictwem uwierzytelnionego połączenia WebSocket.

Początkowe połączenie powinno zostać nawiązane z uwierzytelnionym adresem URL WebSocket wss://ws-auth.kraken.com/ , które może być następnie utrzymywane w nieskończoność, podczas gdy zlecenia są składane i anulowane. Pojedyncze połączenie WebSocket jest zaprojektowane do obsługi wielu żądań, więc nie jest konieczne (ani zalecane) łączenie/rozłączanie dla każdego wywołania punktów końcowych handlu.

Uwierzytelnianie WebSocket

Token uwierzytelniania WebSocket można pobrać za pośrednictwem punktu końcowego REST API GetWebSocketsToken.

Po pobraniu tokena można nawiązać połączenie z prywatnym adresem URL WebSocket wss://ws-auth.kraken.com/ i punkty końcowe addOrder oraz cancelOrder mogą być następnie używane w nieskończoność (token nie wygaśnie, dopóki będzie używany do składania i anulowania zleceń).

Należy pamiętać, że klucz API używany do pobierania tokena musi mieć uprawnienia zarówno do Modyfikowania zleceń, jak i Anulowania/Zamykania zleceń, w przeciwnym razie z API WebSocket zostanie odebrany błąd odmowy dostępu.

Składanie zlecenia

Po nawiązaniu uwierzytelnionego połączenia WebSocket zlecenie można złożyć, wysyłając wiadomość podobną do poniższej:

  • {"event":"addOrder", "token":"nT9n23/7oLdq+bNHNMNJ4VvF1hiHhjTnPOaCMiB1GJ0", "pair":"XBT/USD", "type":"buy", "ordertype":"limit", "price":"9857", "volume":"0.002", "leverage":"5", "userref":"8874657"}

Następnie zostanie odebrana odpowiedź wskazująca status żądania (czy zlecenie zostało przyjęte, czy odrzucone). W przypadku zlecenia, które zostało przyjęte i pomyślnie złożone, odpowiedź wskaże status ok i będzie podobna do poniższej:

  • {"descr":"buy 0.00200000 XBTUSD @ limit 9857.0 with 5:1 leverage","event":"addOrderStatus","status":"ok","txid":"OPOUJF-BWKCL-FG5DQL"}

W przypadku zlecenia, które zostało odrzucone i nie złożone, odpowiedź wskaże status błędu, wraz z komunikatem o błędzie wskazującym przyczynę odrzucenia (nieprawidłowe argumenty, niewystarczające środki itp.), takim jak poniższe odrzucenie zlecenia, które nie spełniało minimalnego rozmiaru zlecenia:

  • {"errorMessage":"EOrder:Order minimum not met","event":"addOrderStatus","status":"error"}

Anulowanie zlecenia

Po nawiązaniu uwierzytelnionego połączenia WebSocket (lub, najlepiej, ponownym wykorzystaniu istniejącego połączenia), zlecenie można anulować, wysyłając wiadomość podobną do poniższej:

  • {"event":"cancelOrder", "token":"s74Ajl83it0dNNKcF072NJ5wDmLTGIceaCbV96eWbFg", "txid":["OJZ3DI-IU6QC-ME7TVE"]}

Następnie zostanie odebrana odpowiedź wskazująca status żądania (czy anulowanie zostało przyjęte, czy odrzucone). W przypadku zlecenia, które zostało pomyślnie anulowane, odpowiedź wskaże status ok i będzie podobna do poniższej:

  • {"event":"cancelOrderStatus","status":"ok"}

W przypadku odrzuconego żądania anulowania, odpowiedź wskaże status błędu, wraz z komunikatem o błędzie wskazującym przyczynę odrzucenia (nieprawidłowy identyfikator zlecenia itp.), takim jak poniższe odrzucenie żądania anulowania zlecenia, które zostało już anulowane:

  • {"errorMessage":"EOrder:Unknown order","event":"cancelOrderStatus","status":"error"}

Należy pamiętać, że w przeciwieństwie do punktu końcowego REST API CancelOrder, możliwe jest określenie wielu identyfikatorów zamówień w jednej wiadomości anulowania WebSocket. Identyfikatory zamówień do anulowania powinny być zawarte jako oddzielne wpisy w tablicy txid, w następujący sposób:

  • {"event":"cancelOrder", "token":"c4JjTNHSurKmWDsnrGaCxIuCOa4FurCZK2ppktvT2Yo", "txid":["OLVCRZ-DNKJI-VRTZKY","O67X6E-PBGSR-GU23R5","OECCDC-T2R4V-52CR7T"]}

Potrzebujesz więcej pomocy?