Aktualizacja API Kraken w sgcWebSockets

· Funkcje
Integracja API Kraken Spot i Futures w Delphi

Kraken to jedna z najdłużej działających i najbardziej zaufanych giełd kryptowalut, oferująca zarówno rynki spot, jak i futures. Komponenty TsgcWSAPI_Kraken i TsgcWSAPI_Kraken_Futures dla Delphi zapewniają pełny dostęp do WebSocket i REST API Krakena, umożliwiając strumieniowanie danych rynkowych w czasie rzeczywistym, zarządzanie kontem, składanie zleceń i handel futures z jednej bazy kodu.

Spis treści

Przegląd

API Krakena jest podzielone na dwie odrębne platformy, każda z własnym komponentem:

Komponent Rynek Opis
TsgcWSAPI_Kraken Spot Handel kryptowalutami na giełdzie spot Krakena z obsługą WebSocket i REST
TsgcWSAPI_Kraken_Futures Futures Handel kontraktami wieczystymi i o stałym terminie zapadalności z pozycjami lewarowanymi

Oba komponenty zapewniają dwukanałowe podejście: połączenia WebSocket dla strumieniowania danych w czasie rzeczywistym z małym opóźnieniem oraz endpointy REST dla operacji żądanie/odpowiedź, takich jak zapytania o salda, składanie zleceń i pobieranie danych historycznych.

Konfiguracja

Oba komponenty — Spot i Futures — wymagają danych uwierzytelniających API dla prywatnych (uwierzytelnionych) operacji. Publiczne endpointy, takie jak dane rynkowe, nie wymagają uwierzytelniania.

Właściwość Typ Opis
Kraken.ApiKey String Twój klucz API Kraken, wygenerowany ze strony ustawień konta Kraken
Kraken.ApiSecret String Twój sekret API Kraken, używany do podpisywania prywatnych żądań
Uwaga: Generuj klucze API w kraken.com > Security > API. Przypisuj tylko uprawnienia wymagane przez aplikację. Dla dashboardów tylko do odczytu całkowicie wyłącz uprawnienia do handlu i wypłat.

Spot WebSocket API

Spot WebSocket API zapewnia strumieniowanie danych rynkowych i prywatnych zdarzeń konta w czasie rzeczywistym. Metody dzielą się na kanały publiczne (nie wymagają uwierzytelniania) i prywatne (wymagają prawidłowego tokenu WebSocket).

Kanały publiczne

Metoda Opis
SubscribeTicker / UnSubscribeTicker Informacje tickera w czasie rzeczywistym, w tym najlepsza oferta kupna/sprzedaży, wolumen 24h i statystyki cen
SubscribeOHLC / UnSubscribeOHLC Dane OHLC (świece) w czasie rzeczywistym przy konfigurowalnych interwałach
SubscribeTrade / UnSubscribeTrade Strumień realizacji transakcji w czasie rzeczywistym pokazujący każdą transakcję na giełdzie
SubscribeBook / UnSubscribeBook Migawki i przyrostowe aktualizacje księgi zleceń przy konfigurowalnej głębokości
SubscribeSpread / UnSubscribeSpread Aktualizacje spreadu bid/ask w czasie rzeczywistym
SubscribeAll / UnSubscribeAll Subskrypcja lub anulowanie subskrypcji wszystkich kanałów publicznych dla danej pary jednocześnie

Kanały prywatne

Metoda Opis
SubscribeOwnTrades / UnSubscribeOwnTrades Strumień własnych zrealizowanych transakcji w czasie rzeczywistym
SubscribeOpenOrders / UnSubscribeOpenOrders Aktualizacje otwartych zleceń w czasie rzeczywistym (nowe, zmodyfikowane, anulowane, wypełnione)
AddOrder Składa nowe zlecenie przez WebSocket (mniejsze opóźnienie niż REST)
CancelOrder Anuluje istniejące zlecenie przez WebSocket
// Subscribe to public ticker data for BTC/USD
oKraken.SubscribeTicker('XBT/USD');
// Subscribe to the order book with 10-level depth
oKraken.SubscribeBook('XBT/USD');
// Subscribe to real-time trades
oKraken.SubscribeTrade('ETH/USD');
// Subscribe to private channels (requires API key)
oKraken.SubscribeOwnTrades;
oKraken.SubscribeOpenOrders;

Spot REST API

Do Spot REST API dostęp uzyskuje się przez właściwość REST_API komponentu TsgcWSAPI_Kraken. Zapewnia kompleksowy zestaw endpointów do zapytań o dane rynkowe, zarządzania kontem, handlu i operacji na środkach.

Publiczne metody REST

Metoda Opis
GetServerTime Zwraca bieżący czas serwera (przydatne do synchronizacji zegara)
GetAssets Listuje wszystkie dostępne aktywa i ich właściwości (miejsca dziesiętne, nazwa wyświetlana)
GetAssetPairs Listuje wszystkie pary aktywów dostępne do handlu ze strukturą opłat i informacjami o depozycie
GetTicker Zwraca dane tickera dla jednej lub wielu par (bid, ask, last, wolumen, VWAP)
GetOHLC Zwraca dane świec OHLC dla danej pary i interwału
GetOrderBook Zwraca bieżącą księgę zleceń dla danej pary na wskazanej głębokości
GetTrades Zwraca ostatnie transakcje dla danej pary
GetSpread Zwraca ostatnie dane spreadu dla danej pary

Prywatne metody REST — konto i handel

Metoda Opis
GetAccountBalance Zwraca salda dla wszystkich aktywów na koncie
GetTradeBalance Zwraca informacje o saldzie handlowym (kapitał własny, depozyt, wolny depozyt, P&L)
GetOpenOrders Zwraca wszystkie aktualnie otwarte zlecenia
GetClosedOrders Zwraca ostatnio zamknięte zlecenia
QueryOrders Zapytuje o określone zlecenia po identyfikatorze transakcji
GetTradesHistory Zwraca historię transakcji
QueryTrades Zapytuje o określone transakcje po identyfikatorze transakcji
GetLedgers Zwraca wpisy księgi głównej (wpłaty, wypłaty, transakcje, opłaty)
QueryLedgers Zapytuje o określone wpisy księgi głównej po identyfikatorze
GetTradeVolume Zwraca 30-dniowy wolumen handlu i poziom opłat
AddOrder Składa nowe zlecenie przez REST
CancelOrder Anuluje istniejące zlecenie przez REST
GetWebSocketsToken Generuje token wymagany do prywatnych subskrypcji WebSocket

Prywatne metody REST — eksport i raporty

Metoda Opis
AddExport Żąda eksportu danych (transakcje lub wpisy księgi)
ExportStatus Sprawdza status oczekującego żądania eksportu
RetrieveExport Pobiera ukończony plik eksportu
RemoveExport Usuwa raport eksportu

Prywatne metody REST — finansowanie

Metoda Opis
GetDepositMethods Zwraca dostępne metody wpłaty dla danego aktywa
GetDepositAddresses Zwraca adresy wpłat dla danego aktywa i metody
GetStatusOfRecentDeposits Zwraca status ostatnich transakcji wpłaty
GetWithdrawalInformation Zwraca szczegóły wypłaty (opłata, minimum, limit) dla danego aktywa
WithdrawFunds Inicjuje wypłatę na zewnętrzny adres
GetStatusOfRecentWithdraws Zwraca status ostatnich transakcji wypłaty
RequestWithdrawalCancelation Próbuje anulować oczekującą wypłatę
RequestWalletTransfer Przenosi środki między portfelami Kraken (np. z spot do futures)
// Public REST: Get ticker data
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// Public REST: Get OHLC data
ShowMessage(oKraken.REST_API.GetOHLC('XBTUSD'));
// Private REST: Get account balance
ShowMessage(oKraken.REST_API.GetAccountBalance);
// Private REST: Get open orders
ShowMessage(oKraken.REST_API.GetOpenOrders);

Futures WebSocket API

Komponent TsgcWSAPI_Kraken_Futures zapewnia strumieniowanie w czasie rzeczywistym dla rynków futures Krakena, w tym kontraktów wieczystych i futures o stałym terminie zapadalności.

Kanały publiczne

Metoda Opis
SubscribeTicker / UnSubscribeTicker Dane tickera futures w czasie rzeczywistym, w tym cena mark, cena indeksu i stopa finansowania
SubscribeTrade / UnSubscribeTrade Strumień realizacji transakcji na rynkach futures w czasie rzeczywistym
SubscribeBook / UnSubscribeBook Migawki i przyrostowe aktualizacje księgi zleceń dla kontraktów futures
SubscribeHeartBeat / UnSubscribeHeartBeat Monitorowanie kondycji połączenia przez okresowe wiadomości heartbeat
SubscribeTickerLite / UnSubscribeTickerLite Lekki ticker ze zmniejszonym ładunkiem do monitorowania o wysokiej częstotliwości

Kanały prywatne

Metoda Opis
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose Szczegółowe aktualizacje otwartych zleceń w czasie rzeczywistym z pełnymi informacjami o zleceniu
SubscribeOpenPositions / UnSubscribeOpenPositions Aktualizacje otwartych pozycji futures w czasie rzeczywistym
SubscribeAccountLog / UnSubscribeAccountLog Dziennik aktywności konta w czasie rzeczywistym (finansowanie, likwidacje itp.)
SubscribeFills / UnSubscribeFills Powiadomienia o wypełnieniach zleceń futures w czasie rzeczywistym
SubscribeOpenOrders / UnSubscribeOpenOrders Lekkie aktualizacje statusu otwartych zleceń
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins Aktualizacje salda i depozytu konta futures w czasie rzeczywistym
SubscribeNotifications / UnSubscribeNotifications Powiadomienia systemowe i alerty dla konta

Futures REST API

Do Futures REST API dostęp uzyskuje się przez właściwość REST_API komponentu TsgcWSAPI_Kraken_Futures. Zapewnia endpointy dla danych rynkowych, zarządzania zleceniami, zapytań konta i transferów środków.

Publiczne metody REST

Metoda Opis
GetFeeSchedules Zwraca bieżący harmonogram opłat za handel futures
GetHistory Zwraca historyczne dane rynkowe dla kontraktów futures
GetInstruments Listuje wszystkie dostępne instrumenty futures i ich specyfikacje kontraktowe
GetTickers Zwraca dane tickera dla wszystkich kontraktów futures

Prywatne metody REST — konto i zlecenia

Metoda Opis
GetAccounts Zwraca salda konta futures i informacje o depozycie
GetFills Zwraca ostatnią historię wypełnień zleceń futures
GetHistoricalExecutions Zwraca historyczne realizacje zleceń
GetHistoricalOrders Zwraca historyczne dane zleceń
GetHistoricalTriggers Zwraca historyczne zdarzenia wyzwalaczy dla zleceń warunkowych
GetOpenPositions Zwraca wszystkie aktualnie otwarte pozycje futures
GetNotifications Zwraca powiadomienia konta

Prywatne metody REST — zarządzanie zleceniami

Metoda Opis
SendMarketOrder Składa zlecenie rynkowe po najlepszej bieżącej cenie
SendLimitOrder Składa zlecenie z limitem po podanej cenie
SendStopOrder Składa zlecenie stop wyzwalane po podanej cenie
SendTakeProfit Składa zlecenie take-profit
CancelAllOrders Anuluje jednocześnie wszystkie otwarte zlecenia futures
CancelOrderByOrderId Anuluje wskazane zlecenie używając identyfikatora zlecenia Kraken
CancelOrderByCliOrderId Anuluje wskazane zlecenie używając własnego identyfikatora zlecenia
EditOrderByOrderId Modyfikuje istniejące zlecenie używając identyfikatora zlecenia Kraken
EditOrderByCliOrderId Modyfikuje istniejące zlecenie używając własnego identyfikatora zlecenia

Prywatne metody REST — transfery i raporty

Metoda Opis
Transfer Przenosi środki między podkontami futures
WalletTransfer Przenosi środki między typami portfeli
SubAccountTransfer Przenosi środki między podkontami
WithdrawalToSpotWallet Przenosi środki z portfela futures z powrotem do portfela spot
GetFeeScheduleVolumes Zwraca wolumen do obliczania poziomu opłat
GetAccountLogCSV Pobiera dziennik aktywności konta jako plik CSV

Pełny przykład kodu

Poniższy przykład demonstruje połączenie z Kraken Spot API, pobieranie danych rynkowych przez REST, zapytanie o saldo konta i subskrypcję aktywnego kanału tickera przez WebSocket.

var
  oClient: TsgcWebSocketClient;
  oKraken: TsgcWSAPI_Kraken;
begin
  // Create and configure the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  oKraken := TsgcWSAPI_Kraken.Create(nil);
  oKraken.Client := oClient;
  // Configure API credentials for private endpoints
  oKraken.Kraken.ApiKey := 'your_api_key';
  oKraken.Kraken.ApiSecret := 'your_api_secret';
  // Connect to Kraken
  oClient.Active := True;
  // REST: Get ticker data for BTC/USD
  ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
  // REST: Get account balance (requires API key)
  ShowMessage(oKraken.REST_API.GetAccountBalance);
  // WebSocket: Subscribe to real-time ticker
  oKraken.SubscribeTicker('XBT/USD');
end;

Przykład dla futures

Konfiguracja komponentu Futures przebiega według tego samego schematu, używając TsgcWSAPI_Kraken_Futures:

var
  oClient: TsgcWebSocketClient;
  oFutures: TsgcWSAPI_Kraken_Futures;
begin
  oClient := TsgcWebSocketClient.Create(nil);
  oFutures := TsgcWSAPI_Kraken_Futures.Create(nil);
  oFutures.Client := oClient;
  // Configure API credentials
  oFutures.Kraken.ApiKey := 'your_futures_api_key';
  oFutures.Kraken.ApiSecret := 'your_futures_api_secret';
  oClient.Active := True;
  // REST: Get all available futures instruments
  ShowMessage(oFutures.REST_API.GetInstruments);
  // REST: Get account information
  ShowMessage(oFutures.REST_API.GetAccounts);
  // WebSocket: Subscribe to futures ticker
  oFutures.SubscribeTicker('PI_XBTUSD');
  // WebSocket: Subscribe to private account updates
  oFutures.SubscribeOpenPositions;
  oFutures.SubscribeAccountBalanceAndMargins;
end;

Uwagi i najlepsze praktyki

Klucze API dla Spot i Futures

Kraken używa oddzielnych kluczy API dla handlu spot i futures. Wygeneruj dedykowane klucze dla każdej platformy ze strony ustawień Krakena. Nie używaj tego samego klucza w obu komponentach.

Token WebSocket dla kanałów prywatnych

Prywatne subskrypcje WebSocket na giełdzie spot wymagają tymczasowego tokenu uzyskanego przez metodę REST GetWebSocketsToken. Komponent obsługuje to automatycznie gdy dane uwierzytelniające API są skonfigurowane, ale pamiętaj, że tokeny wygasają i będą odświeżane w razie potrzeby.

Limity zapytań

Kraken egzekwuje limity zapytań zarówno dla REST, jak i WebSocket API. Endpointy REST używają systemu opartego na liczniku, gdzie każde wywołanie zwiększa licznik, który zmniejsza się z czasem. Przekroczenie limitu skutkuje tymczasową blokadą. Używaj subskrypcji WebSocket dla danych w czasie rzeczywistym zamiast odpytywania endpointów REST.

Nazewnictwo par aktywów

Uwaga: Kraken używa różnych konwencji nazewnictwa dla REST i WebSocket API. Endpointy REST zazwyczaj używają nazw sklejonych, jak XBTUSD, podczas gdy kanały WebSocket używają formatu z ukośnikiem XBT/USD. Komponent obsługuje tę różnicę, ale miej to na uwadze podczas przetwarzania odpowiedzi. Użyj GetAssetPairs, aby odkryć dokładne nazwy wszystkich dostępnych par.