Mise à jour API Bybit sgcWebSockets

· Fonctionnalités
Intégration des APIs WebSocket et REST Bybit V5 dans Delphi

Bybit est une plateforme majeure de dérivés crypto et spot, qui propose des contrats perpétuels, des futures, du trading spot et des options. Le composant TsgcWSAPI_Bybit fournit une intégration Delphi complète avec l'API unifiée Bybit V5 — combinant à la fois les abonnements WebSocket pour les données de marché en temps réel et les événements privés, et une interface REST complète pour le trading, la gestion des positions et les requêtes de compte. Cet article couvre chaque méthode disponible et te montre comment te connecter, t'abonner et trader.

Table des matières

Aperçu de l'architecture

L'API Bybit V5 est une interface unifiée qui consolide spot, linear perpetual, inverse perpetual, inverse futures et options dans un seul ensemble d'endpoints. Le composant TsgcWSAPI_Bybit prend en charge les deux canaux :

Tu sélectionnes la catégorie de produit via la propriété BybitClient, qui détermine l'endpoint WebSocket : bybSpot, bybLinear, bybInverse ou bybPerpetual.

API WebSocket — canaux publics

Les canaux publics fournissent des données de marché en temps réel sans authentification. Chaque méthode d'abonnement a une méthode de désabonnement correspondante.

S'abonner Se désabonner Description
SubscribeOrderBook UnSubscribeOrderBook Snapshots de profondeur du carnet d'ordres en temps réel et mises à jour incrémentales.
SubscribeTrade UnSubscribeTrade Exécutions de trades en direct au fur et à mesure qu'elles se produisent sur l'exchange.
SubscribeTicker UnSubscribeTicker Statistiques ticker sur fenêtre glissante de 24 heures (prix, volume, variation).
SubscribeKLine UnSubscribeKLine Mises à jour de chandeliers/klines en temps réel pour un intervalle spécifié.
SubscribeLiquidation UnSubscribeLiquidation Événements de liquidation à travers l'exchange.
SubscribeLT_KLine UnSubscribeLT_KLine Mises à jour kline/chandeliers de leveraged tokens.
SubscribeLT_Ticker UnSubscribeLT_Ticker Données ticker de leveraged tokens.
SubscribeLT_Nav UnSubscribeLT_Nav Mises à jour de la valeur nette des leveraged tokens.

API WebSocket — canaux privés

Les canaux privés requièrent une authentification via clé API et secret. Ils livrent des mises à jour en temps réel sur l'activité de ton compte.

Subscribe Unsubscribe Description
SubscribePosition UnSubscribePosition Mises à jour de position en temps réel (taille, prix d'entrée, PnL, leverage).
SubscribeExecution UnSubscribeExecution Confirmations d'exécution de trade au fur et à mesure que tes ordres sont fillés.
SubscribeOrder UnSubscribeOrder Changements de statut d'ordre (new, partially filled, filled, cancelled).
SubscribeWallet UnSubscribeWallet Changements de solde de wallet pour tous les coins.
SubscribeGreek UnSubscribeGreek Mises à jour des Greeks d'options (delta, gamma, theta, vega).
SubscribeDcp UnSubscribeDcp Événements de protection contre la déconnexion pour surveiller la santé de la connexion.

API REST — données de marché

Les endpoints de données de marché sont publics et ne requièrent pas d'authentification. Accède-les via oBybit.REST_API.

Méthode Description
GetServerTime Retourne le timestamp du serveur Bybit.
GetKLine Retourne les données historiques kline/chandeliers pour un symbole et un intervalle.
GetMarkPriceKLine Retourne les données kline du mark price (utilisées pour les calculs de PnL et de liquidation).
GetIndexPriceKLine Retourne les données kline de l'index price.
GetPremiumIndexPriceKLine Retourne les données kline du premium index price pour les contrats perpétuels.
GetInstrumentsInfo Retourne les spécifications de l'instrument (tick size, lot size, limites de leverage, etc.).
GetOrderBook Retourne le snapshot actuel du carnet d'ordres à une profondeur donnée.
GetTickers Retourne les dernières informations ticker pour un ou tous les symboles.
GetFundingRateHistory Retourne les enregistrements historiques de funding rate pour les contrats perpétuels.
GetPublicRecentTradingHistory Retourne les trades publics les plus récents pour un symbole.
GetOpenInterest Retourne les données d'open interest pour les contrats dérivés.
GetHistoricalVolatility Retourne la volatilité historique pour les options.
GetInsurance Retourne l'historique du solde du fonds d'assurance.
GetRiskLimit Retourne les paliers de risk limit pour un symbole donné.
GetDeliveryPrice Retourne le prix de livraison pour les futures et options expirés.
GetLongShortRatio Retourne le ratio long/short pour un symbole et une période donnés.

API REST — trading

Les endpoints de trading requièrent une authentification par clé API avec les permissions appropriées. Ces méthodes te permettent de placer, modifier et annuler des ordres.

Method Description
PlaceOrder Place un nouvel ordre avec un contrôle complet des paramètres (type, side, prix, quantité, time-in-force, etc.).
PlaceMarketOrder Méthode de commodité qui place un ordre market (s'exécute immédiatement au meilleur prix disponible).
PlaceLimitOrder Méthode de commodité qui place un ordre limit à un prix spécifié.
AmendOrder Modifie un ordre ouvert existant (prix, quantité ou d'autres paramètres).
CancelOrder Annule un ordre ouvert spécifique par ID d'ordre.
GetOpenOrders Retourne tous les ordres actuellement ouverts (non fillés).
CancelAllOrders Annule tous les ordres ouverts, optionnellement filtrés par symbole ou catégorie.
GetOrderHistory Retourne les ordres historiques (filled, cancelled, rejected) sur une plage de temps.

API REST — gestion des positions

Position endpoints allow you to query and configure your derivative positions, including leverage, margin mode, risk limits, and stop-loss/take-profit settings.

Method Description
GetPositionInfo Retourne les détails de la position actuelle (taille, prix d'entrée, PnL latent, marge).
SetLeverage Définit le leverage pour un symbole donné.
SwitchCrossIsolatedMargin Bascule entre mode cross margin et isolated margin.
SetTPSLMode Configures take-profit/stop-loss mode (full position or partial).
SwitchPositionMode Bascule entre mode one-way et mode hedge.
SetRiskLimit Définit le palier de risk limit pour un symbole, ce qui affecte le leverage maximum.
SetTradingStop Définit un trailing stop, take-profit ou stop-loss sur une position existante.
SetAutoAddMargin Enables or disables auto-add margin for isolated margin positions.
AddOrReduceMargin Ajoute ou supprime manuellement de la marge sur une position en isolated margin.
GetExecution Retourne les enregistrements d'exécution/fill de tes trades.
GetClosedPNL Retourne les enregistrements de profit and loss clôturés.
ConfirmNewRiskLimit Confirme un changement de risk limit quand de la marge supplémentaire est requise.

API REST — compte

Account endpoints provide wallet balances, account configuration, and transaction logs.

Method Description
GetWalletBalance Retourne les soldes de wallet pour tous les coins ou pour un type de compte spécifique.
GetAccountInfo Retourne les informations du compte unified (mode de marge, statut du compte, etc.).
GetTransactionLog Retourne l'historique des transactions (dépôts, retraits, trades, frais de funding, etc.).

Premiers pas — exemple de code

L'exemple suivant montre une configuration complète : connexion à l'endpoint Bybit linear perpetual, interrogation des données ticker via REST, placement d'un ordre limit, vérification du solde du wallet et abonnement aux mises à jour de trades en temps réel via WebSocket.

var
  oClient: TsgcWebSocketClient;
  oBybit: TsgcWSAPI_Bybit;
begin
  // Créer le client WebSocket
  oClient := TsgcWebSocketClient.Create(nil);
  // Créer le composant API Bybit
  oBybit := TsgcWSAPI_Bybit.Create(nil);
  oBybit.Client := oClient;
  // Configure API credentials
  oBybit.Bybit.ApiKey := 'your_api_key';
  oBybit.Bybit.ApiSecret := 'your_api_secret';
  // Sélectionner la catégorie de produit
  oBybit.BybitClient := bybLinear;
  // Se connecter au WebSocket
  oClient.Active := True;
  // REST: Get ticker information for BTCUSDT
  ShowMessage(oBybit.REST_API.GetTickers('BTCUSDT'));
  // REST: Place a limit buy order
  ShowMessage(oBybit.REST_API.PlaceLimitOrder(bbsBuy, 'BTCUSDT', 0.001, 30000));
  // REST: Get wallet balance
  ShowMessage(oBybit.REST_API.GetWalletBalance);
  // WebSocket: Subscribe to real-time trades for BTCUSDT
  oBybit.SubscribeTrade('BTCUSDT');
end;

REST vs. WebSocket

Utilise l'API REST pour les opérations à la demande comme placer des ordres, interroger des soldes et récupérer des données historiques. Utilise les abonnements WebSocket pour des flux de données continus à faible latence. Les deux peuvent être utilisés simultanément — les appels REST sont indépendants de l'état de la connexion WebSocket.

Référence de configuration

Property Type Description
Bybit.ApiKey String Your Bybit API key for authenticated requests.
Bybit.ApiSecret String Your Bybit API secret for request signing.
Bybit.TestNet Boolean Définis sur True pour te connecter à l'environnement testnet Bybit ; False pour mainnet.
Bybit.SignatureExpires Integer Temps d'expiration en secondes pour la signature HMAC (la valeur par défaut est généralement suffisante).
BybitClient Enum Product category: bybSpot, bybLinear, bybInverse, or bybPerpetual.

Astuces et notes

Testnet First

Commence toujours le développement avec Bybit.TestNet := True. Le testnet Bybit fournit un environnement de simulation complet avec des fonds de test. Tu peux créer une clé API testnet séparée sur testnet.bybit.com.

Unified V5 API

L'API V5 unifie tous les types de produits sous un seul ensemble d'endpoints. La propriété BybitClient détermine à quel flux WebSocket tu te connectes, tandis que l'API REST route automatiquement vers la bonne catégorie selon tes requêtes.

Méthodes de commodité pour les ordres

Alors que PlaceOrder te donne un contrôle complet sur chaque paramètre, les méthodes de commodité PlaceMarketOrder et PlaceLimitOrder couvrent les scénarios les plus courants avec moins de paramètres. Utilise la méthode complète quand tu as besoin d'options avancées comme reduce-only, time-in-force ou des déclencheurs conditionnels.

Rate limits

Bybit impose des rate limits à la fois sur les endpoints REST et WebSocket. Les limites REST sont typiquement par endpoint (par ex. 10 requêtes par seconde pour le placement d'ordres). Les abonnements WebSocket ont une limite sur le nombre de topics simultanés. Surveille les en-têtes de réponse et les codes d'erreur pour rester dans les limites.

Note : les connexions WebSocket Bybit envoient des trames ping périodiques. Le composant TsgcWSAPI_Bybit les gère automatiquement, gardant ta connexion active sans code supplémentaire.