sgcWebSockets 下一个版本——2026.5.0——新增对 Forex.com / StoneX / CityIndex 交易 API 的原生支持:REST 订单管理加上实时 Lightstreamer 流式传输,通过可直接放置到窗体上的单个 Delphi 组件即可实现。
三个新组件覆盖全部功能:用于 REST 交易的 TsgcHTTP_API_Forex、用于原生 Lightstreamer TLCP 2.5 流式传输通道的 TsgcWSPClient_Lightstreamer,以及作为统一门面的 TsgcWSAPI_Forex——它将两者串联起来并为价格、订单、持仓、报价和账户保证金分别发布类型化的 OnForex* 事件。
包含内容
当前 Forex.com 实时服务器提供的每个端点和流式传输适配器均开箱即用。
|
REST 交易 LogOn / LogOff / Ping / GetServiceStatus,以及五个订单端点:NewTradeOrder、UpdateTradeOrder、NewStopLimitOrder、UpdateStopLimitOrder 和 CancelOrder。每个端点提供三种重载——原始 JSON、标量参数或带完整 IfDone 挂单和部分平仓支持的类型化订单对象。 |
账户与市场数据 GetClientAndTradingAccount、ListOpenPositions、ListActiveStopLimitOrders、GetOrder、ListTradeHistory、ListStopLimitOrderHistory、SimulateTrade、GetMarketInformation、ListCfdMarkets、FullSearchWithTags、GetPriceBars 和 GetPriceTicks。 |
|
实时流式传输 STREAMINGALL 适配器集下的五个 Lightstreamer 数据适配器——PRICES、ORDERS、QUOTES、CLIENTACCOUNTMARGIN 和 TRADEMARGIN。每个适配器将解析后的记录分发到对应的类型化事件:OnForexPriceTick、OnForexOrderUpdate、OnForexPositionUpdate、OnForexAccountMargin、OnForexQuote。 |
统一门面组件 TsgcWSAPI_Forex 将 REST 客户端和内部 Lightstreamer 客户端聚合在一个可视化组件后面。调用 Connect——REST LogOn 先执行,其 Session 令牌作为 LS_password 转发给 Lightstreamer 握手,然后流式传输启动。一个组件,一次调用。 |
|
自动重连 由底层 WebSocket 客户端 WatchDog 处理。每次重连尝试前,门面刷新 REST 会话令牌;TLCP LOOP 帧在网络断开后重新绑定并重播所有活跃订阅。会话过期时透明地重新运行 LogOn。 |
平台支持 Delphi 7 至 Delphi 13,专业版及以上。Windows、macOS、Linux、iOS 和 Android(视编译器支持情况)。附带 .NET 镜像版本(net40+、.NET Standard 2.0、.NET 5-9),基于原生 sgcWebSockets DLL。 |
技术原理
此集成最精彩的部分是流式传输。Forex.com 通过 Lightstreamer 传递实时数据——这是一种被多家券商和金融数据供应商采用的专有流式传输协议。迄今为止,Delphi 尚无原生 TLCP 客户端;现有与 Lightstreamer 支持的平台的集成均通过浏览器嵌入或外部进程包装 Lightstreamer JavaScript 或 Java SDK 实现。
TsgcWSPClient_Lightstreamer 是从头开始对 Lightstreamer TLCP 2.5 协议的原生实现:create_session、bind_session、control(订阅/取消订阅)、LOOP 自动重绑定处理器以及重连后的订阅重播——通过 Sec-WebSocket-Protocol: TLCP-2.5.0.lightstreamer.com 子协议头在网络上声明。这使 sgcWebSockets 成为第一个具有原生 TLCP 支持的 Delphi 组件库,且该客户端被设计为通用型:作为独立可复用组件发布,不绑定到 Forex.com,因此同一代码路径可驱动任何基于 Lightstreamer 的券商(例如 IG Markets)或数据供应商。
数据项寻址。每个 Forex.com 适配器均使用相同的 ID.{numericId} 数据项形式——数字 id 为 MarketId、ClientAccountId 或 TradingAccountId,SUB 帧上的 DataAdapter 选择器(PRICES / ORDERS / QUOTES / CLIENTACCOUNTMARGIN / TRADEMARGIN)决定为该 id 流式传输哪个数据集。不存在旧式的 PRICE.{id} 前缀。
订单对象模式。交易请求遵循库中其他地方使用的 Kucoin 风格设计:TsgcHTTPForexTradeOrder、TsgcHTTPForexStopLimitOrder 和 TsgcHTTPForexCancelOrder。构建一次订单,修改几个字段,再次发送。类型化的 IfDone 挂单(附加止损/限价/保证止损/追踪止损)、用于部分平仓语义的 Close 数组、PositionMethodId(净额结算与对冲)和客户端 Reference 字段均为一等公民。
代码示例
将门面组件放置到窗体上,设置凭证,关联价格 tick 事件,调用 Connect 和 WatchMarket。以下代码片段是完整的可运行示例。
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;
演示
完整的 VCL 演示位于 Demos\05.Crypto\22.Forex,分为三个选项卡:
- 登录——UserName / Password / AppKey 字段,Connect / Disconnect / Ping,自动重连开关,实时会话/账户 ID 和事件日志。凭证持久保存到
sgcForexDemo.ini,只需输入一次。 - REST 交易——市场搜索(FullSearchWithTags)、NewTradeOrder / UpdateTradeOrder / NewStopLimitOrder / UpdateStopLimitOrder / CancelOrder、SimulateTrade、GetOrder、ListOpenPositions、ListActiveStopLimitOrders、ListTradeHistory 和 ListStopLimitOrderHistory。
- 流式传输——WatchMarket / UnwatchMarket,实时价格表格,持仓和订单列表视图通过 STREAMINGALL 适配器集实时更新,以及实时账户保证金面板(现金 / 保证金 / 净权益 / 可用资金 / 货币)。
版本可用性
将在 sgcWebSockets 下一个版本——2026.5.0——中提供。现有企业版和 All-Access 许可证持有者作为订阅的一部分获得;专业版许可证在续费时获得。
在 www.forex.com 注册免费 Forex.com 演示账户(含 UserName / Password / AppKey),完整 API 参考见 docs.labs.gaincapital.com。
链接
- 组件文档:esegece.com/help/sgcwebsockets/
- 演示文件夹:
Demos\05.Crypto\22.Forex - Forex.com 注册:www.forex.com
- API 参考:docs.labs.gaincapital.com
- Lightstreamer TLCP 2.5 规范:TLCP 2.5 PDF
- sgcWebSockets 产品页面:esegece.com
