Bybit API 更新 sgcWebSockets

· 功能

Bybit 是主要的加密货币衍生品与现货交易所,提供永续合约、期货、现货交易和期权。TsgcWSAPI_Bybit 组件为 Bybit V5 统一 API 提供完整的 Delphi 集成——包括用于实时行情与私有事件的 WebSocket 订阅,以及用于交易、持仓管理和账户查询的全面 REST 接口。本文涵盖所有可用方法,并演示如何连接、订阅和交易。

目录

架构概述

Bybit V5 API 是统一接口,将现货、线性永续、反向永续、反向期货和期权整合在同一组端点下。TsgcWSAPI_Bybit 组件同时支持以下两种通道:

通过 BybitClient 属性选择产品类别,该属性决定 WebSocket 端点:bybSpotbybLinearbybInversebybPerpetual

WebSocket API — 公有频道

公有频道无需认证即可提供实时行情数据。每个订阅方法都有对应的取消订阅方法。

订阅 取消订阅 说明
SubscribeOrderBook UnSubscribeOrderBook 实时订单簿深度快照与增量更新。
SubscribeTrade UnSubscribeTrade 交易所实时成交推送。
SubscribeTicker UnSubscribeTicker 24 小时滚动窗口 Ticker 统计(价格、成交量、涨跌幅)。
SubscribeKLine UnSubscribeKLine 指定周期的实时 K 线更新。
SubscribeLiquidation UnSubscribeLiquidation 全市场强平事件。
SubscribeLT_KLine UnSubscribeLT_KLine 杠杆代币 K 线更新。
SubscribeLT_Ticker UnSubscribeLT_Ticker 杠杆代币 Ticker 数据。
SubscribeLT_Nav UnSubscribeLT_Nav 杠杆代币净值更新。

WebSocket API — 私有频道

私有频道需通过 API 密钥和私钥进行认证,提供账户活动的实时更新。

订阅 取消订阅 说明
SubscribePosition UnSubscribePosition 实时持仓更新(数量、开仓价、盈亏、杠杆)。
SubscribeExecution UnSubscribeExecution 订单成交确认推送。
SubscribeOrder UnSubscribeOrder 订单状态变更(新建、部分成交、全成交、已撤销)。
SubscribeWallet UnSubscribeWallet 所有币种的钱包余额变动。
SubscribeGreek UnSubscribeGreek 期权希腊值更新(delta、gamma、theta、vega)。
SubscribeDcp UnSubscribeDcp 断线保护事件,用于监控连接健康状态。

REST API — 行情数据

行情数据端点为公有端点,无需认证。通过 oBybit.REST_API 访问。

方法 说明
GetServerTime 返回 Bybit 服务器时间戳。
GetKLine 返回指定交易对与周期的历史 K 线数据。
GetMarkPriceKLine 返回标记价格 K 线数据(用于盈亏与强平计算)。
GetIndexPriceKLine 返回指数价格 K 线数据。
GetPremiumIndexPriceKLine 返回永续合约的溢价指数价格 K 线数据。
GetInstrumentsInfo 返回合约规格(最小价格变动单位、合约面值、杠杆上限等)。
GetOrderBook 返回指定深度的当前订单簿快照。
GetTickers 返回一个或所有交易对的最新 Ticker 信息。
GetFundingRateHistory 返回永续合约的历史资金费率记录。
GetPublicRecentTradingHistory 返回指定交易对的最新公开成交记录。
GetOpenInterest 返回衍生品合约的未平仓量数据。
GetHistoricalVolatility 返回期权的历史波动率。
GetInsurance 返回保险基金余额历史记录。
GetRiskLimit 返回指定交易对的风险限额档次。
GetDeliveryPrice 返回已到期期货和期权的交割价格。
GetLongShortRatio 返回指定交易对和周期的多空比。

REST API — 交易

交易端点需要具备相应权限的 API 密钥认证,支持下单、修改和撤销订单。

方法 说明
PlaceOrder 以完整参数控制下新单(类型、方向、价格、数量、有效期等)。
PlaceMarketOrder 便捷方法,以最优价立即成交市价单。
PlaceLimitOrder 便捷方法,以指定价格下限价单。
AmendOrder 修改已有的挂单(价格、数量或其他参数)。
CancelOrder 按订单 ID 撤销指定挂单。
GetOpenOrders 返回当前所有未成交的挂单。
CancelAllOrders 撤销所有挂单,可按交易对或类别过滤。
GetOrderHistory 返回指定时间范围内的历史订单(已成交、已撤销、已拒绝)。

REST API — 持仓管理

持仓端点支持查询和配置衍生品持仓,包括杠杆、保证金模式、风险限额及止盈止损设置。

方法 说明
GetPositionInfo 返回当前持仓详情(数量、开仓价、未实现盈亏、保证金)。
SetLeverage 设置指定交易对的杠杆倍数。
SwitchCrossIsolatedMargin 在全仓保证金与逐仓保证金模式之间切换。
SetTPSLMode 配置止盈/止损模式(全仓或部分仓位)。
SwitchPositionMode 在单向持仓模式与双向持仓模式之间切换。
SetRiskLimit 设置交易对的风险限额档次,影响最大杠杆倍数。
SetTradingStop 为现有持仓设置追踪止损、止盈或止损。
SetAutoAddMargin 启用或禁用逐仓保证金的自动追加保证金功能。
AddOrReduceMargin 手动向逐仓保证金持仓追加或减少保证金。
GetExecution 返回交易的成交/执行记录。
GetClosedPNL 返回已平仓的盈亏记录。
ConfirmNewRiskLimit 在需要追加保证金时确认风险限额变更。

REST API — 账户

账户端点提供钱包余额、账户配置和交易日志。

方法 说明
GetWalletBalance 返回所有币种或指定账户类型的钱包余额。
GetAccountInfo 返回统一账户信息(保证金模式、账户状态等)。
GetTransactionLog 返回交易历史(充值、提现、交易、资金费用等)。

快速入门 — 代码示例

以下示例演示完整流程:连接到 Bybit 线性永续端点,通过 REST 查询 Ticker 数据,下限价单,查询钱包余额,并通过 WebSocket 订阅实时成交更新。

var
  oClient: TsgcWebSocketClient;
  oBybit: TsgcWSAPI_Bybit;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  // Create the Bybit API component
  oBybit := TsgcWSAPI_Bybit.Create(nil);
  oBybit.Client := oClient;
  // Configure API credentials
  oBybit.Bybit.ApiKey := 'your_api_key';
  oBybit.Bybit.ApiSecret := 'your_api_secret';
  // Select the product category
  oBybit.BybitClient := bybLinear;
  // Connect to the WebSocket
  oClient.Active := True;
  // REST: Get ticker information for BTCUSDT
  ShowMessage(oBybit.REST_API.GetTickers('BTCUSDT'));
  // REST: Place a limit buy order
  ShowMessage(oBybit.REST_API.PlaceLimitOrder(bbsBuy, 'BTCUSDT', 0.001, 30000));
  // REST: Get wallet balance
  ShowMessage(oBybit.REST_API.GetWalletBalance);
  // WebSocket: Subscribe to real-time trades for BTCUSDT
  oBybit.SubscribeTrade('BTCUSDT');
end;

REST 与 WebSocket 对比

按需操作(如下单、查询余额、获取历史数据)使用 REST API;持续低延迟数据流使用 WebSocket 订阅。两者可同时使用——REST 调用独立于 WebSocket 连接状态。

配置参考

属性 类型 说明
Bybit.ApiKey String 用于认证请求的 Bybit API 密钥。
Bybit.ApiSecret String 用于请求签名的 Bybit API 私钥。
Bybit.TestNet Boolean 设为 True 连接 Bybit 测试网环境;False 为主网。
Bybit.SignatureExpires Integer HMAC 签名的过期时间(秒),默认值通常已足够。
BybitClient Enum 产品类别:bybSpotbybLinearbybInversebybPerpetual

提示与注意事项

优先使用测试网

开发时始终先使用 Bybit.TestNet := True。Bybit 测试网提供带测试资金的完整模拟环境,可在 testnet.bybit.com 创建独立的测试网 API 密钥。

统一的 V5 API

V5 API 将所有产品类型统一在同一组端点下。BybitClient 属性决定连接哪个 WebSocket 流,而 REST API 则根据请求自动路由到正确的类别。

下单便捷方法

PlaceOrder 提供对所有参数的完整控制,而 PlaceMarketOrderPlaceLimitOrder 便捷方法以更少的参数覆盖最常见的场景。需要只减仓、有效期或条件触发等高级选项时,请使用完整方法。

频率限制

Bybit 对 REST 和 WebSocket 端点均实施频率限制。REST 限制通常按端点计算(例如下单每秒 10 次)。WebSocket 订阅对同时订阅的主题数量也有限制。请监控响应头和错误码以避免超限。

注意:Bybit WebSocket 连接会定期发送 ping 帧。TsgcWSAPI_Bybit 组件自动处理这些帧,无需额外代码即可保持连接活跃。