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
- Authenticatie
- Marktdata-methoden
- Accountmethoden
- Trading-methoden
- Streaming-abonnementen
- Utility-methoden
- Aan de slag — codevoorbeeld
- Configuratie-overzicht
- Tips en opmerkingen
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). |
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.
