XTB es una de las principales plataformas de trading online de Europa, que ofrece acceso a forex, índices, materias primas, acciones y criptomonedas a través de su plataforma xStation5. El componente TsgcWSAPI_XTB proporciona una integración completa en Delphi con la API de xStation5 mediante una única conexión WebSocket — cubre autenticación, obtención de datos de mercado, gestión de cuenta, ejecución de operaciones y suscripciones en tiempo real. Este artículo recorre todos los métodos disponibles y muestra cómo empezar en minutos.
Tabla de contenidos
- Visión general de la arquitectura
- Autenticación
- Métodos de datos de mercado
- Métodos de cuenta
- Métodos de trading
- Suscripciones de streaming
- Métodos de utilidad
- Primeros pasos — ejemplo de código
- Referencia de configuración
- Consejos y notas
Visión general de la arquitectura
A diferencia de muchos exchanges de criptomonedas que reparten la funcionalidad entre endpoints REST y canales WebSocket, la API XTB xStation5 funciona íntegramente sobre una única conexión WebSocket. Cada petición — desde obtener una lista de símbolos hasta colocar una operación — se envía y recibe como mensaje JSON por el mismo socket. Se gestiona automáticamente un segundo socket de streaming para las suscripciones en tiempo real (saldo, velas, ticks, operaciones, etc.).
El componente TsgcWSAPI_XTB abstrae todo esto por ti. Solo tienes que asignar un TsgcWebSocketClient, configurar tus credenciales, activar el cliente y llamar a métodos de alto nivel como GetAllSymbols o SubscribeTickPrices.
Autenticación
La autenticación se gestiona automáticamente cuando el cliente WebSocket se conecta, usando las credenciales que has establecido en el grupo de propiedades XTB. También puedes invocar estos métodos explícitamente si lo necesitas.
| Método | Descripción |
|---|---|
Login |
Autentica contra el servidor xStation5 usando UserId y Password. Se llama automáticamente al conectarse. |
Logout |
Finaliza la sesión autenticada y desconecta del servidor. |
Métodos de datos de mercado
Estos métodos obtienen información de instrumentos, precios, gráficos, noticias y horarios de trading del servidor xStation5. Todas las llamadas son de tipo petición/respuesta sobre la conexión WebSocket.
| Método | Descripción |
|---|---|
GetAllSymbols |
Devuelve una lista de todos los instrumentos disponibles en la plataforma. |
GetSymbol |
Devuelve información detallada de un símbolo concreto. |
GetTickPrices |
Devuelve los precios tick actuales (bid/ask) para los símbolos indicados. |
GetTradingHours |
Devuelve los horarios de trading para los instrumentos indicados. |
GetCalendar |
Devuelve el calendario económico con próximos eventos. |
GetChartLastRequest |
Devuelve datos de velas de gráfico desde un timestamp dado hasta el presente. |
GetChartRangeRequest |
Devuelve datos de velas de gráfico para un rango de fechas concreto. |
GetNews |
Devuelve temas de noticias de la plataforma de trading XTB. |
GetStepRules |
Devuelve las step rules para el cálculo de volúmenes. |
GetServerTime |
Devuelve la hora actual del servidor. |
GetVersion |
Devuelve el número de versión de la API. |
Métodos de cuenta
Los métodos de cuenta te permiten consultar tu perfil de usuario, niveles de margen y cálculos de beneficio sin salir de la sesión WebSocket.
| Método | Descripción |
|---|---|
GetCurrentUserData |
Devuelve información sobre el usuario que ha iniciado sesión (nombre, divisa, apalancamiento, etc.). |
GetMarginLevel |
Devuelve el nivel de margen, el equity y el balance actuales de la cuenta. |
GetMarginTrade |
Calcula el margen esperado para un instrumento y volumen dados. |
GetIbsHistory |
Devuelve el historial de comisiones del Introducing Broker (IB). |
GetProfitCalculation |
Calcula el beneficio estimado para un escenario de operación dado. |
Métodos de trading
Estos métodos cubren desde leer posiciones abiertas e históricas hasta colocar y supervisar transacciones de trading.
| Método | Descripción |
|---|---|
GetTrades |
Devuelve una lista de las operaciones actualmente abiertas. Pasa True para incluir solo las posiciones abiertas. |
GetTradesHistory |
Devuelve las operaciones cerradas dentro de un rango temporal indicado. |
GetTradeRecords |
Devuelve los registros de operación para los números de orden indicados. |
TradeTransaction |
Ejecuta una transacción de trading (abrir, cerrar, modificar o eliminar una orden). |
TradeTransactionStatus |
Comprueba el estado actual de una transacción de trading enviada previamente. |
Suscripciones de streaming
Streaming methods open real-time data channels on a dedicated streaming connection. Each subscription has a corresponding unsubscribe method to stop receiving updates.
| Subscribe | Unsubscribe | Descripción |
|---|---|---|
SubscribeBalance |
UnSubscribeBalance |
Real-time balance and equity updates. |
SubscribeCandles |
UnSubscribeCandles |
Live candle/chart updates for a symbol. |
SubscribeKeepAlive |
UnSubscribeKeepAlive |
Periodic keep-alive heartbeat messages. |
SubscribeNews |
UnSubscribeNews |
Real-time news feed from the platform. |
SubscribeProfits |
UnSubscribeProfits |
Real-time profit/loss updates on open positions. |
SubscribeTickPrices |
UnSubscribeTickPrices |
Precios tick bid/ask en vivo para un símbolo. |
SubscribeTrades |
UnSubscribeTrades |
Actualizaciones en tiempo real cuando se abren, cierran o modifican operaciones. |
SubscribeTradeStatus |
UnSubscribeTradeStatus |
Cambios de estado de transacciones de trading en tiempo real. |
SubscribePing |
— | Se suscribe al ping de streaming para mantener viva la conexión (no es necesario desuscribirse). |
Métodos de utilidad
| Método | Descripción |
|---|---|
Ping |
Envía un ping al servidor para verificar que la conexión está viva y evitar timeouts. |
Primeros pasos — ejemplo de código
El siguiente ejemplo crea una conexión al servidor demo de XTB, autentica, obtiene símbolos y datos de usuario, se suscribe a precios tick en vivo y a actualizaciones de saldo, y obtiene las operaciones abiertas.
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;
Gestionar las respuestas
Todas las respuestas llegan de forma asíncrona a través de los eventos del componente. Asigna manejadores a eventos como OnXTBResponse y OnXTBStreamingResponse para procesar los datos JSON devueltos. Cada respuesta incluye un identificador de comando que te permite enrutarla a la lógica de procesamiento adecuada.
Referencia de configuración
Toda la configuración se agrupa bajo la propiedad XTB del componente TsgcWSAPI_XTB.
| Propiedad | Tipo | Descripción |
|---|---|---|
XTB.UserId |
String | El ID de usuario de tu cuenta XTB. |
XTB.Password |
String | La contraseña de tu cuenta XTB. |
XTB.Demo |
Boolean | Pon True para conectarte al servidor demo; False para el servidor real de producción. |
Consejos y notas
Demo vs. real
Desarrolla y prueba siempre con XTB.Demo := True. El servidor demo expone la misma API que producción, pero se conecta a un entorno sandbox con fondos virtuales. Cambia a False solo cuando estés listo para operar en real.
Keep-alive de la conexión
El servidor XTB desconecta las sesiones inactivas tras un periodo de timeout. Usa SubscribePing o llama periódicamente a Ping para mantener viva la conexión. El método SubscribeKeepAlive sobre la conexión de streaming cumple un propósito similar.
Arquitectura de conexión única
A diferencia de los exchanges con endpoints REST separados, XTB enruta cada comando a través de mensajes WebSocket. Esto simplifica la arquitectura del componente: solo necesitas un TsgcWebSocketClient y un TsgcWSAPI_XTB — no se requieren componentes HTTP adicionales.
Gestión de errores
Si una petición falla, el servidor devuelve una respuesta JSON de error con un código y una descripción. Gestiónalos en tu evento de respuesta comprobando el campo status. Los problemas habituales son credenciales inválidas, sesiones caducadas y rate-limiting por peticiones excesivas.
