XTB API Update sgcWebSockets

· Fonctionnalités
Intégration de l'API de trading XTB xStation5 dans Delphi

XTB est l'une des principales plateformes de trading en ligne en Europe, offrant l'accès au forex, aux indices, aux matières premières, aux actions, et cryptomonnaies via sa plateforme xStation5. Le TsgcWSAPI_XTB component fournit une intégration Delphi complète avec l'API xStation5 sur une seule connexion WebSocket — couvrant l'authentification, la récupération de données de marché, la gestion de compte, l'exécution d'ordres, et les abonnements de streaming en temps réel. Cet article parcourt chaque méthode disponible et démontre comment démarrer en quelques minutes.

Table des matières

Aperçu de l'architecture

Contrairement à de nombreuses bourses crypto qui répartissent les fonctionnalités entre les endpoints REST et canaux WebSocket, l'API XTB xStation5 fonctionne entièrement over a single WebSocket connection. Every request — depuis pulling une liste de symbols ou de placer un ordre — est envoyée et reçue sous forme de message JSON sur le même socket. Un second socket de streaming est automatiquement géré pour les abonnements en temps réel (balance, bougies, ticks, trades, et plus encore).

Le TsgcWSAPI_XTB component abstracts cela pour toi. Il te suffit d'assigner un TsgcWebSocketClient, de configurer tes identifiants, d'activer le client et d'appeler des méthodes haut niveau tel que GetAllSymbols ou SubscribeTickPrices.

Authentification

L'authentification est gérée automatiquement lorsque le client WebSocket se connecte, en utilisant les identifiants que tu définis dans le XTB groupe de propriétés. Tu peux aussi appeler ces méthodes explicitement si nécessaire.

Method Description
Login Authentifie auprès du serveur xStation5 en utilisant UserId et Password. Appelée automatiquement à la connexion.
Logout Termine la session authentifiée et se déconnecte du serveur.

Méthodes de données de marché

Ces méthodes récupèrent les informations d'instrument, les prix, les graphiques, les actualités et les heures de trading depuis le serveur xStation5. Tous les appels sont en requête/réponse sur la connexion WebSocket.

Method Description
GetAllSymbols Renvoie une liste de tous les instruments disponibles sur la plateforme.
GetSymbol Renvoie des informations détaillées pour un symbole spécifique.
GetTickPrices Renvoie les prix de tick actuels (bid/ask) pour le specified symbols.
GetTradingHours Renvoie trading hours pour le given instruments.
GetCalendar Renvoie le economic calendar de upcoming events.
GetChartLastRequest Renvoie chart candle data starting depuis un given timestamp vers le present.
GetChartRangeRequest Renvoie chart candle data pour un specific date range.
GetNews Renvoie news topics depuis le XTB trading platform.
GetStepRules Renvoie step rules for volume calculations.
GetServerTime Renvoie le current server time.
GetVersion Renvoie l'API version number.

Méthodes de compte

Account méthodes let tu inspect ton user profile, margin levels, et profit calculations without leaving le WebSocket session.

Method Description
GetCurrentUserData Renvoie information concernant le currently logged-in user (name, currency, leverage, etc.).
GetMarginLevel Renvoie le current account margin level, equity, et balance.
GetMarginTrade Calculates le expected margin pour un given instrument et volume.
GetIbsHistory Renvoie le Introducing Broker (IB) commission history.
GetProfitCalculation Calculates le estimated profit pour un given trade scenario.

Méthodes de trading

These méthodes cover everything depuis reading open et historical positions to placing et monitoring trade transactions.

Method Description
GetTrades Renvoie une liste de currently open trades. Pass True to inclure seulement opened positions.
GetTradesHistory Renvoie closed trades withdans un specified time range.
GetTradeRecords Renvoie trade records for specified order numbers.
TradeTransaction Executes a trade transaction (open, close, modify, ou delete an order).
TradeTransactionStatus Checks le current status d'un previously submitted trade transaction.

Abonnements de streaming

Streaming méthodes open real-time datun canals sur un dedicated streaming connection. Each subscription a un corresponding unsubscribe méthode to stop réception de updates.

Subscribe Unsubscribe Description
SubscribeBalance UnSubscribeBalance Real-time balance et equity updates.
SubscribeCandles UnSubscribeCandles Live candle/chart updates pour un symbol.
SubscribeKeepAlive UnSubscribeKeepAlive Periodic keep-alive heartbeat messages.
SubscribeNews UnSubscribeNews Real-time news feed depuis le platform.
SubscribeProfits UnSubscribeProfits Real-time profit/loss updates on open positions.
SubscribeTickPrices UnSubscribeTickPrices Live bid/ask tick prices pour un symbol.
SubscribeTrades UnSubscribeTrades Mises à jour en temps réel lorsque les trades sont ouverts, fermés ou modifiés.
SubscribeTradeStatus UnSubscribeTradeStatus Trade en temps réel transaction status changes.
SubscribePing Subscribes to streaming ping to keep la connexion alive (no unsubscribe needed).
Note : Streaming subscriptions nécessitent d'abord une connexion réussie. L'ID de session de streaming est obtenu automatiquement lors de l'authentification.

Méthodes utilitaires

Method Description
Ping Envoie un ping au serveur pour vérifier que la connexion est active et éviter les timeouts.

Démarrage — Code Exemple

L'exemple suivant creates une connexion vers le XTB demo server, authenticates, retrieves symbols et user data, subscribes to live tick prices et balance updates, et fetches open trades.

var
  oClient: TsgcWebSocketClient;
  oXTB: TsgcWSAPI_XTB;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  // Create the XTB API component
  oXTB := TsgcWSAPI_XTB.Create(nil);
  oXTB.Client := oClient;
  // Configure credentials
  oXTB.XTB.UserId := 'your_user_id';
  oXTB.XTB.Password := 'your_password';
  oXTB.XTB.Demo := True;
  // Connect and authenticate
  oClient.Active := True;
  // After the login event fires, call API methods:
  oXTB.GetAllSymbols;
  oXTB.GetCurrentUserData;
  // Subscribe to real-time tick prices for EURUSD
  oXTB.SubscribeTickPrices('EURUSD', 0, 0);
  // Subscribe to balance updates
  oXTB.SubscribeBalance;
  // Get all open trades
  oXTB.GetTrades(False);
end;

Handling Responses

All responses arrive asynchronously through le composant's events. Assign handlers to événements tel que OnXTBResponse et OnXTBStreamingResponse to process le returned JSON data. Each response inclut a command identifier donc tu peux route it vers le appropriate processing logic.

Référence de configuration

All configuration est groupée sous le XTB propriété de la TsgcWSAPI_XTB component.

Property Type Description
XTB.UserId String Ton XTB account user ID.
XTB.Password String Ton XTB account password.
XTB.Demo Boolean Set to True pour se connecter à la démo server; False pour le live production server.

Conseils et notes

Demo vs. Live

Always develop et test avec XTB.Demo := True. Le demo server uses le same API surface as production mais connects vers un sandbox environment avec virtual funds. Switch to False seulement lorsque tu es ready pour le trading en direct.

Keep-Alive de connexion

Le serveur XTB disconnects idle sessions après un timeout period. Use SubscribePing ou call Ping periodically to keep la connexion alive. Le SubscribeKeepAlive méthode sur le streaming connection serves a similar purpose.

Single Connection Architecture

Unlike exchanges avec separate REST endpoints, XTB routes every command through WebSocket messages. This simplifies le composant architecture: tu n'as besoin que a TsgcWebSocketClient et un TsgcWSAPI_XTB — aucun composant HTTP supplémentaire n'est requis.

Gestion des erreurs

Si une requête échoue, le serveur renvoie un JSON erreur response avec un erreur code et description. Handle ces in ton response événement by checking le status field. Common issues inclure invalid credentials, expired sessions, et rate-limiting on excessive requests.

Rate limits: Le API XTB enforces request limits per second. Avoid envoi de bursts de requests in tight loops. Space out ton calls ou use streaming subscriptions for data que updates frequently.