API OKX

OKX

 

APIs prises en charge

 

Propriétés

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.

 

 

Connexion

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;

Canaux publics

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.

  • books : 400 niveaux de profondeur seront envoyés dans l'instantané complet initial. Les données incrémentielles seront envoyées toutes les 100 ms en cas de modification du carnet d'ordres.
  • books5 : 5 niveaux de profondeur seront envoyés à chaque fois. Les données seront envoyées toutes les 100 ms en cas de modification du carnet d'ordres.
  • bbo-tbt : 1 niveau de profondeur sera envoyé à chaque fois. Les données seront envoyées toutes les 10 ms en cas de modification du carnet d'ordres.
  • books-l2-tbt : 400 niveaux de profondeur seront envoyés dans l'instantané complet initial. Les données incrémentielles seront envoyées toutes les 10 ms en cas de modification du carnet d'ordres.
  • books50-l2-tbt : 50 niveaux de profondeur seront envoyés dans l'instantané complet initial. Les données incrémentielles seront envoyées toutes les 10 ms en cas de modification du carnet d'ordres. Si asks ou bids est un tableau vide, cela signifie qu'il y a des modifications à 400 de profondeur, et non à 50. Si vous maintenez les données du carnet d'ordres localement, veuillez ignorer les asks et bids vides.
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;

Canaux privés

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;

 

Trading

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 cross
Mode 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'ordre
market : ordre au marché
limit : ordre à cours limité
post_only : ordre Post-only
fok : ordre Fill-or-kill
ioc : ordre Immediate-or-cancel
optimal_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 cotation
Applicable 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);

Opérations de trading par lots

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.