Les canaux WebSocket sont divisés en deux catégories : canaux publics et canaux privés.
Vous pouvez configurer les propriétés suivantes dans la propriété OKX.
Lorsque le client se connecte avec succès aux serveurs OKX, l'événement OnOKXConnect est déclenché. S'il y a une erreur lors de la tentative de connexion, l'événement OnOKXError sera déclenché avec les détails de l'erreur.
Après le déclenchement de l'événement OnOKXConnect, vous pouvez commencer à envoyer et à recevoir des messages depuis les serveurs OKX.
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
DoLog('#OKX Connected');
end;
procedure OnOKXError(Sender: TObject; aCode, aMessage, aRawMessage: string);
begin
DoLog('#error: ' + aMessage);
end;
Le flux WebSocket fournit des mises à jour de données de marché en temps réel pour les ordres et les trades. Le flux WebSocket propose des canaux publics tels que ticker, trades…
Vous pouvez vous abonner aux canaux publics suivants :
| Méthode | Description |
| SubscribeInstruments | La liste complète des instruments sera envoyée pour la première fois après l'abonnement. Par la suite, les instruments seront envoyés s'il y a un changement dans l'état de l'instrument (comme la livraison de FUTURES, l'exercice d'OPTION, le référencement de nouveaux contrats / paires de trading, la suspension des échanges, etc.). |
| SubscribeTicker | Récupérer le dernier prix négocié, le prix d'achat, le prix de vente et le volume de trading sur 24 heures des instruments. Les données sont envoyées toutes les 100 ms. |
| SubscribeOpenInterest | Récupérer l'intérêt ouvert. Les données seront envoyées toutes les 3 secondes. |
| SubscribeCandlestick | Récupère les données de chandeliers d'un instrument. La fréquence de push est l'intervalle le plus rapide : les données sont poussées toutes les 500 ms. |
| SubscribeTrades | Récupère les données des transactions récentes. Les données sont transmises à chaque transaction. |
| SubscribeEstimatedPrices |
Récupère le prix de livraison/exercice estimé des contrats FUTURES et des OPTION. Seul le prix de livraison/exercice estimé sera poussé une heure avant la livraison/exercice, et sera poussé en cas de changement de prix. |
| SubscribeMarkPrice | Récupère le prix de marque. Les données sont transmises toutes les 200 ms lorsque le prix de marque change, et toutes les 10 secondes lorsque le prix de marque ne change pas. |
| SubscribeMarkPriceCandlestick | Récupérer les données de bougies du prix mark. Les données seront transmises toutes les 500 ms. |
| SubscribePriceLimit | Récupère le prix d'achat maximum et le prix de vente minimum de l'instrument. Les données sont envoyées toutes les 5 secondes en cas de modification des limites ; aucune donnée n'est envoyée en l'absence de modification. |
| SubscribeOrderBook |
Récupérer les données du carnet d'ordres. Utilisez books pour 400 niveaux de profondeur, book5 pour 5 niveaux de profondeur, bbo-tbt tick par tick sur 1 niveau de profondeur, books50-l2-tbt tick par tick sur 50 niveaux de profondeur, et books-l2-tbt pour tick par tick sur 400 niveaux de profondeur.
|
| SubscribeOptionSummary | Récupère des informations de tarification détaillées sur tous les contrats OPTION. Les données seront envoyées en une seule fois. |
| SubscribeFundingRate | Récupérer le taux de financement. Les données seront poussées toutes les 30 à 90 secondes. |
| SubscribeIndexCandlestick | Récupérer les données des chandeliers de l'index. Les données seront envoyées toutes les 500 ms. |
| SubscribeIndexTicker | Récupérer les données des tickers d'index |
| SubscribeStatus | Obtenir le statut de la maintenance du système et envoyer une notification lorsque le statut de la maintenance du système change. Premier abonnement : « Envoyer les dernières données modifiées » ; chaque fois qu'il y a un changement d'état, envoyer le contenu modifié. |
| SubscribePublicStructureBlockTrades | Les données seront transmises chaque fois qu'il y a un block trade. |
| SubscribeBlockTickers | Récupère le dernier volume de trading par blocs au cours des 24 dernières heures. Les données sont transmises lorsqu'elles sont déclenchées par un événement d'exécution de transaction. En outre, elles sont également transmises toutes les 5 minutes selon la granularité de l'abonnement. |
| SubscribeAllTrades | Récupérer toutes les données de transactions. Les données seront envoyées à chaque transaction. |
| SubscribeLiquidationOrders | Récupérer les ordres de liquidation. Les données seront transmises lorsqu'il y a un ordre de liquidation. |
| SubscribeADLWarning | Récupérer les données d'avertissement ADL. Les données seront transmises lorsque le risque de délestage automatique augmente. |
| SubscribeEconomicCalendar | Récupérer les événements du calendrier économique. Les données seront envoyées lors des mises à jour des événements économiques. |
| SubscribePublicBlockTrades | Récupérer les transactions groupées publiques. Les données seront envoyées dès qu'une transaction groupée se produit. |
| SubscribeOptionTrades | Récupérer les données de transactions d'options. Les données seront envoyées chaque fois qu'il y a une transaction d'option. |
| SubscribeCallAuctionDetails | Récupérer les détails de la séance d'enchères. Les données seront poussées lorsqu'il y a des mises à jour des informations de séance d'enchères. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeInstruments(okxitFutures);
end;
Y compris le canal de compte, le canal d'ordres et le canal de positions, etc. -- nécessitent une connexion.
Vous pouvez vous abonner aux canaux privés suivants :
| Méthode | Description |
| SubscribeAccount | Récupérer les informations du compte. Les données seront poussées lorsque déclenchées par des événements tels que passer un ordre, annuler un ordre, exécution de transaction, etc. Elles seront également poussées à intervalle régulier selon la granularité de l'abonnement. |
| SubscribePositions | Récupère les informations de position. Un instantané initial sera transmis selon la granularité de l'abonnement. Les données seront transmises lorsque déclenchées par des événements tels que le passage/l'annulation d'un ordre, et seront également transmises à intervalles réguliers selon la granularité de l'abonnement. |
| SubscribeBalanceAndPosition | Récupère les informations de solde et de position du compte. Les données sont transmises lorsque déclenchées par des événements tels qu'un ordre exécuté, un transfert de fonds. |
| SubscribeOrders | Récupérer les informations sur les ordres. Les données ne seront pas transmises lors du premier abonnement. Elles ne seront transmises que lorsqu'elles seront déclenchées par des événements tels que le passage/l'annulation d'un ordre. |
| SubscribeOrdersAlgo | Récupérer les ordres algo (inclut les ordres de déclenchement, les ordres OCO, les ordres conditionnels). Les données ne seront pas envoyées lors du premier abonnement. Les données seront uniquement envoyées lors de déclenchements par des événements tels que le placement/annulation d'ordre. |
| SubscribeAdvanceAlgo |
Récupérer les ordres algo avancés (y compris les ordres Iceberg, TWAP, Trailing). Les données seront poussées lors du premier abonnement. Les données seront poussées lors d'événements tels que le passage ou l'annulation d'un ordre. |
| SubscribePositionRisk | Ce canal push est uniquement utilisé comme avertissement de risque et n'est pas recommandé comme outil de jugement de risque pour le trading stratégique. Dans le cas où le marché ne bouge pas violemment, il est possible que la position ait été liquidée en même temps que ce message est envoyé. |
| SubscribeAccountGreeks | Récupérer les informations grecques du compte. Les données seront transmises lors d'événements tels que l'augmentation/la réduction des positions ou le solde de trésorerie du compte, et seront également transmises à intervalles réguliers selon la granularité de l'abonnement. |
| SubscribeRfqs | Récupérer les Rfqs. |
| SubscribeQuotes |
Récupérer les devis. |
| SubscribePrivateStructureBlockTrades | Récupérer les transactions bloc de structure. |
| SubscribeSpotGridAlgoOrders | Récupérer les ordres algorithmiques de la grille spot. Les données sont envoyées lors de la première souscription. Les données sont envoyées lorsque déclenchées par des événements tels que le placement ou l'annulation d'un ordre. |
| SubscribeContactGridAlgoOrders | Récupérer les ordres algo de grille de contrat. Les données seront envoyées lors du premier abonnement. Les données seront envoyées lors de déclenchements par des événements tels que le placement/annulation d'ordre. |
| SubscribeGridPositions | Récupérer les positions de grille. Les données seront envoyées lors du premier abonnement. Les données seront envoyées lors de déclenchements par des événements tels que le placement/annulation d'ordre. |
| SubscribeGridSubOrders | Récupérer les sous-ordres de grille. Les données seront envoyées lors du premier abonnement. Les données seront envoyées lors de déclenchements par des événements tels que le placement d'ordre. |
| SubscribeFills | Récupérer les données des ordres exécutés. Les données seront transmises lorsqu'un ordre est exécuté. |
| SubscribeDepositInfo | Récupérer les informations de dépôt. Les données seront poussées lorsqu'il y a une mise à jour du statut de dépôt. |
| SubscribeWithdrawalInfo | Récupère les informations de retrait. Les données sont envoyées lors d'une mise à jour du statut de retrait. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeOrders(okxitFutures, 'BTC-USD', 'BTC-USD-200329');
end;
Le WebSocket Trade nécessite une authentification.
Vous ne pouvez passer une commande que si vous disposez de fonds suffisants. Vous trouverez ci-dessous un tableau avec les paramètres de la demande :
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| id | String | Oui | Identifiant unique du message Fourni par le client. Il sera retourné dans le message de réponse pour identifier la requête correspondante. Une combinaison de caractères alphanumériques sensibles à la casse, uniquement des chiffres ou uniquement des lettres, jusqu'à 32 caractères. |
| > instId | String | Oui | Identifiant d'instrument, par ex. BTC-USD-190927-5000-C
|
| > tdMode | String | Oui | Mode de trading Mode marge isolated crossMode sans marge cash |
| > ccy | String | Non | Devise de marge Applicable uniquement aux ordres cross MARGIN en Single-currency margin.
|
| > clOrdId | String | Non | Identifiant d'ordre fourni par le client Une combinaison de caractères alphanumériques sensibles à la casse, tous numériques ou tout en lettres, jusqu'à 32 caractères. |
| > balise | String | Non | Tag de commande Une combinaison de caractères alphanumériques sensibles à la casse, tous des chiffres, ou toutes des lettres jusqu'à 16 caractères. |
| > side | String | Oui | Côté de l'ordre, buy sell |
| > posSide | String | Optionnel | Côté de la position La valeur par défaut est net en mode net Elle est obligatoire en mode long/short et ne peut être que long ou short.Applicable uniquement à FUTURES/SWAP.
|
| > ordType | String | Oui | Type d'ordremarket : ordre au marchélimit : ordre à cours limitépost_only : ordre Post-onlyfok : ordre Fill-or-killioc : ordre Immediate-or-canceloptimal_limit_ioc : Ordre au marché avec option immediate-or-cancel
|
| > sz | String | Oui | Quantité à acheter ou à vendre. |
| > px | String | Optionnel | Prix Applicable uniquement aux ordres limit,post_only,fok,ioc . |
| > reduceOnly | Boolean | Non | Indique si la réduction de position uniquement ou non, true false, la valeur par défaut est false.Applicable uniquement aux ordres MARGIN et aux ordres FUTURES/SWAP en mode net Applicable uniquement à la Single-currency margin et à la Multi-currency margin |
| > tgtCcy | String | Non | Type de quantitébase_ccy : devise de base ,quote_ccy : devise de cotationApplicable uniquement à SPOT négocié avec un ordre au marchéLa valeur par défaut est quote_ccy pour l'achat, base_ccy pour la vente
|
| > banAmend | Boolean | Non | Indique s'il faut interdire la modification d'un ordre spot ou non, true ou false, la valeur par défaut est false. Le placement d'ordres échouera si le solde est insuffisant lorsque banAmend est true. S'applique uniquement aux ordres SPOT au marché |
Exemple de passation d'ordre
Vous ne pouvez passer un ordre que si vous disposez de fonds suffisants.
// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);
Exemple d'annulation d'ordre
Annuler un ordre incomplet
TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');
Amender l'ordre
Modifier un ordre incomplet.
TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);
L'API Trade WebSocket prend également en charge les opérations par lot pour passer, annuler et modifier plusieurs ordres à la fois. Ces opérations nécessitent une Authentication.
| Méthode | Description |
| BatchPlaceOrders | Passer plusieurs ordres en une seule requête. Un maximum de 20 ordres peut être passé à la fois. |
| BatchCancelOrders | Annuler plusieurs ordres en une seule requête. Un maximum de 20 ordres peuvent être annulés à la fois. |
| BatchAmendOrders | Modifier plusieurs ordres incomplets en une seule requête. Maximum 20 ordres peuvent être modifiés à la fois. |
| MassCancelOrders | Annuler en masse tous les ordres en attente pour un type d'instrument spécifique. |