Forex.com API REST & Lightstreamer

· Componenten

De volgende sgcWebSockets-release — versie 2026.5.0 — voegt native ondersteuning toe voor de Forex.com / StoneX / CityIndex Trading-API: REST-orderbeheer plus realtime Lightstreamer-streaming, allemaal geleverd via één enkel Delphi-component dat je op een form kunt plaatsen.

Drie nieuwe componenten dekken het hele oppervlak: TsgcHTTP_API_Forex voor REST-trading, TsgcWSPClient_Lightstreamer voor het native Lightstreamer TLCP 2.5-streamingkanaal en TsgcWSAPI_Forex als verenigde facade die ze samenvoegt en getypeerde OnForex*-events publiceert voor prijzen, orders, posities, quotes en account-margin.

Wat is inbegrepen

Elk endpoint en elke streaming-adapter die de live Forex.com-server vandaag bedient, wordt direct ondersteund.

REST-trading
LogOn / LogOff / Ping / GetServiceStatus, plus de vijf order-endpoints: NewTradeOrder, UpdateTradeOrder, NewStopLimitOrder, UpdateStopLimitOrder en CancelOrder. Elk wordt geleverd met drie overloads — ruwe JSON, scalaire parameters of een getypeerd order-object met volledige IfDone-brackets en partial-close-ondersteuning.
Account- & marktdata
GetClientAndTradingAccount, ListOpenPositions, ListActiveStopLimitOrders, GetOrder, ListTradeHistory, ListStopLimitOrderHistory, SimulateTrade, GetMarketInformation, ListCfdMarkets, FullSearchWithTags, GetPriceBars en GetPriceTicks.
Realtime-streaming
Vijf Lightstreamer-data-adapters onder de STREAMINGALL-adapter-set — PRICES, ORDERS, QUOTES, CLIENTACCOUNTMARGIN en TRADEMARGIN. Elke adapter stuurt geparseerde records door naar een getypeerd event: OnForexPriceTick, OnForexOrderUpdate, OnForexPositionUpdate, OnForexAccountMargin, OnForexQuote.
Verenigde facade-component
TsgcWSAPI_Forex bundelt de REST-client en de interne Lightstreamer-client achter één visueel component. Roep Connect aan — REST LogOn loopt eerst, het Session-token wordt doorgegeven aan de Lightstreamer-handshake als LS_password, en de streaming start. Eén component, één aanroep.
Automatische reconnect
Wordt afgehandeld door de onderliggende WebSocket-client-WatchDog. Voor elke nieuwe verbindingspoging vernieuwt de facade het REST-sessie-token; TLCP LOOP-frames rebinden en spelen elke actieve abonnement opnieuw af nadat het netwerk wegvalt. Bij verlopen sessie wordt LogOn transparant opnieuw uitgevoerd.
Platformbereik
Delphi 7 tot en met Delphi 13, Professional-editie en hoger. Windows, macOS, Linux, iOS en Android waar de compiler dit ondersteunt. Wordt geleverd met een .NET-spiegel (net40+, .NET Standard 2.0, .NET 5-9) ondersteund door de native sgcWebSockets-DLL.

Onder de motorkap

De streaming-helft van deze integratie is het meest interessante stuk. Forex.com levert realtime-data via Lightstreamer — een proprietair streamingprotocol dat door een aantal brokers en financiële-dataleveranciers wordt gebruikt. Tot nu toe was er geen native TLCP-client voor Delphi; bestaande integraties met Lightstreamer-aangedreven aanbieders verpakken allemaal de Lightstreamer-JavaScript- of -Java-SDK via browser-embeds of externe processen.

TsgcWSPClient_Lightstreamer is een vanaf nul gemaakte native implementatie van het Lightstreamer TLCP 2.5-protocol: create_session, bind_session, control (subscribe / unsubscribe), de LOOP-auto-rebind-handler en het opnieuw afspelen van abonnementen na reconnect — aangekondigd op de lijn via de subprotocol-header Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com. Dit maakt sgcWebSockets de eerste Delphi-component-bibliotheek met native TLCP-ondersteuning, en de client is bewust generiek: hij wordt geleverd als zijn eigen herbruikbare component, niet vastgeschroefd aan Forex.com, zodat hetzelfde code-pad elke Lightstreamer-gebaseerde broker (zoals IG Markets) of dataleverancier kan aansturen.

Item-addressering. Elke Forex.com-adapter gebruikt dezelfde ID.{numericId}-itemvorm — de numerieke id is een MarketId, ClientAccountId of TradingAccountId, en de DataAdapter-selector op het SUB-frame (PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN) bepaalt welke dataset voor die id wordt gestreamd. Er zijn geen legacy PRICE.{id}-prefixes.

Order-object-patroon. Trade-requests volgen hetzelfde Kucoin-achtige ontwerp dat elders in de bibliotheek wordt gebruikt: TsgcHTTPForexTradeOrder, TsgcHTTPForexStopLimitOrder en TsgcHTTPForexCancelOrder. Bouw de order één keer, pas enkele velden aan en verstuur opnieuw. Getypeerde IfDone-brackets (gekoppelde stop / limit / guaranteed-stop / trailing-stop), Close-arrays voor partial-close-semantiek, PositionMethodId (netting versus hedging) en client-Reference-velden zijn allemaal first-class.

Code-voorbeeld

Plaats de facade op een form, stel de credentials in, koppel het prijs-tick-event, roep Connect aan en WatchMarket. Het onderstaande fragment is een compleet werkend voorbeeld.

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

Een volledige VCL-demo staat in Demos\05.Crypto\22.Forex. Hij is verdeeld over drie tabbladen:

Beschikbaarheid

Beschikbaar in de volgende sgcWebSockets-release — versie 2026.5.0. Bestaande Enterprise- en All-Access-licentiehouders ontvangen deze als onderdeel van hun abonnement; Professional-licenties ontvangen deze bij hun verlenging.

Meld je aan voor een gratis Forex.com-demo-account (inclusief UserName / Password / AppKey) op www.forex.com, met de volledige API-referentie op docs.labs.gaincapital.com.