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.