Kraken-API-Update sgcWebSockets

· Funktionen
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.