API REST Forex.com et Lightstreamer

· Composants

La prochaine version de sgcWebSockets — la version 2026.5.0 — ajoute une prise en charge native de l'API de trading Forex.com / StoneX / CityIndex : gestion des ordres REST plus streaming Lightstreamer en temps réel, le tout livré via un seul composant Delphi que tu peux poser sur un formulaire.

Trois nouveaux composants couvrent l'ensemble : TsgcHTTP_API_Forex pour le trading REST, TsgcWSPClient_Lightstreamer pour le canal de streaming natif Lightstreamer TLCP 2.5 et TsgcWSAPI_Forex comme façade unifiée qui les relie et publie des événements typés OnForex* pour les prix, les ordres, les positions, les quotes et la marge de compte.

Ce qui est inclus

Chaque endpoint et adaptateur de streaming que le serveur Forex.com en direct sert aujourd'hui est pris en charge nativement.

Trading REST
LogOn / LogOff / Ping / GetServiceStatus, plus les cinq endpoints d'ordre : NewTradeOrder, UpdateTradeOrder, NewStopLimitOrder, UpdateStopLimitOrder et CancelOrder. Chacun est livré avec trois surcharges — JSON brut, paramètres scalaires ou un objet ordre typé avec support complet des brackets IfDone et clôture partielle.
Données de compte et de marché
GetClientAndTradingAccount, ListOpenPositions, ListActiveStopLimitOrders, GetOrder, ListTradeHistory, ListStopLimitOrderHistory, SimulateTrade, GetMarketInformation, ListCfdMarkets, FullSearchWithTags, GetPriceBars et GetPriceTicks.
Streaming en temps réel
Cinq adaptateurs de données Lightstreamer sous l'ensemble d'adaptateurs STREAMINGALL — PRICES, ORDERS, QUOTES, CLIENTACCOUNTMARGIN et TRADEMARGIN. Chacun distribue les enregistrements parsés vers un événement typé : OnForexPriceTick, OnForexOrderUpdate, OnForexPositionUpdate, OnForexAccountMargin, OnForexQuote.
Composant façade unifié
TsgcWSAPI_Forex agrège le client REST plus le client Lightstreamer interne derrière un seul composant visuel. Appelle Connect — le LogOn REST s'exécute en premier, son jeton Session est transmis au handshake Lightstreamer comme LS_password et le streaming démarre. Un composant, un appel.
Auto-reconnexion
Géré par le WatchDog du client WebSocket sous-jacent. Avant chaque tentative de reconnexion, la façade rafraîchit le jeton de session REST ; les trames LOOP TLCP rebindent et rejouent chaque abonnement actif après une coupure réseau. L'expiration de session relance LogOn de manière transparente.
Portée des plateformes
Delphi 7 à Delphi 13, édition Professional et supérieure. Windows, macOS, Linux, iOS et Android là où le compilateur le prend en charge. Livré avec un miroir .NET (net40+, .NET Standard 2.0, .NET 5-9) soutenu par la DLL native sgcWebSockets.

Sous le capot

La partie streaming de cette intégration est la plus intéressante. Forex.com diffuse les données en temps réel via Lightstreamer — un protocole de streaming propriétaire utilisé par un certain nombre de brokers et de fournisseurs de données financières. Jusqu'à présent, il n'existait pas de client TLCP natif pour Delphi ; les intégrations existantes avec les plateformes propulsées par Lightstreamer enveloppent toutes le SDK JavaScript ou Java Lightstreamer via des embeds de navigateur ou des processus externes.

TsgcWSPClient_Lightstreamer est une implémentation native partant de zéro du protocole Lightstreamer TLCP 2.5 : create_session, bind_session, control (subscribe / unsubscribe), le gestionnaire de rebind automatique LOOP et le replay d'abonnement après reconnexion — annoncé sur le réseau via l'en-tête de sous-protocole Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com. Cela fait de sgcWebSockets la première bibliothèque de composants Delphi avec une prise en charge TLCP native, et le client est délibérément générique : il est livré comme son propre composant réutilisable, non soudé à Forex.com, donc le même chemin de code anime n'importe quel broker (IG Markets par exemple) ou fournisseur de données basé sur Lightstreamer.

Adressage des items. Chaque adaptateur Forex.com utilise la même forme d'item ID.{numericId} — l'id numérique est un MarketId, ClientAccountId ou TradingAccountId, et le sélecteur DataAdapter sur la trame SUB (PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN) décide quel jeu de données est diffusé pour cet id. Il n'y a pas de préfixes hérités PRICE.{id}.

Motif d'objet ordre. Les requêtes de trade suivent le même design de style Kucoin utilisé ailleurs dans la bibliothèque : TsgcHTTPForexTradeOrder, TsgcHTTPForexStopLimitOrder et TsgcHTTPForexCancelOrder. Construis l'ordre une fois, modifie quelques champs, envoie à nouveau. Les brackets IfDone typés (stop / limit / guaranteed-stop / trailing-stop attachés), les tableaux Close pour la sémantique de clôture partielle, PositionMethodId (netting vs hedging) et les champs Reference client sont tous des citoyens de première classe.

Exemple de code

Pose la façade sur un formulaire, définis les identifiants, branche l'événement de price tick, appelle Connect et WatchMarket. L'extrait ci-dessous est un exemple complet et fonctionnel.

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;

Démo

Une démo VCL complète se trouve dans Demos\05.Crypto\22.Forex. Elle est répartie sur trois onglets :

Disponibilité

Disponible dans la prochaine version de sgcWebSockets — la version 2026.5.0. Les détenteurs existants de licences Enterprise et All-Access la reçoivent dans le cadre de leur abonnement ; les licences Professional la reçoivent avec leur renouvellement.

Inscris-toi pour un compte démo Forex.com gratuit (y compris UserName / Password / AppKey) sur www.forex.com, avec la référence API complète sur docs.labs.gaincapital.com.

Liens