OKX API 更新 sgcWebSockets

· 功能
OKX WebSocket 交易 API 与 Delphi 集成

TsgcWSAPI_OKX 组件通过统一的 WebSocket 接口为 OKX 交易所提供全面的 Delphi 访问支持。它支持公共市场数据流、私有账户频道以及直接交易操作(包括市价单和限价单),所有功能均通过单个组件实现。本指南详细介绍了每个可用方法和配置属性,并提供可运行的代码示例,帮助您在 Delphi 中开始 OKX 交易。

目录

WebSocket 公共频道

公共频道无需身份验证即可向所有连接的客户端推送市场数据。这些频道涵盖合约信息、行情、订单簿、成交、K 线、资金费率等内容。每个订阅方法都有对应的取消订阅方法。

市场数据频道

方法 描述
SubscribeInstruments 订阅合约更新(新上市、下市、状态变更)。
SubscribeTicker 订阅指定合约的实时行情数据。
SubscribeOpenInterest 订阅期货和永续合约的持仓量更新。
SubscribeCandlestick 订阅指定时间间隔的 K 线数据。
SubscribeTrades 订阅指定合约的实时成交数据。
SubscribeOrderBook 订阅可配置深度的订单簿更新。

价格与指数频道

方法 描述
SubscribeEstimatedPrices 订阅期权和期货的预估交割/行权价格。
SubscribeMarkPrice 订阅用于保证金和盈亏计算的标记价格更新。
SubscribeMarkPriceCandlestick 订阅基于标记价格的 K 线数据。
SubscribePriceLimit 订阅合约的涨跌停价格(价格区间)更新。
SubscribeIndexCandlestick 订阅基于指数价格的 K 线数据。
SubscribeIndexTicker 订阅指定指数的行情更新。
SubscribeFundingRate 订阅永续合约的资金费率更新。

期权与系统频道

方法 描述
SubscribeOptionSummary 订阅期权摘要数据(希腊值、波动率、持仓量)。
SubscribeStatus 订阅系统状态更新(维护、中断)。
SubscribePublicStructureBlockTrades 订阅公共结构化大宗交易数据。
SubscribeBlockTickers 订阅大宗交易行情更新。
注意:上述每个 Subscribe 方法都有对应的 UnSubscribe 方法(如 UnSubscribeTicker),用于停止接收该频道的更新。

WebSocket 私有频道

私有频道需要身份验证,可实时推送账户状态、持仓、订单和算法交易活动的更新。订阅这些频道前,请将 OKX.IsPrivate := True 并提供有效的 API 凭证。

账户与持仓频道

方法 描述
SubscribeAccount 实时订阅账户余额和权益更新。
SubscribePositions 订阅持仓更新(开仓、平仓、数量变化)。
SubscribeBalanceAndPosition 通过单一数据流订阅余额和持仓的综合更新。
SubscribePositionRisk 订阅持仓风险预警更新(接近强平)。
SubscribeAccountGreeks 订阅账户级别的期权持仓希腊值更新。

订单与算法频道

方法 描述
SubscribeOrders 订阅订单状态更新(已下单、已成交、已撤销、部分成交)。
SubscribeOrdersAlgo 订阅算法订单更新(触发、止盈/止损、追踪止损)。
SubscribeAdvanceAlgo 订阅高级算法订单更新(冰山单、TWAP)。

询价与大宗交易频道

方法 描述
SubscribeRfqs 订阅大宗交易的询价(RFQ)更新。
SubscribeQuotes 订阅响应询价的报价更新。
SubscribePrivateStructureBlockTrades 订阅私有结构化大宗交易更新。

网格交易频道

方法 描述
SubscribeSpotGridAlgoOrders 订阅现货网格算法订单更新。
SubscribeContactGridAlgoOrders 订阅合约网格算法订单更新。
SubscribeGridPositions 订阅网格交易持仓更新。
SubscribeGridSubOrders 订阅网格策略内单个子订单的更新。

WebSocket 交易操作

OKX 支持直接通过 WebSocket 连接下单和管理订单,与 REST API 调用相比延迟更低。这些方法需要身份验证。

方法 描述
PlaceOrder 以完全控制所有订单参数的方式下达新订单。
PlaceMarketOrder 以最优可用价格立即执行的市价单。
PlaceLimitOrder 以指定价格下限价单,仅在市场达到该价格时执行。
CancelOrder 通过订单 ID 撤销现有订单。
AmendOrder 修改现有订单(无需撤销并重新下单即可修改价格或数量)。
注意:基于 WebSocket 的交易延迟明显低于基于 REST 的下单方式。OKX 优先处理 WebSocket 订单,是延迟敏感型策略的首选方法。

代码示例

以下示例演示如何创建和配置 TsgcWSAPI_OKX 组件、通过 API 进行身份验证、订阅行情数据、监控订单,以及直接通过 WebSocket 连接下市价单和限价单。

var
  oClient: TsgcWebSocketClient;
  oOKX: TsgcWSAPI_OKX;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  oOKX := TsgcWSAPI_OKX.Create(nil);
  oOKX.Client := oClient;
  // Configure API credentials
  oOKX.OKX.ApiKey := 'your_api_key';
  oOKX.OKX.ApiSecret := 'your_api_secret';
  oOKX.OKX.Passphrase := 'your_passphrase';
  oOKX.OKX.IsPrivate := True;
  // Connect to OKX
  oClient.Active := True;
  // Subscribe to BTC-USDT ticker
  oOKX.SubscribeTicker('BTC-USDT');
  // Subscribe to order updates for spot trading
  oOKX.SubscribeOrders(okxitSpot);
  // Place a market buy order
  oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
  // Place a limit buy order
  oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;

处理 WebSocket 事件

分配一个事件处理程序来处理传入的 WebSocket 消息。该事件为每次更新提供频道名称和 JSON 有效载荷。

procedure TForm1.OnOKXEvent(Sender: TObject;
  const aChannel, aData: string);
begin
  // aChannel identifies the subscription (e.g., 'tickers', 'orders')
  // aData contains the JSON payload
  Memo1.Lines.Add(aChannel + ': ' + aData);
end;

使用模拟交易模式

OKX 提供用于测试的模拟交易环境。连接前将 OKX.IsDemo := True 即可启用。模拟模式连接到拥有模拟余额的独立端点,让您无需冒真实资金风险即可测试交易逻辑。

// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;

配置与注意事项

配置属性

所有配置均通过组件的 OKX 属性访问。

属性 类型 描述
OKX.ApiKey String 您的 OKX API 密钥。请从 OKX API 管理页面生成。
OKX.ApiSecret String 您的 OKX API 密钥。请妥善保管,切勿在客户端代码中暴露。
OKX.Passphrase String 创建 API 密钥时设置的密码短语。所有已验证请求均需提供。
OKX.IsDemo Boolean 设置为 True 时,连接到使用模拟资金的 OKX 模拟交易环境。默认为 False
OKX.IsPrivate Boolean 设置为 True 时,启用 WebSocket 连接上的身份验证。私有频道和交易操作需要此设置。默认为 False

重要注意事项

安全性:切勿将 API 密钥、密钥或密码短语直接硬编码到生产代码中。请使用安全的配置文件或环境变量来存储凭证。