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
- Authentification
- Méthodes de données de marché
- Méthodes de compte
- Méthodes de trading
- Abonnements de streaming
- Méthodes utilitaires
- Démarrage — Code Exemple
- Référence de configuration
- Conseils et notes
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). |
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.
