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 :
- Login — champs UserName / Password / AppKey, Connect / Disconnect / Ping, bascule AutoReconnect, ids de session / compte en direct et un journal d'événements en cours. Les identifiants sont persistés dans
sgcForexDemo.inipour que tu n'aies à les saisir qu'une seule fois. - Trading REST — recherche de marché (FullSearchWithTags), NewTradeOrder / UpdateTradeOrder / NewStopLimitOrder / UpdateStopLimitOrder / CancelOrder, SimulateTrade, GetOrder, ListOpenPositions, ListActiveStopLimitOrders, ListTradeHistory et ListStopLimitOrderHistory.
- Streaming — WatchMarket / UnwatchMarket, grille de prix en direct, list-views de positions et ordres mises à jour en temps réel depuis l'ensemble d'adaptateurs STREAMINGALL et un panneau de marge de compte en direct (Cash / Margin / NetEquity / TradeableFunds / Currency).
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
- Documentation du composant : esegece.com/help/sgcwebsockets/
- Dossier de démo :
Demos\05.Crypto\22.Forex - Inscription Forex.com : www.forex.com
- Référence API : docs.labs.gaincapital.com
- Spécification Lightstreamer TLCP 2.5 : PDF TLCP 2.5
- Page produit sgcWebSockets : esegece.com
