XTB API Update sgcWebSockets

· Funktionen
XTB xStation5 Trading API-Integration in Delphi

XTB ist eine der führenden Online-Trading-Plattformen Europas und bietet über die xStation5-Plattform Zugang zu Forex, Indizes, Rohstoffen, Aktien und Kryptowährungen. Die Komponente TsgcWSAPI_XTB bietet eine vollständige Delphi-Integration mit der xStation5 API über eine einzige WebSocket-Verbindung — und deckt Authentifizierung, Abruf von Marktdaten, Kontoverwaltung, Trade-Ausführung und Echtzeit-Streaming-Abonnements ab. Dieser Artikel führt durch jede verfügbare Methode und zeigt, wie du in wenigen Minuten loslegen kannst.

Inhaltsverzeichnis

Architekturüberblick

Anders als viele Krypto-Börsen, die Funktionalität auf REST-Endpunkte und WebSocket-Channels aufteilen, läuft die XTB xStation5 API vollständig über eine einzige WebSocket-Verbindung. Jede Anfrage — vom Abrufen einer Symbolliste bis zum Platzieren eines Trades — wird als JSON-Nachricht über denselben Socket gesendet und empfangen. Eine zweite Streaming-Verbindung wird automatisch für Echtzeit-Abonnements (Balance, Candles, Ticks, Trades und mehr) verwaltet.

Die Komponente TsgcWSAPI_XTB abstrahiert all das für dich. Du weist einfach einen TsgcWebSocketClient zu, konfigurierst deine Anmeldedaten, aktivierst den Client und rufst High-Level-Methoden wie GetAllSymbols oder SubscribeTickPrices auf.

Authentifizierung

Die Authentifizierung wird automatisch durchgeführt, wenn sich der WebSocket-Client verbindet, und nutzt die Anmeldedaten, die du in der Eigenschaftsgruppe XTB gesetzt hast. Bei Bedarf kannst du diese Methoden auch explizit aufrufen.

Methode Beschreibung
Login Authentifiziert sich beim xStation5-Server mit UserId und Password. Wird beim Verbinden automatisch aufgerufen.
Logout Beendet die authentifizierte Sitzung und trennt die Verbindung zum Server.

Marktdaten-Methoden

Diese Methoden rufen Instrumenteninformationen, Preise, Charts, News und Handelszeiten vom xStation5-Server ab. Alle Aufrufe sind Request/Response über die WebSocket-Verbindung.

Methode Beschreibung
GetAllSymbols Liefert eine Liste aller auf der Plattform verfügbaren Instrumente.
GetSymbol Liefert detaillierte Informationen zu einem bestimmten Symbol.
GetTickPrices Liefert die aktuellen Tick-Preise (Bid/Ask) für die angegebenen Symbole.
GetTradingHours Liefert die Handelszeiten für die angegebenen Instrumente.
GetCalendar Liefert den Wirtschaftskalender mit anstehenden Ereignissen.
GetChartLastRequest Liefert Chart-Candle-Daten ab einem angegebenen Zeitstempel bis zur Gegenwart.
GetChartRangeRequest Liefert Chart-Candle-Daten für einen bestimmten Zeitraum.
GetNews Liefert Nachrichtenthemen von der XTB-Handelsplattform.
GetStepRules Liefert Schrittregeln für Volumenberechnungen.
GetServerTime Liefert die aktuelle Serverzeit.
GetVersion Liefert die API-Versionsnummer.

Konto-Methoden

Konto-Methoden erlauben es dir, dein Benutzerprofil, Margin-Stände und Gewinnberechnungen einzusehen, ohne die WebSocket-Sitzung zu verlassen.

Methode Beschreibung
GetCurrentUserData Liefert Informationen über den aktuell angemeldeten Benutzer (Name, Währung, Hebel etc.).
GetMarginLevel Liefert den aktuellen Margin-Level, das Equity und den Kontostand.
GetMarginTrade Berechnet die erwartete Margin für ein bestimmtes Instrument und Volumen.
GetIbsHistory Liefert die Historie der Introducing-Broker-(IB-)Provisionen.
GetProfitCalculation Berechnet den geschätzten Gewinn für ein bestimmtes Trade-Szenario.

Trading-Methoden

Diese Methoden decken alles ab, vom Auslesen offener und historischer Positionen bis hin zum Platzieren und Überwachen von Trade-Transaktionen.

Methode Beschreibung
GetTrades Liefert eine Liste der aktuell offenen Trades. Übergib True, um nur eröffnete Positionen einzubeziehen.
GetTradesHistory Liefert geschlossene Trades innerhalb eines angegebenen Zeitraums.
GetTradeRecords Liefert Trade-Datensätze für angegebene Order-Nummern.
TradeTransaction Führt eine Trade-Transaktion aus (Order öffnen, schließen, ändern oder löschen).
TradeTransactionStatus Prüft den aktuellen Status einer zuvor übermittelten Trade-Transaktion.

Streaming-Abonnements

Streaming-Methoden öffnen Echtzeit-Datenkanäle über eine dedizierte Streaming-Verbindung. Jedes Abonnement hat eine entsprechende Unsubscribe-Methode, um den Empfang von Updates zu beenden.

Subscribe Unsubscribe Beschreibung
SubscribeBalance UnSubscribeBalance Echtzeit-Updates zu Saldo und Equity.
SubscribeCandles UnSubscribeCandles Live-Candle-/Chart-Updates für ein Symbol.
SubscribeKeepAlive UnSubscribeKeepAlive Periodische Keep-Alive-Heartbeat-Nachrichten.
SubscribeNews UnSubscribeNews Echtzeit-Newsfeed der Plattform.
SubscribeProfits UnSubscribeProfits Echtzeit-Gewinn/Verlust-Updates für offene Positionen.
SubscribeTickPrices UnSubscribeTickPrices Live-Bid/Ask-Tick-Preise für ein Symbol.
SubscribeTrades UnSubscribeTrades Echtzeit-Updates, wenn Trades eröffnet, geschlossen oder geändert werden.
SubscribeTradeStatus UnSubscribeTradeStatus Echtzeit-Statusänderungen von Trade-Transaktionen.
SubscribePing Abonniert Streaming-Pings, um die Verbindung aktiv zu halten (kein Unsubscribe nötig).
Hinweis: Streaming-Abonnements erfordern zunächst einen erfolgreichen Login. Die Streaming-Sitzungs-ID wird automatisch während der Authentifizierung abgerufen.

Utility-Methoden

Methode Beschreibung
Ping Sendet einen Ping an den Server, um zu prüfen, ob die Verbindung aktiv ist, und Timeouts zu vermeiden.

Erste Schritte — Codebeispiel

Das folgende Beispiel stellt eine Verbindung zum XTB-Demo-Server her, authentifiziert sich, ruft Symbole und Benutzerdaten ab, abonniert Live-Tick-Preise und Saldo-Updates und holt die offenen 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;

Antworten verarbeiten

Alle Antworten kommen asynchron über die Ereignisse der Komponente an. Weise Handler für Ereignisse wie OnXTBResponse und OnXTBStreamingResponse zu, um die zurückgegebenen JSON-Daten zu verarbeiten. Jede Antwort enthält einen Befehls-Identifier, sodass du sie an die passende Verarbeitungslogik weiterleiten kannst.

Konfigurationsreferenz

Die gesamte Konfiguration ist in der Eigenschaft XTB der Komponente TsgcWSAPI_XTB gruppiert.

Eigenschaft Typ Beschreibung
XTB.UserId String Deine XTB-Konto-Benutzer-ID.
XTB.Password String Dein XTB-Konto-Passwort.
XTB.Demo Boolean Auf True setzen, um sich mit dem Demo-Server zu verbinden; False für den Live-Produktionsserver.

Tipps und Hinweise

Demo vs. Live

Entwickle und teste immer mit XTB.Demo := True. Der Demo-Server verwendet dieselbe API-Oberfläche wie die Produktion, verbindet sich aber mit einer Sandbox-Umgebung mit virtuellem Guthaben. Wechsle erst dann zu False, wenn du bereit für den Live-Handel bist.

Verbindung aufrechterhalten

Der XTB-Server trennt inaktive Sitzungen nach einem Timeout. Nutze SubscribePing oder rufe Ping regelmäßig auf, um die Verbindung aktiv zu halten. Die Methode SubscribeKeepAlive auf der Streaming-Verbindung erfüllt einen ähnlichen Zweck.

Single-Connection-Architektur

Anders als bei Börsen mit separaten REST-Endpunkten leitet XTB jeden Befehl über WebSocket-Nachrichten. Das vereinfacht die Komponentenarchitektur: Du benötigst nur einen TsgcWebSocketClient und einen TsgcWSAPI_XTB — keine zusätzlichen HTTP-Komponenten erforderlich.

Fehlerbehandlung

Schlägt eine Anfrage fehl, gibt der Server eine JSON-Fehlerantwort mit Fehlercode und Beschreibung zurück. Behandle diese in deinem Response-Ereignis, indem du das Feld status prüfst. Häufige Probleme sind ungültige Anmeldedaten, abgelaufene Sitzungen und Rate-Limiting bei zu vielen Anfragen.

Rate Limits: Die XTB API erzwingt Anfrage-Limits pro Sekunde. Vermeide es, Anfragen in engen Schleifen zu bündeln. Verteile deine Aufrufe oder nutze Streaming-Abonnements für Daten, die sich häufig aktualisieren.