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.