XTB-API-update sgcWebSockets

· Functies
XTB xStation5 Trading-API-integratie in Delphi

XTB is een van Europa's toonaangevende online tradingplatforms en biedt toegang tot forex, indices, grondstoffen, aandelen en cryptocurrencies via zijn xStation5-platform. Het TsgcWSAPI_XTB-component biedt een complete Delphi-integratie met de xStation5-API via één enkele WebSocket-verbinding — inclusief authenticatie, marktdata-ophalen, accountbeheer, trade-uitvoering en realtime streaming-abonnementen. Dit artikel loopt door elke beschikbare methode en laat zien hoe je in enkele minuten aan de slag gaat.

Inhoudsopgave

Architectuuroverzicht

In tegenstelling tot veel crypto-exchanges die functionaliteit verdelen tussen REST-endpoints en WebSocket-kanalen, werkt de XTB xStation5-API volledig over één enkele WebSocket-verbinding. Elk request — van het ophalen van een lijst symbolen tot het plaatsen van een trade — wordt verstuurd en ontvangen als JSON-bericht op dezelfde socket. Een tweede streaming-socket wordt automatisch beheerd voor realtime-abonnementen (balans, candles, ticks, trades en meer).

Het TsgcWSAPI_XTB-component abstraheert dit allemaal voor je. Je wijst eenvoudig een TsgcWebSocketClient toe, configureert je credentials, activeert de client en roept high-level-methoden aan zoals GetAllSymbols of SubscribeTickPrices.

Authenticatie

Authenticatie wordt automatisch afgehandeld wanneer de WebSocket-client verbinding maakt, met de credentials die je hebt ingesteld in de XTB-eigenschappengroep. Je kunt deze methoden ook expliciet aanroepen indien nodig.

Methode Beschrijving
Login Authenticeert bij de xStation5-server met UserId en Password. Wordt automatisch aangeroepen bij het verbinden.
Logout Beëindigt de geauthenticeerde sessie en verbreekt de verbinding met de server.

Marktdata-methoden

Deze methoden halen instrumentinformatie, prijzen, charts, nieuws en handelsuren op vanaf de xStation5-server. Alle aanroepen zijn request/response via de WebSocket-verbinding.

Method Description
GetAllSymbols Retourneert een lijst van alle instrumenten die beschikbaar zijn op het platform.
GetSymbol Retourneert gedetailleerde informatie voor een specifiek symbool.
GetTickPrices Retourneert de huidige tick-prijzen (bid/ask) voor de opgegeven symbolen.
GetTradingHours Retourneert handelsuren voor de opgegeven instrumenten.
GetCalendar Retourneert de economische kalender van aankomende gebeurtenissen.
GetChartLastRequest Retourneert chart-candle-data vanaf een opgegeven tijdstempel tot heden.
GetChartRangeRequest Retourneert chart-candle-data voor een specifiek datumbereik.
GetNews Retourneert nieuwsonderwerpen van het XTB-tradingplatform.
GetStepRules Retourneert step-regels voor volumeberekeningen.
GetServerTime Retourneert de huidige servertijd.
GetVersion Retourneert het API-versienummer.

Accountmethoden

Met accountmethoden kun je je gebruikersprofiel, margin-niveaus en winstberekeningen inspecteren zonder de WebSocket-sessie te verlaten.

Method Description
GetCurrentUserData Retourneert informatie over de momenteel ingelogde gebruiker (naam, valuta, hefboom, enz.).
GetMarginLevel Retourneert het huidige account-marginniveau, equity en balans.
GetMarginTrade Berekent de verwachte margin voor een opgegeven instrument en volume.
GetIbsHistory Retourneert de Introducing Broker (IB)-commissiegeschiedenis.
GetProfitCalculation Berekent de geschatte winst voor een opgegeven trade-scenario.

Trading-methoden

Deze methoden dekken alles, van het lezen van open en historische posities tot het plaatsen en monitoren van trade-transacties.

Method Description
GetTrades Retourneert een lijst van momenteel open trades. Geef True mee om alleen geopende posities op te nemen.
GetTradesHistory Retourneert gesloten trades binnen een opgegeven tijdsbereik.
GetTradeRecords Retourneert trade-records voor opgegeven ordernummers.
TradeTransaction Voert een trade-transactie uit (open, sluit, wijzig of verwijder een order).
TradeTransactionStatus Controleert de huidige status van een eerder ingediende trade-transactie.

Streaming-abonnementen

Streaming-methoden openen realtime-datakanalen op een speciale streaming-verbinding. Elk abonnement heeft een bijbehorende unsubscribe-methode om het ontvangen van updates te stoppen.

Abonneren Afmelden Description
SubscribeBalance UnSubscribeBalance Realtime-updates voor balans en equity.
SubscribeCandles UnSubscribeCandles Live candle-/chart-updates voor een symbool.
SubscribeKeepAlive UnSubscribeKeepAlive Periodieke keep-alive-hartslagberichten.
SubscribeNews UnSubscribeNews Realtime-nieuwsfeed van het platform.
SubscribeProfits UnSubscribeProfits Realtime-winst/verlies-updates op open posities.
SubscribeTickPrices UnSubscribeTickPrices Live bid/ask-tick-prijzen voor een symbool.
SubscribeTrades UnSubscribeTrades Realtime-updates wanneer trades worden geopend, gesloten of gewijzigd.
SubscribeTradeStatus UnSubscribeTradeStatus Realtime-trade-transactie-statuswijzigingen.
SubscribePing Abonneert op streaming-ping om de verbinding actief te houden (geen afmelden nodig).
Opmerking: streaming-abonnementen vereisen eerst een succesvolle login. De streaming-sessie-ID wordt automatisch verkregen tijdens authenticatie.

Utility-methoden

Method Description
Ping Verstuurt een ping naar de server om te verifiëren dat de verbinding actief is en time-outs te voorkomen.

Aan de slag — codevoorbeeld

Het volgende voorbeeld maakt een verbinding met de XTB-demoserver, authenticeert, haalt symbolen en gebruikersgegevens op, abonneert op live tick-prijzen en balansupdates, en haalt open trades op.

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;

Reacties afhandelen

Alle reacties komen asynchroon binnen via de events van het component. Wijs handlers toe aan events zoals OnXTBResponse en OnXTBStreamingResponse om de geretourneerde JSON-data te verwerken. Elke reactie bevat een commando-identifier zodat je deze naar de juiste verwerkingslogica kunt routeren.

Configuratie-overzicht

Alle configuratie is gegroepeerd onder de XTB-eigenschap van het TsgcWSAPI_XTB-component.

Eigenschap Type Description
XTB.UserId String Je XTB-account-user-ID.
XTB.Password String Je XTB-accountwachtwoord.
XTB.Demo Boolean Stel in op True om verbinding te maken met de demoserver; False voor de live-productieserver.

Tips en opmerkingen

Demo vs. Live

Ontwikkel en test altijd met XTB.Demo := True. De demoserver gebruikt hetzelfde API-oppervlak als productie, maar verbindt met een sandbox-omgeving met virtuele fondsen. Schakel pas over naar False wanneer je klaar bent voor live-trading.

Verbinding-keep-alive

De XTB-server verbreekt inactieve sessies na een time-out-periode. Gebruik SubscribePing of roep Ping periodiek aan om de verbinding actief te houden. De methode SubscribeKeepAlive op de streaming-verbinding dient een vergelijkbaar doel.

Enkele-verbindingsarchitectuur

In tegenstelling tot exchanges met aparte REST-endpoints, routeert XTB elk commando via WebSocket-berichten. Dit vereenvoudigt de componentarchitectuur: je hebt alleen een TsgcWebSocketClient en een TsgcWSAPI_XTB nodig — er zijn geen aanvullende HTTP-componenten vereist.

Foutafhandeling

Als een request mislukt, retourneert de server een JSON-foutreactie met een foutcode en beschrijving. Verwerk deze in je response-event door het veld status te controleren. Veelvoorkomende problemen zijn ongeldige credentials, verlopen sessies en rate-limiting bij te veel requests.

Rate-limits: de XTB-API dwingt request-limieten per seconde af. Vermijd het versturen van bursts van requests in strakke loops. Verdeel je aanroepen of gebruik streaming-abonnementen voor data die vaak wordt bijgewerkt.