Update Kraken-API in sgcWebSockets

· Functies
Integratie van de Kraken Spot- en Futures-API in Delphi

Kraken is een van de oudste en meest vertrouwde cryptocurrency-beurzen en biedt zowel spot- als futures-markten. De Delphi-componenten TsgcWSAPI_Kraken en TsgcWSAPI_Kraken_Futures bieden volledige toegang tot de WebSocket- en REST-API's van Kraken; daarmee kun je vanuit één codebase realtime marktdata streamen, accounts beheren, orders plaatsen en futures verhandelen.

Inhoudsopgave

Overzicht

De API van Kraken is opgesplitst in twee aparte platforms, elk met een eigen component:

Component Markt Beschrijving
TsgcWSAPI_Kraken Spot Handel in cryptocurrencies op de Kraken-spot-beurs met WebSocket- en REST-ondersteuning
TsgcWSAPI_Kraken_Futures Futures Handel in perpetual- en fixed-maturity-futures-contracten met posities met hefboomwerking

Beide componenten bieden een aanpak met twee kanalen: WebSocket-verbindingen voor realtime data-streaming met lage latentie, en REST-endpoints voor request/response-bewerkingen zoals het opvragen van saldi, het plaatsen van orders en het ophalen van historische data.

Configuratie

Zowel de Spot- als de Futures-component vereisen API-credentials voor private (geauthenticeerde) bewerkingen. Publieke endpoints zoals marktdata vereisen geen authenticatie.

Property Type Beschrijving
Kraken.ApiKey String Je Kraken-API-sleutel, gegenereerd vanaf de Kraken-account-instellingenpagina
Kraken.ApiSecret String Je Kraken-API-secret, gebruikt voor het ondertekenen van private requests
Let op: Genereer je API-sleutels op kraken.com > Security > API. Ken alleen de permissies toe die je applicatie nodig heeft. Voor alleen-lezen-dashboards schakel je de permissies voor trading en opnames volledig uit.

Spot-WebSocket-API

De Spot-WebSocket-API biedt realtime streaming voor marktdata en private accountgebeurtenissen. Methoden zijn opgedeeld in publieke kanalen (geen authenticatie vereist) en private kanalen (vereisen een geldig WebSocket-token).

Publieke kanalen

Methode Beschrijving
SubscribeTicker / UnSubscribeTicker Realtime ticker-informatie inclusief beste bid/ask, 24-uursvolume en prijsstatistieken
SubscribeOHLC / UnSubscribeOHLC Realtime OHLC-data (candlestick) op configureerbare intervallen
SubscribeTrade / UnSubscribeTrade Realtime trade-uitvoeringsfeed met elke trade op de beurs
SubscribeBook / UnSubscribeBook Orderboek-snapshots en incrementele updates op configureerbare diepte
SubscribeSpread / UnSubscribeSpread Realtime updates van de beste bid/ask-spread
SubscribeAll / UnSubscribeAll Abonneer je of meld je in één keer af voor alle publieke kanalen voor een opgegeven paar

Private kanalen

Methode Beschrijving
SubscribeOwnTrades / UnSubscribeOwnTrades Realtime feed van je eigen uitgevoerde trades
SubscribeOpenOrders / UnSubscribeOpenOrders Realtime updates over je open orders (nieuw, gewijzigd, geannuleerd, gevuld)
AddOrder Plaats een nieuwe order via WebSocket (lagere latentie dan REST)
CancelOrder Annuleer een bestaande order via WebSocket
// Abonneren op publieke ticker-data voor BTC/USD
oKraken.SubscribeTicker('XBT/USD');
// Abonneren op het orderboek met 10 niveaus diepte
oKraken.SubscribeBook('XBT/USD');
// Abonneren op realtime trades
oKraken.SubscribeTrade('ETH/USD');
// Abonneren op private kanalen (vereist API-sleutel)
oKraken.SubscribeOwnTrades;
oKraken.SubscribeOpenOrders;

Spot-REST-API

De Spot-REST-API is toegankelijk via de REST_API-property van het TsgcWSAPI_Kraken-component. Deze biedt een uitgebreide set endpoints voor marktdata-queries, accountbeheer, trading en fondsbewerkingen.

Publieke REST-methoden

Methode Beschrijving
GetServerTime Geeft de huidige servertijd terug (handig voor kloksynchronisatie)
GetAssets Geeft alle beschikbare assets en hun eigenschappen terug (decimalen, weergavenaam)
GetAssetPairs Geeft alle verhandelbare asset-paren terug met fee-structuur en margin-informatie
GetTicker Geeft ticker-data terug voor één of meer paren (bid, ask, last, volume, VWAP)
GetOHLC Geeft OHLC-candle-data terug voor een opgegeven paar en interval
GetOrderBook Geeft het huidige orderboek terug voor een opgegeven paar op de opgegeven diepte
GetTrades Geeft de recente trades terug voor een opgegeven paar
GetSpread Geeft de recente spread-data terug voor een opgegeven paar

Private REST-methoden - account en trading

Methode Beschrijving
GetAccountBalance Geeft saldi terug voor alle assets in je account
GetTradeBalance Geeft trade-balansinformatie terug (equity, margin, vrije margin, P&L)
GetOpenOrders Geeft alle momenteel open orders terug
GetClosedOrders Geeft recent gesloten orders terug
QueryOrders Vraag specifieke orders op aan de hand van transactie-ID
GetTradesHistory Geeft je handelsgeschiedenis terug
QueryTrades Vraag specifieke trades op aan de hand van trade-ID
GetLedgers Geeft grootboekvermeldingen terug (deposits, opnames, trades, kosten)
QueryLedgers Vraag specifieke grootboekvermeldingen op aan de hand van ID
GetTradeVolume Geeft je 30-daagse handelsvolume en fee-niveau terug
AddOrder Plaats een nieuwe order via REST
CancelOrder Annuleer een bestaande order via REST
GetWebSocketsToken Genereert een token dat vereist is voor private WebSocket-subscriptions

Private REST-methoden - export en rapportage

Methode Beschrijving
AddExport Vraag een data-export aan (trades of grootboekvermeldingen)
ExportStatus Controleer de status van een lopend exportverzoek
RetrieveExport Download een voltooid exportbestand
RemoveExport Verwijder een exportrapport

Private REST-methoden - funding

Methode Beschrijving
GetDepositMethods Geeft de beschikbare depositmethodes terug voor een opgegeven asset
GetDepositAddresses Geeft de deposit-adressen terug voor een opgegeven asset en methode
GetStatusOfRecentDeposits Geeft de status terug van recente deposit-transacties
GetWithdrawalInformation Geeft opnamedetails terug (kosten, minimum, limiet) voor een opgegeven asset
WithdrawFunds Start een opname naar een extern adres
GetStatusOfRecentWithdraws Geeft de status terug van recente opname-transacties
RequestWithdrawalCancelation Probeer een lopende opname te annuleren
RequestWalletTransfer Verplaats fondsen tussen Kraken-wallets (bijvoorbeeld spot naar futures)
// Publieke REST: ticker-data ophalen
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// Publieke REST: OHLC-data ophalen
ShowMessage(oKraken.REST_API.GetOHLC('XBTUSD'));
// Private REST: accountsaldo ophalen
ShowMessage(oKraken.REST_API.GetAccountBalance);
// Private REST: open orders ophalen
ShowMessage(oKraken.REST_API.GetOpenOrders);

Futures-WebSocket-API

Het TsgcWSAPI_Kraken_Futures-component biedt realtime streaming voor de futures-markten van Kraken, inclusief perpetual-contracten en fixed-maturity-futures.

Publieke kanalen

Methode Beschrijving
SubscribeTicker / UnSubscribeTicker Realtime futures-ticker-data inclusief mark-price, indexprijs en funding rate
SubscribeTrade / UnSubscribeTrade Realtime trade-uitvoeringsfeed voor futures-markten
SubscribeBook / UnSubscribeBook Orderboek-snapshots en incrementele updates voor futures-contracten
SubscribeHeartBeat / UnSubscribeHeartBeat Bewaking van de verbindingstoestand via periodieke heartbeat-berichten
SubscribeTickerLite / UnSubscribeTickerLite Lichtgewicht ticker met kleinere payload voor hoogfrequente monitoring

Private kanalen

Methode Beschrijving
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose Gedetailleerde realtime updates over open orders met volledige orderinformatie
SubscribeOpenPositions / UnSubscribeOpenPositions Realtime updates over open futures-posities
SubscribeAccountLog / UnSubscribeAccountLog Realtime log van accountactiviteit (funding, liquidaties, enzovoort)
SubscribeFills / UnSubscribeFills Realtime fill-meldingen voor je futures-orders
SubscribeOpenOrders / UnSubscribeOpenOrders Lichtgewicht status-updates van open orders
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins Realtime saldo- en margin-updates voor je futures-account
SubscribeNotifications / UnSubscribeNotifications Systeemmeldingen en waarschuwingen voor je account

Futures-REST-API

De Futures-REST-API is toegankelijk via de REST_API-property van TsgcWSAPI_Kraken_Futures. Deze biedt endpoints voor marktdata, orderbeheer, accountqueries en fondstransfers.

Publieke REST-methoden

Methode Beschrijving
GetFeeSchedules Geeft het huidige fee-schema voor futures-trading terug
GetHistory Geeft historische marktdata terug voor futures-contracten
GetInstruments Geeft alle beschikbare futures-instrumenten en hun contractspecificaties terug
GetTickers Geeft ticker-data terug voor alle futures-contracten

Private REST-methoden - account en orders

Methode Beschrijving
GetAccounts Geeft futures-accountsaldi en margin-informatie terug
GetFills Geeft de recente fill-geschiedenis terug voor je futures-orders
GetHistoricalExecutions Geeft historische order-uitvoeringen terug
GetHistoricalOrders Geeft historische orderdata terug
GetHistoricalTriggers Geeft historische trigger-events terug voor conditionele orders
GetOpenPositions Geeft alle momenteel open futures-posities terug
GetNotifications Geeft accountmeldingen terug

Private REST-methoden - orderbeheer

Methode Beschrijving
SendMarketOrder Plaats een market-order tegen de huidige beste prijs
SendLimitOrder Plaats een limit-order tegen een opgegeven prijs
SendStopOrder Plaats een stop-order die geactiveerd wordt op een opgegeven prijs
SendTakeProfit Plaats een take-profit-order
CancelAllOrders Annuleer alle open futures-orders in één keer
CancelOrderByOrderId Annuleer een specifieke order op basis van het Kraken-order-ID
CancelOrderByCliOrderId Annuleer een specifieke order op basis van je client-order-ID
EditOrderByOrderId Wijzig een bestaande order op basis van het Kraken-order-ID
EditOrderByCliOrderId Wijzig een bestaande order op basis van je client-order-ID

Private REST-methoden - transfers en rapportage

Methode Beschrijving
Transfer Verplaats fondsen tussen futures-sub-accounts
WalletTransfer Verplaats tussen wallet-typen
SubAccountTransfer Verplaats tussen sub-accounts
WithdrawalToSpotWallet Verplaats fondsen vanuit de futures-wallet terug naar de spot-wallet
GetFeeScheduleVolumes Geeft je volume terug voor de fee-tier-berekening
GetAccountLogCSV Download het log met accountactiviteit als CSV-bestand

Compleet codevoorbeeld

Het volgende voorbeeld laat zien hoe je verbinding maakt met de Kraken-Spot-API, marktdata ophaalt via REST, je accountsaldo opvraagt en je abonneert op een realtime tickerfeed via WebSocket.

var
  oClient: TsgcWebSocketClient;
  oKraken: TsgcWSAPI_Kraken;
begin
  // WebSocket-client aanmaken en configureren
  oClient := TsgcWebSocketClient.Create(nil);
  oKraken := TsgcWSAPI_Kraken.Create(nil);
  oKraken.Client := oClient;
  // API-credentials configureren voor private endpoints
  oKraken.Kraken.ApiKey := 'your_api_key';
  oKraken.Kraken.ApiSecret := 'your_api_secret';
  // Verbinden met Kraken
  oClient.Active := True;
  // REST: ticker-data ophalen voor BTC/USD
  ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
  // REST: accountsaldo ophalen (vereist API-sleutel)
  ShowMessage(oKraken.REST_API.GetAccountBalance);
  // WebSocket: abonneren op realtime ticker
  oKraken.SubscribeTicker('XBT/USD');
end;

Futures-voorbeeld

Het opzetten van het Futures-component volgt hetzelfde patroon, maar dan met TsgcWSAPI_Kraken_Futures:

var
  oClient: TsgcWebSocketClient;
  oFutures: TsgcWSAPI_Kraken_Futures;
begin
  oClient := TsgcWebSocketClient.Create(nil);
  oFutures := TsgcWSAPI_Kraken_Futures.Create(nil);
  oFutures.Client := oClient;
  // API-credentials configureren
  oFutures.Kraken.ApiKey := 'your_futures_api_key';
  oFutures.Kraken.ApiSecret := 'your_futures_api_secret';
  oClient.Active := True;
  // REST: alle beschikbare futures-instrumenten ophalen
  ShowMessage(oFutures.REST_API.GetInstruments);
  // REST: accountinformatie ophalen
  ShowMessage(oFutures.REST_API.GetAccounts);
  // WebSocket: abonneren op futures-ticker
  oFutures.SubscribeTicker('PI_XBTUSD');
  // WebSocket: abonneren op private account-updates
  oFutures.SubscribeOpenPositions;
  oFutures.SubscribeAccountBalanceAndMargins;
end;

Opmerkingen en best practices

API-sleutels voor spot vs. futures

Kraken gebruikt aparte API-sleutels voor spot- en futures-trading. Genereer voor elk platform aparte sleutels via de Kraken-instellingenpagina. Hergebruik dezelfde sleutel niet voor beide componenten.

WebSocket-token voor private kanalen

Private WebSocket-subscriptions op de spot-beurs vereisen een tijdelijk token dat wordt verkregen via de GetWebSocketsToken-REST-methode. Het component handelt dit automatisch af wanneer API-credentials zijn geconfigureerd, maar houd er rekening mee dat tokens verlopen en zo nodig worden vernieuwd.

Rate limits

Kraken handhaaft rate-limits op zowel REST- als WebSocket-API's. REST-endpoints gebruiken een teller-gebaseerd systeem waarbij elke aanroep een teller verhoogt en die teller in de loop van de tijd afneemt. Bij overschrijding van de limiet word je tijdelijk geblokkeerd. Gebruik WebSocket-subscriptions voor realtime data in plaats van REST-endpoints te pollen.

Naamgeving van asset-paren

Let op: Kraken gebruikt verschillende naamgevingsconventies voor REST- en WebSocket-API's. REST-endpoints gebruiken doorgaans aaneengeschreven namen zoals XBTUSD, terwijl WebSocket-kanalen het formaat met schuine streep gebruiken, zoals XBT/USD. Het component handelt dit onderscheid af, maar houd het in gedachten bij het verwerken van responses. Gebruik GetAssetPairs om de exacte namen voor alle beschikbare paren te ontdekken.