API OKX

OKX

 

支持的 API

 

属性

WebSocket 频道分为两类:公开频道和私有频道。

 

 

您可以在 OKX 属性中配置以下属性。

 

 

连接

当客户端成功连接到 OKX 服务器时,将触发 OnOKXConnect 事件。如果连接时出现任何错误,将触发 OnOKXError 事件并附带错误详情。

OnOKXConnect 事件触发后,您即可开始向 OKX 服务器发送接收消息

 


oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
  DoLog('#OKX Connected');
end;
procedure OnOKXError(Sender: TObject; aCode, aMessage, aRawMessage: string);
begin
  DoLog('#error: ' + aMessage);
end;

公共频道

websocket 数据流提供订单和交易的实时市场数据更新。websocket 数据流有一些公共频道,如 ticker、trades 等。

 

您可以订阅以下公共频道

 

方法 描述
SubscribeInstruments 首次订阅后将推送完整的合约列表。此后,当合约状态发生任何变化(如期货交割、期权行权、新合约/交易对上市、交易暂停等)时,将推送相关合约信息。
SubscribeTicker 检索最新成交价、买价、卖价和 24 小时交易量。数据每 100 毫秒推送一次。
SubscribeOpenInterest 检索未平仓合约数量。数据每 3 秒推送一次。
SubscribeCandlestick 检索某个合约的K线数据,推送频率最快为 500ms 推送一次数据。
SubscribeTrades 获取近期成交数据。每当有成交发生时,数据将被推送。
SubscribeEstimatedPrices

检索期货合约和期权的预计交割/行权价格。

仅在交割/行权前一小时推送预计交割/行权价格,有价格变动时推送。

SubscribeMarkPrice 检索标记价格。当标记价格发生变化时,每 200 毫秒推送一次数据;当标记价格未发生变化时,每 10 秒推送一次数据。
SubscribeMarkPriceCandlestick 检索标记价格的 K 线数据。数据每 500 毫秒推送一次。
SubscribePriceLimit 获取仪器的最高买入价和最低卖出价。当限价有变化时,数据将每 5 秒推送一次;如果限价无变化,则不推送。
SubscribeOrderBook

检索订单簿数据。

books 用于 400 档深度,book5 用于 5 档深度,bbo-tbt 用于逐笔 1 档深度,books50-l2-tbt 用于逐笔 50 档深度,books-l2-tbt 用于逐笔 400 档深度。

  • books:初始完整快照中将推送 400 个深度级别。当订单簿发生变化时,每 100 毫秒推送一次增量数据。
  • books5:每次推送 5 个深度级别。当订单簿发生变化时,每 100 毫秒推送一次数据。
  • bbo-tbt:每次推送 1 个深度级别。当订单簿发生变化时,每 10 毫秒推送一次数据。
  • books-l2-tbt:初始完整快照中将推送 400 个深度级别。当订单簿发生变化时,每 10 毫秒推送一次增量数据。
  • books50-l2-tbt:初始完整快照中将推送 50 个深度级别。当订单簿发生变化时,每 10 毫秒推送一次增量数据。如果 asks 或 bids 为空数组,则表示 400 个深度级别发生了变化,而不是 50 个深度级别。如果您在本地维护订单簿数据,请忽略空的 asks 和 bids。
SubscribeOptionSummary 检索所有 OPTION 合约的详细定价信息。数据将一次性推送。
SubscribeFundingRate 检索资金费率。数据将在 30 秒至 90 秒内推送。
SubscribeIndexCandlestick 获取指数的 K 线数据。每 500 毫秒推送一次数据。
SubscribeIndexTicker 获取指数行情数据
SubscribeStatus 获取系统维护状态,并在系统维护状态变化时推送。首次订阅:"推送最新变更数据";每次状态变化时,推送变更内容。
SubscribePublicStructureBlockTrades 每当发生大宗交易时,数据将被推送。
SubscribeBlockTickers 检索最近 24 小时内的最新大宗交易量。数据将在交易执行事件触发时推送。此外,还将根据订阅粒度每 5 分钟推送一次。
SubscribeAllTrades 检索所有交易数据。每当发生交易时,数据将被推送。
SubscribeLiquidationOrders 获取强制平仓订单。当发生强制平仓订单时,将推送数据。
SubscribeADLWarning 检索 ADL 预警数据。当自动减仓风险增加时,将推送数据。
SubscribeEconomicCalendar 检索经济日历事件。当经济事件有更新时,数据将被推送。
SubscribePublicBlockTrades 获取公开大宗交易数据。每当发生大宗交易时,数据将被推送。
SubscribeOptionTrades 检索期权交易数据。每当发生期权交易时,数据将被推送。
SubscribeCallAuctionDetails 获取集合竞价详情。当集合竞价信息更新时,数据将被推送。

 


oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
  oOKX.SubscribeInstruments(okxitFutures);
end;

私有频道

包括账户频道、订单频道和仓位频道等,需要登录。

 

您可以订阅以下私有频道

 

方法 描述
SubscribeAccount 获取账户信息。当下单、撤单、成交等事件触发时,数据将被推送。同时也会按照订阅粒度定期推送。
SubscribePositions 获取持仓信息。初始快照将根据订阅粒度推送。当下单/撤单等事件触发时,数据将被推送,也会根据订阅粒度定期推送。
SubscribeBalanceAndPosition 获取账户余额和持仓信息。当发生成交、资金划转等事件时,数据将被推送。
SubscribeOrders 检索订单信息。首次订阅时不会推送数据;仅在下单/撤单等事件触发时才推送数据。
SubscribeOrdersAlgo 获取算法订单(包括触发订单、OCO 订单、条件订单)。首次订阅时不推送数据,仅在下单/撤单等事件触发时才推送数据。
SubscribeAdvanceAlgo

检索高级算法订单(包括冰山订单、TWAP 订单、追踪订单)。首次订阅时推送数据,下单/撤单等事件触发时也会推送数据。

SubscribePositionRisk 此推送频道仅用作风险警告,不建议作为策略交易的风险判断依据。
在市场波动不剧烈的情况下,有可能发生在推送此消息的同时,持仓已被强制平仓的情况。
SubscribeAccountGreeks 检索账户希腊值信息。当持仓增减或账户中的现金余额发生变化等事件触发时,数据将被推送;同时也会按照订阅粒度定期推送。
SubscribeRfqs 检索 Rfq 列表。
SubscribeQuotes

获取报价。

SubscribePrivateStructureBlockTrades 检索结构化大宗交易。
SubscribeSpotGridAlgoOrders 检索现货网格算法订单。首次订阅时会推送数据。当下单/撤单等事件触发时会推送数据。
SubscribeContactGridAlgoOrders 获取合约网格算法订单。首次订阅时会推送数据,下单/撤单等事件触发时也会推送数据。
SubscribeGridPositions 获取网格持仓。首次订阅时会推送数据,下单/撤单等事件触发时也会推送数据。
SubscribeGridSubOrders 获取网格子订单。首次订阅时会推送数据,下单等事件触发时也会推送数据。
SubscribeFills 检索已成交订单数据。当订单成交时,数据将被推送。
SubscribeDepositInfo 检索存款信息。当存款状态更新时,数据将被推送。
SubscribeWithdrawalInfo 检索提款信息。当提款状态更新时,数据将被推送。

oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
  oOKX.SubscribeOrders(okxitFutures, 'BTC-USD', 'BTC-USD-200329');
end;

 

交易

WebSocket 交易需要身份验证

 

只有在资金充足的情况下才能下单。以下是请求参数表:

 

参数 类型 必填 描述
id String 消息的唯一标识符
由客户端提供。它将在响应消息中返回,用于标识对应的请求。
由大小写字母数字组合、纯数字或纯字母组成,最长 32 个字符。
> instId String 工具 ID,例如 BTC-USD-190927-5000-C
> tdMode String 交易模式
保证金模式 isolated cross
非保证金模式 cash
> ccy String 保证金货币
仅适用于 cross MARGIN 中的 Single-currency margin 订单。
> clOrdId String 客户端提供的订单 ID
由区分大小写的字母数字组合、纯数字或纯字母组成,最多 32 个字符。
> 标签 String 订单标签
由区分大小写的字母数字字符组合而成,全数字或全字母,长度不超过 16 个字符。
> 侧 String 订单方向, buy sell
> posSide String 可选 持仓方向
net 模式下默认为 net
long/short 模式下为必填项,只能为 long short
仅适用于 FUTURES/SWAP
> ordType String 订单类型
market:市价单
limit:限价单
post_only:只挂单
fok:全部成交或取消订单
ioc:立即成交或取消订单
optimal_limit_ioc :带立即成交或取消的市价单
> sz String 买入或卖出的数量。
> px String 可选 价格
仅适用于 limitpost_onlyfokioc 订单。
> reduceOnly Boolean 是否仅减少仓位, true false,默认为 false
仅适用于 MARGIN 订单,以及处于 net 模式下的 FUTURES/SWAP 订单
仅适用于 Single-currency margin Multi-currency margin
> tgtCcy String 数量类型
base_ccy:基础货币,quote_ccy:计价货币
仅适用于以市价单交易的 SPOT 以市价单
买入默认为 quote_ccy 卖出默认为 base_ccy
> banAmend Boolean 是否禁止修改现货订单,true 或 false,默认为 false。
当 banAmend 为 true 时,余额不足将导致下单失败。仅适用于 SPOT 市价单。

 

 

下单示例

 

只有当您拥有足够的资金时,才能下单。


// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);

 

取消订单示例

 

取消未完成的订单。


TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');

 

修改订单

 

修改未完成的订单。


TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);

批量交易操作

WebSocket Trade API 还支持一次性下达、取消和修改多个订单的批量操作。这些操作需要身份验证

方法 描述
BatchPlaceOrders 在单个请求中下多个订单。每次最多可下 20 个订单。
BatchCancelOrders 在单次请求中取消多个订单。每次最多可取消 20 个订单。
BatchAmendOrders 在单个请求中修改多个未完成的订单。每次最多可修改 20 个订单。
MassCancelOrders 批量取消特定工具类型的所有挂单。