Kraken API Update sgcWebSockets

· Fonctionnalités
Intégration des API Spot et Futures de Kraken en Delphi

Kraken est l'une des plus anciennes et des plus fiables exchanges de cryptomonnaies, proposant à la fois des marchés spot et futures. Les composants TsgcWSAPI_Kraken et TsgcWSAPI_Kraken_Futures pour Delphi offrent un accès complet aux API WebSocket et REST de Kraken, permettant le streaming en temps réel de données de marché, la gestion de compte, le passage d'ordres et le trading futures depuis une seule base de code.

Table des matières

Aperçu

L'API de Kraken est divisée en deux plateformes distinctes, chacune avec son propre composant :

Composant Marché Description
TsgcWSAPI_Kraken Spot Trade des cryptomonnaies sur l'exchange spot de Kraken avec support WebSocket et REST
TsgcWSAPI_Kraken_Futures Futures Trade des contrats futures perpétuels et à échéance fixe avec positions à effet de levier

Les deux composants proposent une approche à double canal : connexions WebSocket pour le streaming de données en temps réel à faible latence, et endpoints REST pour les opérations requête/réponse telles que l'interrogation des soldes, le passage d'ordres et la récupération de données historiques.

Configuration

Les composants Spot et Futures nécessitent tous deux des identifiants API pour les opérations privées (authentifiées). Les endpoints publics comme les données de marché ne nécessitent pas d'authentification.

Propriété Type Description
Kraken.ApiKey String Ta clé API Kraken, générée depuis la page des paramètres de ton compte Kraken
Kraken.ApiSecret String Ton API secret Kraken, utilisé pour signer les requêtes privées
Remarque : Génère tes clés API sur kraken.com > Security > API. Attribue uniquement les permissions dont ton application a besoin. Pour des tableaux de bord en lecture seule, désactive entièrement les permissions de trading et de retrait.

API WebSocket Spot

L'API WebSocket Spot offre un streaming en temps réel pour les données de marché et les événements de compte privés. Les méthodes sont divisées en canaux publics (sans authentification) et canaux privés (qui nécessitent un jeton WebSocket valide).

Canaux publics

Méthode Description
SubscribeTicker / UnSubscribeTicker Informations ticker en temps réel incluant meilleur bid/ask, volume 24h et statistiques de prix
SubscribeOHLC / UnSubscribeOHLC Données OHLC (chandeliers) en temps réel avec intervalles configurables
SubscribeTrade / UnSubscribeTrade Flux d'exécution de trades en temps réel affichant chaque trade sur l'exchange
SubscribeBook / UnSubscribeBook Snapshots du carnet d'ordres et mises à jour incrémentielles à profondeur configurable
SubscribeSpread / UnSubscribeSpread Mises à jour en temps réel du spread meilleur bid/ask
SubscribeAll / UnSubscribeAll S'abonner ou se désabonner de tous les canaux publics d'une paire donnée en une fois

Canaux privés

Méthode Description
SubscribeOwnTrades / UnSubscribeOwnTrades Flux en temps réel de tes propres trades exécutés
SubscribeOpenOrders / UnSubscribeOpenOrders Mises à jour en temps réel de tes ordres ouverts (nouveaux, modifiés, annulés, exécutés)
AddOrder Place un nouvel ordre via WebSocket (latence plus faible que REST)
CancelOrder Annule un ordre existant via 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;

API REST Spot

L'API REST Spot est accessible via la propriété REST_API du composant TsgcWSAPI_Kraken. Elle fournit un ensemble complet d'endpoints pour les requêtes de données de marché, la gestion de compte, le trading et les opérations sur les fonds.

Méthodes REST publiques

Méthode Description
GetServerTime Renvoie l'heure actuelle du serveur (utile pour la synchronisation d'horloge)
GetAssets Liste tous les actifs disponibles et leurs propriétés (décimales, nom d'affichage)
GetAssetPairs Liste toutes les paires d'actifs négociables avec structure de frais et infos de marge
GetTicker Renvoie les données ticker pour une ou plusieurs paires (bid, ask, last, volume, VWAP)
GetOHLC Renvoie les données de chandeliers OHLC pour une paire et un intervalle donnés
GetOrderBook Renvoie le carnet d'ordres actuel pour une paire donnée à la profondeur spécifiée
GetTrades Renvoie les trades récents pour une paire donnée
GetSpread Renvoie les données de spread récentes pour une paire donnée

Méthodes REST privées - Compte et trading

Méthode Description
GetAccountBalance Renvoie les soldes de tous les actifs de ton compte
GetTradeBalance Renvoie les infos de solde de trading (equity, marge, marge libre, P&L)
GetOpenOrders Renvoie tous les ordres actuellement ouverts
GetClosedOrders Renvoie les ordres récemment fermés
QueryOrders Interroge des ordres spécifiques par ID de transaction
GetTradesHistory Renvoie ton historique de trades
QueryTrades Interroge des trades spécifiques par ID de trade
GetLedgers Renvoie les entrées du registre (dépôts, retraits, trades, frais)
QueryLedgers Interroge des entrées de registre spécifiques par ID
GetTradeVolume Renvoie ton volume de trading sur 30 jours et ton palier de frais
AddOrder Place un nouvel ordre via REST
CancelOrder Annule un ordre existant via REST
GetWebSocketsToken Génère un jeton requis pour les abonnements WebSocket privés

Méthodes REST privées - Export et reporting

Méthode Description
AddExport Demande un export de données (trades ou entrées de registre)
ExportStatus Vérifie le statut d'une demande d'export en attente
RetrieveExport Télécharge un fichier d'export terminé
RemoveExport Supprime un rapport d'export

Méthodes REST privées - Financement

Méthode Description
GetDepositMethods Renvoie les méthodes de dépôt disponibles pour un actif donné
GetDepositAddresses Renvoie les adresses de dépôt pour un actif et une méthode donnés
GetStatusOfRecentDeposits Renvoie le statut des transactions de dépôt récentes
GetWithdrawalInformation Renvoie les détails de retrait (frais, minimum, limite) pour un actif donné
WithdrawFunds Initie un retrait vers une adresse externe
GetStatusOfRecentWithdraws Renvoie le statut des transactions de retrait récentes
RequestWithdrawalCancelation Tente d'annuler un retrait en attente
RequestWalletTransfer Transfère des fonds entre wallets Kraken (par exemple, spot vers 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);

API WebSocket Futures

Le composant TsgcWSAPI_Kraken_Futures offre un streaming en temps réel pour les marchés futures de Kraken, incluant les contrats perpétuels et les futures à échéance fixe.

Canaux publics

Méthode Description
SubscribeTicker / UnSubscribeTicker Données ticker futures en temps réel incluant prix mark, prix d'index et taux de financement
SubscribeTrade / UnSubscribeTrade Flux d'exécution de trades en temps réel pour les marchés futures
SubscribeBook / UnSubscribeBook Snapshots du carnet d'ordres et mises à jour incrémentielles pour les contrats futures
SubscribeHeartBeat / UnSubscribeHeartBeat Surveillance de la santé de la connexion via des messages heartbeat périodiques
SubscribeTickerLite / UnSubscribeTickerLite Ticker léger avec payload réduit pour le monitoring haute fréquence

Canaux privés

Méthode Description
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose Mises à jour détaillées en temps réel des ordres ouverts avec informations complètes
SubscribeOpenPositions / UnSubscribeOpenPositions Mises à jour en temps réel sur les positions futures ouvertes
SubscribeAccountLog / UnSubscribeAccountLog Journal d'activité du compte en temps réel (financement, liquidations, etc.)
SubscribeFills / UnSubscribeFills Notifications de remplissage en temps réel pour tes ordres futures
SubscribeOpenOrders / UnSubscribeOpenOrders Mises à jour légères de statut des ordres ouverts
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins Mises à jour en temps réel du solde et de la marge pour ton compte futures
SubscribeNotifications / UnSubscribeNotifications Notifications système et alertes pour ton compte

API REST Futures

L'API REST Futures est accessible via la propriété REST_API de TsgcWSAPI_Kraken_Futures. Elle fournit des endpoints pour les données de marché, la gestion des ordres, les requêtes de compte et les transferts de fonds.

Méthodes REST publiques

Méthode Description
GetFeeSchedules Renvoie la grille de frais actuelle pour le trading futures
GetHistory Renvoie les données de marché historiques pour les contrats futures
GetInstruments Liste tous les instruments futures disponibles et leurs spécifications de contrat
GetTickers Renvoie les données ticker pour tous les contrats futures

Méthodes REST privées - Compte et ordres

Méthode Description
GetAccounts Renvoie les soldes de compte futures et les informations de marge
GetFills Renvoie l'historique récent des remplissages pour tes ordres futures
GetHistoricalExecutions Renvoie les exécutions d'ordres historiques
GetHistoricalOrders Renvoie les données d'ordres historiques
GetHistoricalTriggers Renvoie les événements de déclenchement historiques pour les ordres conditionnels
GetOpenPositions Renvoie toutes les positions futures actuellement ouvertes
GetNotifications Renvoie les notifications du compte

Méthodes REST privées - Gestion des ordres

Méthode Description
SendMarketOrder Place un ordre au marché au meilleur prix actuel
SendLimitOrder Place un ordre limite à un prix spécifié
SendStopOrder Place un ordre stop qui se déclenche à un prix spécifié
SendTakeProfit Place un ordre take-profit
CancelAllOrders Annule tous les ordres futures ouverts en une fois
CancelOrderByOrderId Annule un ordre spécifique en utilisant l'ID d'ordre de Kraken
CancelOrderByCliOrderId Annule un ordre spécifique en utilisant ton ID d'ordre client
EditOrderByOrderId Modifie un ordre existant en utilisant l'ID d'ordre de Kraken
EditOrderByCliOrderId Modifie un ordre existant en utilisant ton ID d'ordre client

Méthodes REST privées - Transferts et reporting

Méthode Description
Transfer Transfère des fonds entre sous-comptes futures
WalletTransfer Transfère entre types de wallet
SubAccountTransfer Transfère entre sous-comptes
WithdrawalToSpotWallet Déplace des fonds du wallet futures vers le wallet spot
GetFeeScheduleVolumes Renvoie ton volume pour le calcul du palier de frais
GetAccountLogCSV Télécharge le journal d'activité du compte au format CSV

Exemple de code complet

L'exemple suivant montre comment se connecter à l'API Kraken Spot, récupérer des données de marché via REST, interroger ton solde de compte et s'abonner à un flux ticker en temps réel via 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;

Exemple Futures

La configuration du composant Futures suit le même modèle, en utilisant TsgcWSAPI_Kraken_Futures à la place :

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;

Notes et bonnes pratiques

Clés API Spot vs. Futures

Kraken utilise des clés API distinctes pour le trading spot et futures. Génère des clés dédiées pour chaque plateforme depuis la page des paramètres Kraken. Ne réutilise pas la même clé entre les deux composants.

Jeton WebSocket pour les canaux privés

Les abonnements WebSocket privés sur l'exchange spot nécessitent un jeton temporaire obtenu via la méthode REST GetWebSocketsToken. Le composant gère cela automatiquement quand les identifiants API sont configurés, mais sois conscient que les jetons expirent et seront rafraîchis au besoin.

Limites de débit

Kraken impose des limites de débit sur les API REST et WebSocket. Les endpoints REST utilisent un système basé sur un compteur où chaque appel incrémente un compteur, et le compteur décroît avec le temps. Dépasser la limite entraîne un verrouillage temporaire. Utilise les abonnements WebSocket pour les données en temps réel au lieu de poller les endpoints REST.

Nommage des paires d'actifs

Remarque : Kraken utilise des conventions de nommage différentes pour les API REST et WebSocket. Les endpoints REST utilisent typiquement des noms concaténés comme XBTUSD, tandis que les canaux WebSocket utilisent le format avec barre oblique XBT/USD. Le composant gère cette distinction, mais garde-la à l'esprit quand tu traites les réponses. Utilise GetAssetPairs pour découvrir les noms exacts de toutes les paires disponibles.