API REST Forex.com & Lightstreamer

· Componentes

A próxima versão do sgcWebSockets — versão 2026.5.0 — adiciona suporte nativo à API de Trading Forex.com / StoneX / CityIndex: gerenciamento de ordens REST mais streaming Lightstreamer em tempo real, tudo entregue por um único componente Delphi que você pode soltar em um formulário.

Três novos componentes cobrem toda a superfície: TsgcHTTP_API_Forex para trading via REST, TsgcWSPClient_Lightstreamer para o canal de streaming Lightstreamer TLCP 2.5 nativo, e TsgcWSAPI_Forex como fachada unificada que os conecta e publica eventos OnForex* tipados para preços, ordens, posições, cotações e margem de conta.

O que Está Incluído

Todos os endpoints e adaptadores de streaming que o servidor Forex.com ativo oferece hoje são suportados imediatamente.

REST Trading
LogOn / LogOff / Ping / GetServiceStatus, mais os cinco endpoints de ordem: NewTradeOrder, UpdateTradeOrder, NewStopLimitOrder, UpdateStopLimitOrder e CancelOrder. Cada um vem com três sobrecargas — JSON bruto, parâmetros escalares ou um objeto de ordem tipado com suporte completo a brackets IfDone e fechamento parcial.
Dados de Conta & Mercado
GetClientAndTradingAccount, ListOpenPositions, ListActiveStopLimitOrders, GetOrder, ListTradeHistory, ListStopLimitOrderHistory, SimulateTrade, GetMarketInformation, ListCfdMarkets, FullSearchWithTags, GetPriceBars e GetPriceTicks.
Streaming em Tempo Real
Cinco adaptadores de dados Lightstreamer no conjunto de adaptadores STREAMINGALLPRICES, ORDERS, QUOTES, CLIENTACCOUNTMARGIN e TRADEMARGIN. Cada um despacha registros analisados para um evento tipado: OnForexPriceTick, OnForexOrderUpdate, OnForexPositionUpdate, OnForexAccountMargin, OnForexQuote.
Componente de Fachada Unificada
TsgcWSAPI_Forex agrega o cliente REST mais o cliente Lightstreamer interno em um único componente visual. Chame Connect — o REST LogOn é executado primeiro, seu token Session é encaminhado ao handshake do Lightstreamer como LS_password e o streaming começa. Um componente, uma chamada.
Reconexão Automática
Tratada pelo WatchDog do cliente WebSocket subjacente. Antes de cada tentativa de reconexão, a fachada atualiza o token de sessão REST; frames TLCP LOOP reconnectam e reproduzem todas as subscrições ativas após a queda da rede. A expiração da sessão re-executa o LogOn de forma transparente.
Alcance de Plataformas
Delphi 7 ao Delphi 13, edição Professional e superior. Windows, macOS, Linux, iOS e Android onde o compilador suporta. Inclui um espelho .NET (net40+, .NET Standard 2.0, .NET 5-9) suportado pela DLL nativa do sgcWebSockets.

Por Dentro

A metade de streaming desta integração é a parte mais interessante. O Forex.com entrega dados em tempo real via Lightstreamer — um protocolo de streaming proprietário usado por corretoras e fornecedores de dados financeiros. Até agora não havia um cliente TLCP nativo para Delphi; as integrações existentes com plataformas baseadas em Lightstreamer todas empacotam o SDK JavaScript ou Java do Lightstreamer via embeds de browser ou processos externos.

TsgcWSPClient_Lightstreamer é uma implementação nativa do zero do protocolo Lightstreamer TLCP 2.5: create_session, bind_session, control (subscribe / unsubscribe), o handler de auto-rebind LOOP e replay de subscrições após reconexão — anunciado na rede através do cabeçalho de subprotocolo Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com. Isso torna o sgcWebSockets a primeira biblioteca de componentes Delphi com suporte nativo a TLCP, e o cliente é deliberadamente genérico: é fornecido como seu próprio componente reutilizável, não vinculado ao Forex.com, para que o mesmo caminho de código acione qualquer corretora baseada em Lightstreamer (IG Markets, por exemplo) ou fornecedor de dados.

Endereçamento de itens. Todos os adaptadores do Forex.com usam o mesmo formato de item ID.{numericId} — o id numérico é um MarketId, ClientAccountId ou TradingAccountId, e o seletor DataAdapter no frame SUB (PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN) decide qual conjunto de dados é transmitido para aquele id. Não há prefixos legados PRICE.{id}.

Padrão de objeto de ordem. As requisições de trade seguem o mesmo design estilo KuCoin usado em outros lugares da biblioteca: TsgcHTTPForexTradeOrder, TsgcHTTPForexStopLimitOrder e TsgcHTTPForexCancelOrder. Monte a ordem uma vez, modifique alguns campos, envie novamente. Brackets IfDone tipados (stop / limit / guaranteed-stop / trailing-stop anexados), arrays Close para semântica de fechamento parcial, PositionMethodId (netting vs. hedging) e campos Reference do cliente são todos de primeira classe.

Exemplo de Código

Solte a fachada em um formulário, defina as credenciais, conecte o evento de tick de preço, chame Connect e WatchMarket. O trecho abaixo é um exemplo completo e 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

Uma demo VCL completa está em Demos\05.Crypto\22.Forex. Ela está dividida em três abas:

Disponibilidade

Disponível na próxima versão do sgcWebSockets — versão 2026.5.0. Titulares de licenças Enterprise e All-Access existentes recebem como parte de sua assinatura; licenças Professional recebem com a renovação.

Cadastre-se para uma conta demo gratuita do Forex.com (incluindo UserName / Password / AppKey) em www.forex.com, com a referência completa da API em docs.labs.gaincapital.com.