Intégration de l'API de trading OKX WebSocket dans Delphi
Le composant TsgcWSAPI_OKX fournit un accès Delphi complet à l'exchange OKX via une interface WebSocket unifiée. Il prend en charge les flux de données de marché publics, les canaux privés du compte et les opérations de trading direct, y compris les ordres au marché et à cours limité, le tout via un seul composant. Ce guide détaille chaque méthode disponible, chaque propriété de configuration et inclut des exemples de code fonctionnels pour commencer à trader sur OKX depuis Delphi.
Table des matières
Canaux WebSocket publics
Les canaux publics diffusent les données de marché à tous les clients connectés sans nécessiter d'authentification. Ces canaux couvrent les instruments, les tickers, les carnets d'ordres, les trades, les chandeliers, les taux de financement et bien d'autres. Chaque méthode subscribe possède une méthode unsubscribe correspondante.
Canaux de données de marché
| Méthode |
Description |
SubscribeInstruments |
S'abonne aux mises à jour d'instruments (nouvelles cotations, retraits, changements de statut). |
SubscribeTicker |
S'abonne aux données ticker en temps réel pour un instrument spécifique. |
SubscribeOpenInterest |
S'abonne aux mises à jour de l'open interest pour les contrats futures et perpétuels. |
SubscribeCandlestick |
S'abonne aux données de chandeliers (kline) à l'intervalle spécifié. |
SubscribeTrades |
S'abonne aux données d'exécution de trades en temps réel pour un instrument spécifique. |
SubscribeOrderBook |
S'abonne aux mises à jour du carnet d'ordres avec une profondeur configurable. |
Canaux de prix et d'indices
| Méthode |
Description |
SubscribeEstimatedPrices |
S'abonne au prix estimé de livraison/exercice pour les options et les futures. |
SubscribeMarkPrice |
S'abonne aux mises à jour du mark price utilisé pour les calculs de marge et de PnL. |
SubscribeMarkPriceCandlestick |
S'abonne aux données de chandeliers basées sur le mark price. |
SubscribePriceLimit |
S'abonne aux mises à jour de la limite de prix (price band) d'un instrument. |
SubscribeIndexCandlestick |
S'abonne aux données de chandeliers basées sur l'index price. |
SubscribeIndexTicker |
S'abonne aux mises à jour de l'index ticker pour un indice donné. |
SubscribeFundingRate |
S'abonne aux mises à jour du funding rate pour les contrats perpétuels. |
Canaux Options et système
| Méthode |
Description |
SubscribeOptionSummary |
S'abonne au résumé des options (grecques, volatilité, open interest). |
SubscribeStatus |
S'abonne aux mises à jour du statut système (maintenance, perturbations). |
SubscribePublicStructureBlockTrades |
S'abonne aux données de block trades à structure publique. |
SubscribeBlockTickers |
S'abonne aux mises à jour du ticker des block trades. |
Note : chaque méthode Subscribe listée ci-dessus possède une contrepartie
UnSubscribe (par exemple
UnSubscribeTicker) pour arrêter de recevoir les mises à jour de ce canal.
Canaux WebSocket privés
Les canaux privés nécessitent une authentification et fournissent des mises à jour en temps réel sur l'état de ton compte, tes positions, tes ordres et ton activité de trading algorithmique. Définis OKX.IsPrivate := True et fournis des identifiants API valides avant de t'abonner à ces canaux.
Canaux de compte et de positions
| Méthode |
Description |
SubscribeAccount |
S'abonne aux mises à jour du solde et de l'équité du compte en temps réel. |
SubscribePositions |
S'abonne aux mises à jour des positions (ouverture, fermeture, changements de taille). |
SubscribeBalanceAndPosition |
S'abonne aux mises à jour combinées de solde et de positions dans un seul flux. |
SubscribePositionRisk |
S'abonne aux alertes de risque sur les positions (proximité de liquidation). |
SubscribeAccountGreeks |
S'abonne aux mises à jour des grecques au niveau du compte pour les positions d'options. |
Canaux d'ordres et algorithmiques
| Méthode |
Description |
SubscribeOrders |
S'abonne aux mises à jour de statut des ordres (placés, exécutés, annulés, partiellement exécutés). |
SubscribeOrdersAlgo |
S'abonne aux mises à jour des ordres algorithmiques (trigger, TP/SL, trailing stop). |
SubscribeAdvanceAlgo |
S'abonne aux mises à jour des ordres algorithmiques avancés (iceberg, TWAP). |
Canaux RFQ et block trades
| Méthode |
Description |
SubscribeRfqs |
S'abonne aux mises à jour des demandes de cotation (RFQ) pour le block trading. |
SubscribeQuotes |
S'abonne aux mises à jour des cotations en réponse aux RFQ. |
SubscribePrivateStructureBlockTrades |
S'abonne aux mises à jour des block trades à structure privée. |
Canaux de grid trading
| Méthode |
Description |
SubscribeSpotGridAlgoOrders |
S'abonne aux mises à jour des ordres algorithmiques de grid spot. |
SubscribeContactGridAlgoOrders |
S'abonne aux mises à jour des ordres algorithmiques de grid sur contrats. |
SubscribeGridPositions |
S'abonne aux mises à jour des positions de grid trading. |
SubscribeGridSubOrders |
S'abonne aux mises à jour des sous-ordres individuels dans une stratégie de grid. |
Opérations de trading WebSocket
OKX prend en charge le placement et la gestion d'ordres directement via la connexion WebSocket, ce qui offre une latence plus faible qu'avec les appels REST. Ces méthodes nécessitent une authentification.
| Méthode |
Description |
PlaceOrder |
Place un nouvel ordre avec un contrôle complet de tous les paramètres. |
PlaceMarketOrder |
Place un ordre au marché qui s'exécute immédiatement au meilleur prix disponible. |
PlaceLimitOrder |
Place un ordre à cours limité au prix spécifié, exécuté uniquement lorsque le marché atteint ce prix. |
CancelOrder |
Annule un ordre existant par son ID. |
AmendOrder |
Modifie un ordre existant (changement de prix ou de taille sans annuler et replacer). |
Note : le trading via WebSocket offre une latence nettement plus faible que le placement d'ordres via REST. OKX traite les ordres WebSocket avec une priorité plus élevée, ce qui en fait la méthode recommandée pour les stratégies sensibles à la latence.
Exemple de code
L'exemple suivant montre comment créer et configurer le composant TsgcWSAPI_OKX, s'authentifier auprès de l'API, s'abonner aux données ticker, surveiller les ordres et passer des ordres au marché et à cours limité directement via la connexion WebSocket.
var
oClient: TsgcWebSocketClient;
oOKX: TsgcWSAPI_OKX;
begin
// Créer le client WebSocket
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
// Configurer les identifiants API
oOKX.OKX.ApiKey := 'your_api_key';
oOKX.OKX.ApiSecret := 'your_api_secret';
oOKX.OKX.Passphrase := 'your_passphrase';
oOKX.OKX.IsPrivate := True;
// Se connecter à OKX
oClient.Active := True;
// S'abonner au ticker BTC-USDT
oOKX.SubscribeTicker('BTC-USDT');
// S'abonner aux mises à jour d'ordres pour le trading spot
oOKX.SubscribeOrders(okxitSpot);
// Placer un ordre d'achat au marché
oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
// Placer un ordre d'achat à cours limité
oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;
Gestion des événements WebSocket
Associe un gestionnaire d'événement pour traiter les messages WebSocket entrants. L'événement fournit le nom du canal et la charge JSON pour chaque mise à jour.
procedure TForm1.OnOKXEvent(Sender: TObject;
const aChannel, aData: string);
begin
// aChannel identifie l'abonnement (par exemple 'tickers', 'orders')
// aData contient la charge JSON
Memo1.Lines.Add(aChannel + ': ' + aData);
end;
Utiliser le mode démo
OKX fournit un environnement de trading démo pour les tests. Active-le en définissant OKX.IsDemo := True avant de te connecter. Le mode démo se connecte à un endpoint séparé avec des soldes simulés, ce qui te permet de tester ta logique de trading sans risquer de fonds réels.
// Activer le mode de trading démo
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;
Configuration et notes
Propriétés de configuration
Toute la configuration est accessible via la propriété OKX du composant.
| Propriété |
Type |
Description |
OKX.ApiKey |
String |
Ta clé API OKX. Génère-la depuis la page OKX API Management. |
OKX.ApiSecret |
String |
Ton secret API OKX. Garde cette valeur en sécurité et ne l'expose jamais dans du code côté client. |
OKX.Passphrase |
String |
La passphrase que tu as définie lors de la création de la clé API. Obligatoire pour toutes les requêtes authentifiées. |
OKX.IsDemo |
Boolean |
Lorsqu'elle vaut True, se connecte à l'environnement de trading démo OKX avec des fonds simulés. La valeur par défaut est False. |
OKX.IsPrivate |
Boolean |
Lorsqu'elle vaut True, active l'authentification sur la connexion WebSocket. Obligatoire pour les canaux privés et les opérations de trading. La valeur par défaut est False. |
Notes importantes
Sécurité : ne code jamais en dur ta clé API, ton secret ou ta passphrase dans le code de production. Utilise un fichier de configuration sécurisé ou une variable d'environnement pour stocker les identifiants.
- Définis
OKX.IsPrivate := True avant de te connecter si tu as besoin de canaux privés ou d'opérations de trading. Les canaux publics fonctionnent sans authentification.
- Utilise
OKX.IsDemo := True pour tester contre l'environnement démo OKX avant de passer en production. Le mode démo utilise des identifiants API séparés générés spécifiquement pour la plateforme démo.
- La méthode
SubscribeOrders accepte un paramètre de type d'instrument (par exemple okxitSpot, okxitFutures, okxitSwap, okxitOption) pour filtrer les mises à jour d'ordres par type de trading.
- Les méthodes de commodité
PlaceMarketOrder et PlaceLimitOrder acceptent un paramètre de sens de l'ordre (par exemple okxosBuy, okxosSell), un ID d'instrument, une taille et (pour les ordres limit) un prix.
- La méthode
AmendOrder te permet de modifier le prix ou la taille d'un ordre actif sans l'annuler ni le replacer, ce qui réduit la latence et évite de perdre ta position dans la file.
- OKX applique des limites de débit sur les messages WebSocket. Consulte la documentation officielle d'OKX pour les limites actuelles sur les abonnements et les requêtes de trading par seconde.
- Les abonnements WebSocket sont persistants pour la durée de vie de la connexion. Si la connexion tombe, tu devras te réabonner après la reconnexion.