API Forex.com REST & Lightstreamer

· Componenti

Il prossimo rilascio di sgcWebSockets — versione 2026.5.0 — aggiunge il supporto nativo all'API Forex.com / StoneX / CityIndex Trading: gestione degli ordini REST più streaming Lightstreamer in tempo reale, il tutto offerto attraverso un singolo componente Delphi che puoi trascinare su una form.

Tre nuovi componenti coprono l'intera superficie: TsgcHTTP_API_Forex per il trading REST, TsgcWSPClient_Lightstreamer per il canale di streaming nativo Lightstreamer TLCP 2.5 e TsgcWSAPI_Forex come facciata unificata che li collega e pubblica eventi tipizzati OnForex* per prezzi, ordini, posizioni, quote e margine dell'account.

Cosa è incluso

Ogni endpoint e adapter di streaming che il server live di Forex.com serve oggi è supportato pronto all'uso.

Trading REST
LogOn / LogOff / Ping / GetServiceStatus, più i cinque endpoint per gli ordini: NewTradeOrder, UpdateTradeOrder, NewStopLimitOrder, UpdateStopLimitOrder e CancelOrder. Ciascuno è disponibile in tre overload: JSON grezzo, parametri scalari oppure un oggetto ordine tipizzato con bracket IfDone completi e supporto della chiusura parziale.
Account e dati di mercato
GetClientAndTradingAccount, ListOpenPositions, ListActiveStopLimitOrders, GetOrder, ListTradeHistory, ListStopLimitOrderHistory, SimulateTrade, GetMarketInformation, ListCfdMarkets, FullSearchWithTags, GetPriceBars e GetPriceTicks.
Streaming in tempo reale
Cinque data adapter Lightstreamer nell'adapter set STREAMINGALL: PRICES, ORDERS, QUOTES, CLIENTACCOUNTMARGIN e TRADEMARGIN. Ciascuno inoltra i record analizzati a un evento tipizzato: OnForexPriceTick, OnForexOrderUpdate, OnForexPositionUpdate, OnForexAccountMargin, OnForexQuote.
Componente facciata unificato
TsgcWSAPI_Forex aggrega il client REST e il client Lightstreamer interno dietro un unico componente visuale. Chiama Connect: viene eseguito prima il LogOn REST, il suo token Session viene inoltrato all'handshake Lightstreamer come LS_password e lo streaming parte. Un componente, una chiamata.
Riconnessione automatica
Gestita dal WatchDog del client WebSocket sottostante. Prima di ogni tentativo di riconnessione la facciata aggiorna il token di sessione REST; i frame TLCP LOOP rebindano e ripetono ogni sottoscrizione attiva dopo una caduta di rete. La scadenza della sessione riesegue LogOn in modo trasparente.
Copertura delle piattaforme
Da Delphi 7 a Delphi 13, edizione Professional e superiori. Windows, macOS, Linux, iOS e Android dove il compilatore lo supporta. Include una controparte .NET (net40+, .NET Standard 2.0, .NET 5-9) basata sulla DLL nativa sgcWebSockets.

Sotto il cofano

La parte di streaming di questa integrazione è il pezzo più interessante. Forex.com fornisce dati in tempo reale tramite Lightstreamer, un protocollo di streaming proprietario usato da diversi broker e fornitori di dati finanziari. Finora non esisteva un client TLCP nativo per Delphi; le integrazioni esistenti con piattaforme basate su Lightstreamer si appoggiano tutte all'SDK Lightstreamer in JavaScript o Java tramite embed nel browser o processi esterni.

TsgcWSPClient_Lightstreamer è un'implementazione nativa da zero del protocollo Lightstreamer TLCP 2.5: create_session, bind_session, control (subscribe / unsubscribe), l'handler di auto-rebind LOOP e il replay delle sottoscrizioni dopo la riconnessione, dichiarato sul wire tramite l'header subprotocol Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com. Questo rende sgcWebSockets la prima libreria di componenti Delphi con supporto TLCP nativo, e il client è volutamente generico: viene distribuito come componente riutilizzabile a sé, non saldato a Forex.com, così lo stesso percorso di codice supporta qualsiasi broker basato su Lightstreamer (ad esempio IG Markets) o fornitore di dati.

Indirizzamento degli item. Ogni adapter di Forex.com usa la stessa forma di item ID.{numericId}: l'id numerico è un MarketId, ClientAccountId o TradingAccountId, e il selettore DataAdapter sul frame SUB (PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN) decide quale dataset viene trasmesso per quell'id. Non ci sono prefissi legacy PRICE.{id}.

Pattern dell'oggetto ordine. Le richieste di trade seguono lo stesso design in stile Kucoin usato altrove nella libreria: TsgcHTTPForexTradeOrder, TsgcHTTPForexStopLimitOrder e TsgcHTTPForexCancelOrder. Costruisci l'ordine una volta, modifica alcuni campi, invialo di nuovo. I bracket tipizzati IfDone (stop / limit / guaranteed-stop / trailing-stop allegati), gli array Close per la semantica di chiusura parziale, PositionMethodId (netting vs. hedging) e i campi client Reference sono tutti di prima classe.

Esempio di codice

Inserisci la facciata su una form, imposta le credenziali, collega l'evento di tick di prezzo, chiama Connect e WatchMarket. Lo snippet qui sotto è un esempio completo e funzionante.

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

Una demo VCL completa si trova in Demos\05.Crypto\22.Forex. È suddivisa in tre tab:

Disponibilità

Disponibile nel prossimo rilascio di sgcWebSockets, versione 2026.5.0. Gli attuali titolari di licenze Enterprise e All-Access lo ricevono come parte della loro sottoscrizione; le licenze Professional lo ricevono con il rinnovo.

Registrati per un account demo Forex.com gratuito (inclusi UserName / Password / AppKey) su www.forex.com, con il riferimento API completo su docs.labs.gaincapital.com.