Forex.com API REST & Lightstreamer

· Components

Das nächste sgcWebSockets-Release — Version 2026.5.0 — bringt native Unterstützung für die Forex.com- / StoneX- / CityIndex-Trading-API: REST-Order-Management plus Echtzeit-Streaming über Lightstreamer, alles über eine einzige Delphi-Komponente, die du auf ein Formular ziehst.

Drei neue Komponenten decken die gesamte Oberfläche ab: TsgcHTTP_API_Forex für REST-Trading, TsgcWSPClient_Lightstreamer für den nativen Lightstreamer-TLCP-2.5-Streaming-Kanal und TsgcWSAPI_Forex als vereinheitlichende Fassade, die beide verbindet und typisierte OnForex*-Ereignisse für Preise, Orders, Positionen, Quotes und Account Margin veröffentlicht.

Was enthalten ist

Jeder Endpunkt und jeder Streaming-Adapter, den der Forex.com-Live-Server heute bereitstellt, wird out of the box unterstützt.

REST-Trading
LogOn / LogOff / Ping / GetServiceStatus, plus die fünf Order-Endpunkte: NewTradeOrder, UpdateTradeOrder, NewStopLimitOrder, UpdateStopLimitOrder und CancelOrder. Jeder kommt mit drei Überladungen — rohes JSON, skalare Parameter oder ein typisiertes Order-Objekt mit vollständigen IfDone-Brackets und Unterstützung für Teil-Schließungen.
Account- & Marktdaten
GetClientAndTradingAccount, ListOpenPositions, ListActiveStopLimitOrders, GetOrder, ListTradeHistory, ListStopLimitOrderHistory, SimulateTrade, GetMarketInformation, ListCfdMarkets, FullSearchWithTags, GetPriceBars und GetPriceTicks.
Echtzeit-Streaming
Fünf Lightstreamer-Datenadapter unter dem Adapter-Set STREAMINGALLPRICES, ORDERS, QUOTES, CLIENTACCOUNTMARGIN und TRADEMARGIN. Jeder gibt geparste Datensätze an ein typisiertes Ereignis weiter: OnForexPriceTick, OnForexOrderUpdate, OnForexPositionUpdate, OnForexAccountMargin, OnForexQuote.
Vereinheitlichte Fassaden-Komponente
TsgcWSAPI_Forex bündelt den REST-Client und den internen Lightstreamer-Client hinter einer visuellen Komponente. Rufe Connect auf — REST-LogOn läuft zuerst, sein Session-Token wird im Lightstreamer-Handshake als LS_password mitgegeben, und das Streaming startet. Eine Komponente, ein Aufruf.
Automatischer Reconnect
Übernommen vom darunterliegenden WebSocket-Client WatchDog. Vor jedem Reconnect-Versuch erneuert die Fassade das REST-Session-Token; TLCP-LOOP-Frames binden neu und spielen nach einem Netzwerkabbruch jedes aktive Abonnement erneut ein. Bei Session-Ablauf läuft LogOn transparent erneut.
Plattform-Reichweite
Delphi 7 bis Delphi 13, Professional Edition aufwärts. Windows, macOS, Linux, iOS und Android, sofern der Compiler es unterstützt. Mit einem .NET-Pendant (net40+, .NET Standard 2.0, .NET 5–9), das auf der nativen sgcWebSockets-DLL aufsetzt.

Unter der Haube

Die Streaming-Hälfte dieser Integration ist das spannendste Stück. Forex.com liefert Echtzeitdaten über Lightstreamer aus — ein proprietäres Streaming-Protokoll, das von etlichen Brokern und Finanzdaten-Anbietern eingesetzt wird. Bisher gab es keinen nativen TLCP-Client für Delphi; bestehende Integrationen mit Lightstreamer-Plattformen wrappen alle das Lightstreamer-JavaScript- oder -Java-SDK per Browser-Einbettung oder externen Prozess.

TsgcWSPClient_Lightstreamer ist eine von Grund auf neue native Implementierung des Lightstreamer-TLCP-2.5-Protokolls: create_session, bind_session, control (subscribe / unsubscribe), der LOOP-Auto-Rebind-Handler und das Replay von Abonnements nach Reconnect — angekündigt auf der Leitung über den Subprotokoll-Header Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com. Damit ist sgcWebSockets die erste Delphi-Komponentenbibliothek mit nativer TLCP-Unterstützung, und der Client ist bewusst generisch: er kommt als eigenständige, wiederverwendbare Komponente und ist nicht an Forex.com gekoppelt, sodass derselbe Code-Pfad jeden Lightstreamer-basierten Broker (etwa IG Markets) oder Datenanbieter ansteuert.

Item-Adressierung. Jeder Forex.com-Adapter nutzt dieselbe Item-Form ID.{numericId} — die numerische ID ist eine MarketId, ClientAccountId oder TradingAccountId, und der DataAdapter-Selektor im SUB-Frame (PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN) entscheidet, welches Dataset für diese ID gestreamt wird. Es gibt keine veralteten PRICE.{id}-Präfixe.

Order-Objekt-Muster. Trade-Requests folgen demselben Kucoin-artigen Design, das die Bibliothek auch sonst verwendet: TsgcHTTPForexTradeOrder, TsgcHTTPForexStopLimitOrder und TsgcHTTPForexCancelOrder. Order einmal bauen, ein paar Felder anpassen, erneut senden. Typisierte IfDone-Brackets (Stop / Limit / Guaranteed-Stop / Trailing-Stop), Close-Arrays für Teil-Schließungen, PositionMethodId (Netting vs. Hedging) und Client-Reference-Felder sind alle erstklassig unterstützt.

Code-Beispiel

Lege die Fassade auf ein Formular, setze die Zugangsdaten, verbinde das Price-Tick-Ereignis und rufe Connect und WatchMarket auf. Das Snippet unten ist ein vollständiges, funktionierendes Beispiel.

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

Eine vollständige VCL-Demo liegt unter Demos\05.Crypto\22.Forex. Sie ist in drei Tabs aufgeteilt:

Verfügbarkeit

Verfügbar im nächsten sgcWebSockets-Release — Version 2026.5.0. Bestehende Enterprise- und All-Access-Lizenznehmer erhalten es im Rahmen ihres Abonnements; Professional-Lizenzen bekommen es mit ihrer Verlängerung.

Registriere dich für ein kostenloses Forex.com-Demo-Konto (inklusive UserName / Password / AppKey) unter www.forex.com; die vollständige API-Referenz findest du unter docs.labs.gaincapital.com.