Mise à jour API CEX sgcWebSockets

· Fonctionnalités
Intégration de l'API WebSocket CEX.IO dans Delphi

CEX.IO est une plateforme crypto bien établie qui propose des données de marché en temps réel et des capacités de trading via son API WebSocket. Le composant TsgcWSAPI_Cex fournit une interface Delphi native pour se connecter à CEX.IO, permettant aux développeurs de s'abonner aux mises à jour de tickers en direct, gérer les carnets d'ordres, placer et annuler des ordres et gérer les positions de compte — le tout sur une connexion WebSocket persistante.

Table des matières

Aperçu

L'API WebSocket CEX.IO fournit deux catégories de fonctionnalités : les canaux publics qui streament les données de marché sans authentification et les méthodes privées qui requièrent une authentification par clé API pour le trading et la gestion de compte. Le composant TsgcWSAPI_Cex encapsule les deux catégories, te donnant un seul composant Delphi pour tout gérer, des flux de prix en direct à l'exécution d'ordres.

Premiers pas

Pour te connecter à CEX.IO, pose un TsgcWebSocketClient et un composant TsgcWSAPI_Cex sur ta fiche ou crée-les en code. Assigne le client au composant API, configure tes identifiants et active la connexion.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
Note : les méthodes publiques comme les abonnements ticker ne nécessitent pas d'identifiants API. Tu n'as besoin de définir ApiKey et ApiSecret que si tu prévois d'utiliser des méthodes privées (authentifiées) comme placer des ordres ou vérifier des soldes.

Méthodes WebSocket publiques

Les méthodes publiques te permettent de recevoir des données de marché en temps réel sans authentification. Elles sont idéales pour construire des tableaux de bord, des outils de charting ou des systèmes d'alerte de prix.

Méthode Description
SubscribeTickers S'abonner aux mises à jour ticker en temps réel pour une paire de devises (par ex. BTC/USD).
SubscribeChart S'abonner aux données de chart/chandelier pour une paire de trading donnée.
SubscribePair S'abonner aux mises à jour pour une paire de trading spécifique.
UnSubscribePair Se désabonner d'une paire de trading précédemment souscrite.
SubscribeOrderBook S'abonner aux snapshots du carnet d'ordres et aux mises à jour incrémentales pour une paire.
UnSubscribeOrderBook Se désabonner des mises à jour du carnet d'ordres.

S'abonner aux tickers

La méthode SubscribeTickers ouvre un flux en direct de données de prix pour une paire de devises. Le premier paramètre est la devise de base et le second est la devise de cotation.

// S'abonner aux mises à jour ticker BTC/USD
oCex.SubscribeTickers('BTC', 'USD');

Travailler avec le carnet d'ordres

Les abonnements au carnet d'ordres livrent à la fois le snapshot initial et les mises à jour incrémentales suivantes. Utilise SubscribeOrderBook pour commencer à recevoir des données et UnSubscribeOrderBook quand tu n'en as plus besoin.

// S'abonner au carnet d'ordres BTC/USD
oCex.SubscribeOrderBook('BTC', 'USD');
// Plus tard, se désabonner quand ce n'est plus nécessaire
oCex.UnSubscribeOrderBook('BTC', 'USD');

Méthodes WebSocket privées (authentifiées)

Les méthodes privées requièrent une authentification via ta clé API et ton secret CEX.IO. Le composant gère automatiquement le handshake d'authentification, mais tu dois appeler Authenticate avant d'invoquer toute méthode privée.

Méthode Description
Authenticate Authentifier la session WebSocket avec ta clé API et ton secret.
GetTicker Récupérer le ticker actuel pour une paire de devises spécifique.
GetBalance Récupérer le solde du compte pour toutes les devises.
Ping Envoyer un ping keepalive pour maintenir la connexion WebSocket.
GetOpenOrders Récupérer tous les ordres actuellement ouverts sur le compte.
PlaceOrder Placer un nouvel ordre d'achat ou de vente avec un montant et un prix spécifiés.
CancelReplaceOrder Annuler un ordre existant et le remplacer par un nouveau de manière atomique.
GetOrderRequest Récupérer les détails d'un ordre spécifique par son identifiant.
CancelOrderRequest Annuler un ordre spécifique par son identifiant.
GetArchivedOrders Récupérer les ordres historiques (terminés/annulés).
OpenPosition Ouvrir une nouvelle position de margin trading.
GetPosition Récupérer les détails d'une position ouverte spécifique.
GetOpenPositions Récupérer toutes les positions de marge actuellement ouvertes.
ClosePosition Fermer une position de margin trading existante.

Exemple de code

L'exemple suivant montre un workflow complet : se connecter à CEX.IO, s'abonner à un ticker, placer un ordre d'achat et récupérer le solde du compte.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// S'abonner au ticker
oCex.SubscribeTickers('BTC', 'USD');
// Placer un ordre
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Récupérer le solde
oCex.GetBalance;

Placer des ordres

La méthode PlaceOrder accepte la devise de base, la devise de cotation, le montant, le prix et le type d'ordre. Le paramètre de type d'ordre utilise les valeurs d'énumération ctBuy ou ctSell.

// Placer un ordre d'achat : 0,01 BTC à 30 000 $
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Placer un ordre de vente : 0,05 ETH à 2 000 $
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);

Gérer les positions

CEX.IO prend en charge le margin trading via les méthodes de gestion des positions. Tu peux ouvrir, interroger et fermer des positions directement via la connexion WebSocket.

// Récupérer toutes les positions ouvertes
oCex.GetOpenPositions;
// Fermer une position spécifique par ID
oCex.ClosePosition(positionId);

Événements et callbacks

Le composant TsgcWSAPI_Cex déclenche des événements quand des données sont reçues de l'exchange. Assigne des gestionnaires pour traiter les messages entrants comme les mises à jour de ticker, les confirmations d'ordres et les informations de solde.

Événement Déclenché quand
OnCexMessage Un message quelconque est reçu du serveur WebSocket CEX.IO.
OnCexConnect La connexion WebSocket vers CEX.IO est établie.
OnCexDisconnect La connexion WebSocket est fermée.
OnCexError Une réponse d'erreur est reçue de l'exchange.

Configuration et notes

Identifiants API

Obtiens ta clé API et ton secret depuis les paramètres du compte CEX.IO. Stocke les identifiants en sécurité et ne les hardcode jamais en code de production. Pense à les charger depuis un fichier de configuration chiffré ou des variables d'environnement.

Gestion de la connexion

La connexion WebSocket est gérée par le composant TsgcWebSocketClient. Définis Active := True pour te connecter et Active := False pour te déconnecter. Le composant prend en charge la reconnexion automatique si elle est configurée via les propriétés de reconnexion du client.

Flux d'authentification

L'authentification doit être complétée avant d'appeler toute méthode privée. Appelle Authenticate après l'établissement de la connexion, ou gère-la dans l'événement OnCexConnect. Le composant génère automatiquement la signature HMAC requise à partir de ta clé API et de ton secret.

Keepalive

Utilise la méthode Ping périodiquement pour maintenir la session authentifiée active. CEX.IO peut déconnecter les sessions inactives après une période de timeout.

Astuce : quand tu t'abonnes à plusieurs paires, chaque abonnement est indépendant. Tu peux t'abonner à BTC/USD, ETH/USD et d'autres paires simultanément sur la même connexion.