Kraken Spot- und Futures-API-Integration in Delphi
Kraken ist eine der ältesten und vertrauenswürdigsten Kryptobörsen und bietet sowohl Spot- als auch Futures-Märkte. Die Delphi-Komponenten TsgcWSAPI_Kraken und TsgcWSAPI_Kraken_Futures bieten vollständigen Zugriff auf die WebSocket- und REST-APIs von Kraken und ermöglichen Marktdaten-Streaming in Echtzeit, Kontoverwaltung, Orderplatzierung und Futures-Trading aus einer einzigen Codebase.
Inhaltsverzeichnis
Übersicht
Die Kraken-API ist in zwei eigenständige Plattformen aufgeteilt, jede mit eigener Komponente:
| Komponente |
Markt |
Beschreibung |
TsgcWSAPI_Kraken |
Spot |
Handele Kryptowährungen an der Kraken-Spot-Börse mit WebSocket- und REST-Unterstützung |
TsgcWSAPI_Kraken_Futures |
Futures |
Handele Perpetual- und Fixed-Maturity-Futures-Kontrakte mit Hebelpositionen |
Beide Komponenten bieten einen Dual-Channel-Ansatz: WebSocket-Verbindungen für Echtzeit-Datenstreaming mit niedriger Latenz und REST-Endpoints für Request-/Response-Operationen wie Saldenabfragen, Orderplatzierung und das Abrufen historischer Daten.
Konfiguration
Sowohl die Spot- als auch die Futures-Komponente benötigen API-Zugangsdaten für private (authentifizierte) Operationen. Öffentliche Endpoints wie Marktdaten erfordern keine Authentifizierung.
| Property |
Typ |
Beschreibung |
Kraken.ApiKey |
String |
Dein Kraken-API-Key, in den Kraken-Kontoeinstellungen erzeugt |
Kraken.ApiSecret |
String |
Dein Kraken-API-Secret zum Signieren privater Requests |
Hinweis: Erzeuge deine API-Keys unter
kraken.com > Security > API. Vergebe nur die Berechtigungen, die deine Anwendung braucht. Für Read-Only-Dashboards deaktiviere Trading- und Withdrawal-Rechte komplett.
Spot WebSocket-API
Die Spot WebSocket-API bietet Echtzeit-Streaming für Marktdaten und private Konto-Events. Die Methoden teilen sich in öffentliche Channels (ohne Authentifizierung) und private Channels (mit gültigem WebSocket-Token).
Öffentliche Channels
| Methode |
Beschreibung |
SubscribeTicker / UnSubscribeTicker |
Ticker-Informationen in Echtzeit inklusive bestem Bid/Ask, 24h-Volumen und Preisstatistiken |
SubscribeOHLC / UnSubscribeOHLC |
OHLC-(Candlestick-)Daten in Echtzeit mit konfigurierbaren Intervallen |
SubscribeTrade / UnSubscribeTrade |
Echtzeit-Trade-Ausführungsfeed mit jedem Trade an der Börse |
SubscribeBook / UnSubscribeBook |
Orderbuch-Snapshots und inkrementelle Updates bei konfigurierbarer Tiefe |
SubscribeSpread / UnSubscribeSpread |
Echtzeit-Updates zum besten Bid-/Ask-Spread |
SubscribeAll / UnSubscribeAll |
Abonniere oder kündige alle öffentlichen Channels für ein Paar auf einmal |
Private Channels
| Methode |
Beschreibung |
SubscribeOwnTrades / UnSubscribeOwnTrades |
Echtzeit-Feed deiner eigenen ausgeführten Trades |
SubscribeOpenOrders / UnSubscribeOpenOrders |
Echtzeit-Updates zu deinen offenen Orders (neu, geändert, storniert, gefüllt) |
AddOrder |
Platziere eine neue Order über WebSocket (niedrigere Latenz als REST) |
CancelOrder |
Storniere eine bestehende Order über WebSocket |
// Öffentliche Ticker-Daten für BTC/USD abonnieren
oKraken.SubscribeTicker('XBT/USD');
// Orderbuch mit 10-Level-Tiefe abonnieren
oKraken.SubscribeBook('XBT/USD');
// Echtzeit-Trades abonnieren
oKraken.SubscribeTrade('ETH/USD');
// Private Channels abonnieren (API-Key erforderlich)
oKraken.SubscribeOwnTrades;
oKraken.SubscribeOpenOrders;
Spot REST-API
Auf die Spot REST-API wird über die Property REST_API der Komponente TsgcWSAPI_Kraken zugegriffen. Sie bietet ein umfassendes Set an Endpoints für Marktdaten-Abfragen, Kontoverwaltung, Trading und Geld-Operationen.
Öffentliche REST-Methoden
| Methode |
Beschreibung |
GetServerTime |
Liefert die aktuelle Server-Zeit (nützlich zur Uhrensynchronisation) |
GetAssets |
Listet alle verfügbaren Assets und ihre Eigenschaften auf (Decimals, Display-Name) |
GetAssetPairs |
Listet alle handelbaren Asset-Paare mit Gebührenstruktur und Margin-Informationen |
GetTicker |
Liefert Ticker-Daten für ein oder mehrere Paare (Bid, Ask, Last, Volume, VWAP) |
GetOHLC |
Liefert OHLC-Candle-Daten für ein Paar und Intervall |
GetOrderBook |
Liefert das aktuelle Orderbuch für ein Paar bei angegebener Tiefe |
GetTrades |
Liefert aktuelle Trades für ein Paar |
GetSpread |
Liefert aktuelle Spread-Daten für ein Paar |
Private REST-Methoden - Konto und Trading
| Methode |
Beschreibung |
GetAccountBalance |
Liefert Salden aller Assets deines Kontos |
GetTradeBalance |
Liefert Trade-Balance-Infos (Equity, Margin, Free Margin, P&L) |
GetOpenOrders |
Liefert alle aktuell offenen Orders |
GetClosedOrders |
Liefert kürzlich geschlossene Orders |
QueryOrders |
Frage bestimmte Orders per Transaktions-ID ab |
GetTradesHistory |
Liefert deine Trade-Historie |
QueryTrades |
Frage bestimmte Trades per Trade-ID ab |
GetLedgers |
Liefert Ledger-Einträge (Einzahlungen, Auszahlungen, Trades, Gebühren) |
QueryLedgers |
Frage bestimmte Ledger-Einträge per ID ab |
GetTradeVolume |
Liefert dein 30-Tage-Handelsvolumen und Fee-Tier |
AddOrder |
Platziere eine neue Order per REST |
CancelOrder |
Storniere eine bestehende Order per REST |
GetWebSocketsToken |
Erzeugt einen Token für private WebSocket-Subscriptions |
Private REST-Methoden - Export und Reporting
| Methode |
Beschreibung |
AddExport |
Beantrage einen Datenexport (Trades oder Ledger-Einträge) |
ExportStatus |
Prüfe den Status eines anstehenden Export-Requests |
RetrieveExport |
Lade eine fertige Export-Datei herunter |
RemoveExport |
Lösche einen Export-Report |
Private REST-Methoden - Funding
| Methode |
Beschreibung |
GetDepositMethods |
Liefert verfügbare Einzahlungsmethoden für ein Asset |
GetDepositAddresses |
Liefert Einzahlungsadressen für ein Asset und eine Methode |
GetStatusOfRecentDeposits |
Liefert den Status aktueller Einzahlungs-Transaktionen |
GetWithdrawalInformation |
Liefert Auszahlungsdetails (Gebühr, Minimum, Limit) für ein Asset |
WithdrawFunds |
Initiiere eine Auszahlung an eine externe Adresse |
GetStatusOfRecentWithdraws |
Liefert den Status aktueller Auszahlungs-Transaktionen |
RequestWithdrawalCancelation |
Versuch, eine anstehende Auszahlung zu stornieren |
RequestWalletTransfer |
Übertrage Mittel zwischen Kraken-Wallets (z. B. Spot zu Futures) |
// Öffentliche REST: Ticker-Daten abrufen
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// Öffentliche REST: OHLC-Daten abrufen
ShowMessage(oKraken.REST_API.GetOHLC('XBTUSD'));
// Private REST: Kontosaldo abrufen
ShowMessage(oKraken.REST_API.GetAccountBalance);
// Private REST: Offene Orders abrufen
ShowMessage(oKraken.REST_API.GetOpenOrders);
Futures WebSocket-API
Die Komponente TsgcWSAPI_Kraken_Futures bietet Echtzeit-Streaming für Krakens Futures-Märkte, einschließlich Perpetual-Kontrakte und Fixed-Maturity-Futures.
Öffentliche Channels
| Methode |
Beschreibung |
SubscribeTicker / UnSubscribeTicker |
Futures-Ticker-Daten in Echtzeit inklusive Mark-Preis, Index-Preis und Funding Rate |
SubscribeTrade / UnSubscribeTrade |
Echtzeit-Trade-Ausführungsfeed für Futures-Märkte |
SubscribeBook / UnSubscribeBook |
Orderbuch-Snapshots und inkrementelle Updates für Futures-Kontrakte |
SubscribeHeartBeat / UnSubscribeHeartBeat |
Überwachung der Verbindungsstabilität über periodische Heartbeat-Nachrichten |
SubscribeTickerLite / UnSubscribeTickerLite |
Schlanker Ticker mit reduzierter Payload für High-Frequency-Monitoring |
Private Channels
| Methode |
Beschreibung |
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose |
Detaillierte Echtzeit-Updates offener Orders mit vollständigen Order-Informationen |
SubscribeOpenPositions / UnSubscribeOpenPositions |
Echtzeit-Updates zu offenen Futures-Positionen |
SubscribeAccountLog / UnSubscribeAccountLog |
Echtzeit-Konto-Aktivitätsprotokoll (Funding, Liquidationen usw.) |
SubscribeFills / UnSubscribeFills |
Echtzeit-Fill-Benachrichtigungen für deine Futures-Orders |
SubscribeOpenOrders / UnSubscribeOpenOrders |
Schlanke Status-Updates offener Orders |
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins |
Echtzeit-Saldo- und Margin-Updates für dein Futures-Konto |
SubscribeNotifications / UnSubscribeNotifications |
System-Benachrichtigungen und Alerts für dein Konto |
Futures REST-API
Auf die Futures REST-API wird über die Property REST_API von TsgcWSAPI_Kraken_Futures zugegriffen. Sie bietet Endpoints für Marktdaten, Order-Management, Kontoabfragen und Geldtransfers.
Öffentliche REST-Methoden
| Methode |
Beschreibung |
GetFeeSchedules |
Liefert die aktuelle Gebührenstruktur für Futures-Trading |
GetHistory |
Liefert historische Marktdaten für Futures-Kontrakte |
GetInstruments |
Listet alle verfügbaren Futures-Instrumente und ihre Kontraktspezifikationen |
GetTickers |
Liefert Ticker-Daten für alle Futures-Kontrakte |
Private REST-Methoden - Konto und Orders
| Methode |
Beschreibung |
GetAccounts |
Liefert Futures-Kontosalden und Margin-Informationen |
GetFills |
Liefert aktuelle Fill-Historie deiner Futures-Orders |
GetHistoricalExecutions |
Liefert historische Order-Ausführungen |
GetHistoricalOrders |
Liefert historische Order-Daten |
GetHistoricalTriggers |
Liefert historische Trigger-Events für bedingte Orders |
GetOpenPositions |
Liefert alle aktuell offenen Futures-Positionen |
GetNotifications |
Liefert Konto-Benachrichtigungen |
Private REST-Methoden - Order-Management
| Methode |
Beschreibung |
SendMarketOrder |
Platziere eine Market-Order zum aktuell besten Preis |
SendLimitOrder |
Platziere eine Limit-Order zu einem festgelegten Preis |
SendStopOrder |
Platziere eine Stop-Order, die bei einem festgelegten Preis ausgelöst wird |
SendTakeProfit |
Platziere eine Take-Profit-Order |
CancelAllOrders |
Storniere alle offenen Futures-Orders auf einmal |
CancelOrderByOrderId |
Storniere eine bestimmte Order über die Kraken-Order-ID |
CancelOrderByCliOrderId |
Storniere eine bestimmte Order über deine Client-Order-ID |
EditOrderByOrderId |
Ändere eine bestehende Order über die Kraken-Order-ID |
EditOrderByCliOrderId |
Ändere eine bestehende Order über deine Client-Order-ID |
Private REST-Methoden - Transfers und Reporting
| Methode |
Beschreibung |
Transfer |
Übertrage Mittel zwischen Futures-Sub-Konten |
WalletTransfer |
Übertrage zwischen Wallet-Typen |
SubAccountTransfer |
Übertrage zwischen Sub-Konten |
WithdrawalToSpotWallet |
Verschiebe Mittel vom Futures-Wallet zurück ins Spot-Wallet |
GetFeeScheduleVolumes |
Liefert dein Volumen für die Fee-Tier-Berechnung |
GetAccountLogCSV |
Lade das Konto-Aktivitätsprotokoll als CSV-Datei herunter |
Vollständiges Code-Beispiel
Das folgende Beispiel zeigt die Verbindung zur Kraken Spot-API, das Abrufen von Marktdaten per REST, die Abfrage deines Kontosaldos und das Abonnement eines Echtzeit-Ticker-Feeds per WebSocket.
var
oClient: TsgcWebSocketClient;
oKraken: TsgcWSAPI_Kraken;
begin
// WebSocket-Client erstellen und konfigurieren
oClient := TsgcWebSocketClient.Create(nil);
oKraken := TsgcWSAPI_Kraken.Create(nil);
oKraken.Client := oClient;
// API-Zugangsdaten für private Endpoints konfigurieren
oKraken.Kraken.ApiKey := 'dein_api_key';
oKraken.Kraken.ApiSecret := 'dein_api_secret';
// Mit Kraken verbinden
oClient.Active := True;
// REST: Ticker-Daten für BTC/USD abrufen
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// REST: Kontosaldo abrufen (API-Key erforderlich)
ShowMessage(oKraken.REST_API.GetAccountBalance);
// WebSocket: Echtzeit-Ticker abonnieren
oKraken.SubscribeTicker('XBT/USD');
end;
Futures-Beispiel
Das Einrichten der Futures-Komponente folgt demselben Muster, mit TsgcWSAPI_Kraken_Futures statt:
var
oClient: TsgcWebSocketClient;
oFutures: TsgcWSAPI_Kraken_Futures;
begin
oClient := TsgcWebSocketClient.Create(nil);
oFutures := TsgcWSAPI_Kraken_Futures.Create(nil);
oFutures.Client := oClient;
// API-Zugangsdaten konfigurieren
oFutures.Kraken.ApiKey := 'dein_futures_api_key';
oFutures.Kraken.ApiSecret := 'dein_futures_api_secret';
oClient.Active := True;
// REST: Alle verfügbaren Futures-Instrumente abrufen
ShowMessage(oFutures.REST_API.GetInstruments);
// REST: Kontoinformationen abrufen
ShowMessage(oFutures.REST_API.GetAccounts);
// WebSocket: Futures-Ticker abonnieren
oFutures.SubscribeTicker('PI_XBTUSD');
// WebSocket: Private Konto-Updates abonnieren
oFutures.SubscribeOpenPositions;
oFutures.SubscribeAccountBalanceAndMargins;
end;
Hinweise und Best Practices
Spot- vs. Futures-API-Keys
Kraken nutzt separate API-Keys für Spot- und Futures-Trading. Erzeuge in den Kraken-Einstellungen für jede Plattform eigene Keys. Verwende denselben Key nicht für beide Komponenten.
WebSocket-Token für private Channels
Private WebSocket-Subscriptions auf der Spot-Börse erfordern einen temporären Token über die REST-Methode GetWebSocketsToken. Die Komponente erledigt das automatisch, sobald API-Zugangsdaten konfiguriert sind — beachte aber, dass Tokens ablaufen und bei Bedarf erneuert werden.
Rate Limits
Kraken erzwingt Rate Limits sowohl auf REST- als auch WebSocket-APIs. REST-Endpoints nutzen ein Counter-basiertes System: Jeder Aufruf erhöht einen Counter, der über die Zeit abfällt. Überschreitungen führen zur temporären Sperre. Nutze für Echtzeitdaten WebSocket-Subscriptions statt REST-Polling.
Naming von Asset-Paaren
Hinweis: Kraken verwendet unterschiedliche Naming-Konventionen für REST- und WebSocket-APIs. REST-Endpoints nutzen typischerweise zusammengezogene Namen wie
XBTUSD, während WebSocket-Channels das Slash-getrennte Format
XBT/USD verwenden. Die Komponente bedient beide Varianten, aber beachte das beim Verarbeiten der Antworten. Nutze
GetAssetPairs, um die exakten Namen aller verfügbaren Paare zu ermitteln.