La próxima versión de sgcWebSockets — la 2026.5.0 — añade soporte nativo de la API de trading Forex.com / StoneX / CityIndex: gestión de órdenes REST más streaming en tiempo real con Lightstreamer, todo a través de un único componente Delphi que puedes soltar en un formulario.
Tres componentes nuevos cubren toda la superficie: TsgcHTTP_API_Forex para el trading REST, TsgcWSPClient_Lightstreamer para el canal de streaming nativo Lightstreamer TLCP 2.5, y TsgcWSAPI_Forex como fachada unificada que los conecta y publica eventos tipados OnForex* para precios, órdenes, posiciones, cotizaciones y margen de cuenta.
Qué se incluye
Todos los endpoints y adaptadores de streaming que el servidor en vivo de Forex.com sirve hoy en día están soportados de serie.
|
Trading REST LogOn / LogOff / Ping / GetServiceStatus, además de los cinco endpoints de órdenes: NewTradeOrder, UpdateTradeOrder, NewStopLimitOrder, UpdateStopLimitOrder y CancelOrder. Cada uno trae tres overloads — JSON crudo, parámetros escalares o un objeto de orden tipado con soporte completo de brackets IfDone y cierres parciales. |
Datos de cuenta y mercado GetClientAndTradingAccount, ListOpenPositions, ListActiveStopLimitOrders, GetOrder, ListTradeHistory, ListStopLimitOrderHistory, SimulateTrade, GetMarketInformation, ListCfdMarkets, FullSearchWithTags, GetPriceBars y GetPriceTicks. |
|
Streaming en tiempo real Cinco adaptadores de datos Lightstreamer bajo el adapter set STREAMINGALL — PRICES, ORDERS, QUOTES, CLIENTACCOUNTMARGIN y TRADEMARGIN. Cada uno entrega registros parseados a un evento tipado: OnForexPriceTick, OnForexOrderUpdate, OnForexPositionUpdate, OnForexAccountMargin, OnForexQuote. |
Componente fachada unificado TsgcWSAPI_Forex agrega el cliente REST y el cliente Lightstreamer interno detrás de un único componente visual. Llamas a Connect — primero corre el LogOn REST, su token Session se reenvía al handshake de Lightstreamer como LS_password, y arranca el streaming. Un componente, una llamada. |
|
Reconexión automática La gestiona el WatchDog del cliente WebSocket subyacente. Antes de cada intento de reconexión la fachada refresca el token de sesión REST; los frames TLCP LOOP rebindan y reproducen todas las suscripciones activas tras una caída de red. La expiración de sesión vuelve a ejecutar LogOn de forma transparente. |
Cobertura de plataformas Delphi 7 a Delphi 13, edición Professional y superiores. Windows, macOS, Linux, iOS y Android donde el compilador lo soporte. Se entrega con un mirror .NET (net40+, .NET Standard 2.0, .NET 5-9) respaldado por la DLL nativa de sgcWebSockets. |
Bajo el capó
La parte de streaming de esta integración es la más interesante. Forex.com entrega datos en tiempo real sobre Lightstreamer — un protocolo de streaming propietario usado por varios brokers y proveedores de datos financieros. Hasta ahora no existía un cliente TLCP nativo para Delphi; las integraciones existentes con plataformas basadas en Lightstreamer envuelven el SDK JavaScript o Java de Lightstreamer mediante embeds de navegador o procesos externos.
TsgcWSPClient_Lightstreamer es una implementación nativa hecha desde cero del protocolo Lightstreamer TLCP 2.5: create_session, bind_session, control (subscribe / unsubscribe), el manejador LOOP de auto-rebind y el replay de suscripciones tras la reconexión — anunciado en el cable mediante la cabecera de subprotocolo Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com. Esto convierte a sgcWebSockets en la primera librería de componentes Delphi con soporte TLCP nativo, y el cliente es deliberadamente genérico: se entrega como su propio componente reutilizable, no soldado a Forex.com, de modo que el mismo camino de código sirve para cualquier broker basado en Lightstreamer (IG Markets, por ejemplo) o proveedor de datos.
Direccionamiento de ítems. Cada adaptador de Forex.com usa la misma forma de ítem ID.{numericId} — el id numérico es un MarketId, ClientAccountId o TradingAccountId, y el selector DataAdapter en el frame SUB (PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN) decide qué dataset se transmite para ese id. No hay prefijos legacy PRICE.{id}.
Patrón order-object. Las peticiones de trade siguen el mismo diseño estilo Kucoin usado en otras partes de la librería: TsgcHTTPForexTradeOrder, TsgcHTTPForexStopLimitOrder y TsgcHTTPForexCancelOrder. Construyes la orden una vez, modificas algunos campos y la envías de nuevo. Los brackets IfDone tipados (stop / limit / guaranteed-stop / trailing-stop adjuntos), arrays Close para semánticas de cierre parcial, PositionMethodId (netting vs. hedging) y los campos Reference del cliente son ciudadanos de primera clase.
Ejemplo de código
Coloca la fachada en un formulario, configura las credenciales, engancha el evento de price tick y llama a Connect y WatchMarket. El fragmento siguiente es un ejemplo completo y funcional.
var
Forex: TsgcWSAPI_Forex;
begin
Forex := TsgcWSAPI_Forex.Create(nil);
Try
Forex.Credentials.UserName := 'YOUR_USER';
Forex.Credentials.Password := 'YOUR_PASSWORD';
Forex.Credentials.AppKey := 'YOUR_APPKEY';
Forex.OnForexPriceTick := OnPriceTick;
Forex.Connect; // REST LogOn + Lightstreamer
Forex.WatchMarket(401484830); // EUR/USD
Forex.WatchAccount; // ORDERS + margin
// ... run app, receive ticks and order updates ...
Finally
Forex.Free;
End;
end;
procedure TForm1.OnPriceTick(Sender: TObject;
const aTick: TsgcForexPriceTick);
begin
Memo1.Lines.Add(Format('%d bid=%.5f offer=%.5f audit=%s',
[aTick.MarketId, aTick.Bid, aTick.Offer, aTick.AuditId]));
end;
Demo
Hay una demo completa en VCL en Demos\05.Crypto\22.Forex. Está dividida en tres pestañas:
- Login — campos UserName / Password / AppKey, Connect / Disconnect / Ping, toggle de AutoReconnect, ids de sesión / cuenta en vivo y un log de eventos. Las credenciales se persisten en
sgcForexDemo.inipara que sólo las teclees una vez. - Trading REST — búsqueda de mercados (FullSearchWithTags), NewTradeOrder / UpdateTradeOrder / NewStopLimitOrder / UpdateStopLimitOrder / CancelOrder, SimulateTrade, GetOrder, ListOpenPositions, ListActiveStopLimitOrders, ListTradeHistory y ListStopLimitOrderHistory.
- Streaming — WatchMarket / UnwatchMarket, grid de precios en vivo, list-views de posiciones y órdenes actualizadas en tiempo real desde el adapter set STREAMINGALL, y un panel de margen de cuenta en vivo (Cash / Margin / NetEquity / TradeableFunds / Currency).
Disponibilidad
Disponible en la próxima versión de sgcWebSockets — la 2026.5.0. Los actuales licenciatarios de Enterprise y All-Access la reciben como parte de su suscripción; las licencias Professional la reciben con su renovación.
Regístrate para obtener una cuenta demo gratuita de Forex.com (incluyendo UserName / Password / AppKey) en www.forex.com, con la referencia completa de la API en docs.labs.gaincapital.com.
Enlaces
- Documentación del componente: esegece.com/help/sgcwebsockets/
- Carpeta de la demo:
Demos\05.Crypto\22.Forex - Registro en Forex.com: www.forex.com
- Referencia de la API: docs.labs.gaincapital.com
- Especificación Lightstreamer TLCP 2.5: TLCP 2.5 PDF
- Página de producto de sgcWebSockets: esegece.com
