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.