Bybit 是主要的加密货币衍生品与现货交易所,提供永续合约、期货、现货交易和期权。TsgcWSAPI_Bybit 组件为 Bybit V5 统一 API 提供完整的 Delphi 集成——包括用于实时行情与私有事件的 WebSocket 订阅,以及用于交易、持仓管理和账户查询的全面 REST 接口。本文涵盖所有可用方法,并演示如何连接、订阅和交易。
目录
- 架构概述
- WebSocket API — 公有频道
- WebSocket API — 私有频道
- REST API — 行情数据
- REST API — 交易
- REST API — 持仓管理
- REST API — 账户
- 快速入门 — 代码示例
- 配置参考
- 提示与注意事项
架构概述
Bybit V5 API 是统一接口,将现货、线性永续、反向永续、反向期货和期权整合在同一组端点下。TsgcWSAPI_Bybit 组件同时支持以下两种通道:
- WebSocket — 实时公有行情数据(订单簿、成交、Ticker、K 线、强平)以及私有账户事件(持仓、成交回报、订单、钱包更新)。
- REST — 通过
oBybit.REST_API进行按需查询和操作,涵盖行情获取、下单与管理、持仓配置及账户信息。
通过 BybitClient 属性选择产品类别,该属性决定 WebSocket 端点:bybSpot、bybLinear、bybInverse 或 bybPerpetual。
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 | 产品类别:bybSpot、bybLinear、bybInverse 或 bybPerpetual。 |
提示与注意事项
优先使用测试网
开发时始终先使用 Bybit.TestNet := True。Bybit 测试网提供带测试资金的完整模拟环境,可在 testnet.bybit.com 创建独立的测试网 API 密钥。
统一的 V5 API
V5 API 将所有产品类型统一在同一组端点下。BybitClient 属性决定连接哪个 WebSocket 流,而 REST API 则根据请求自动路由到正确的类别。
下单便捷方法
PlaceOrder 提供对所有参数的完整控制,而 PlaceMarketOrder 和 PlaceLimitOrder 便捷方法以更少的参数覆盖最常见的场景。需要只减仓、有效期或条件触发等高级选项时,请使用完整方法。
频率限制
Bybit 对 REST 和 WebSocket 端点均实施频率限制。REST 限制通常按端点计算(例如下单每秒 10 次)。WebSocket 订阅对同时订阅的主题数量也有限制。请监控响应头和错误码以避免超限。
注意:Bybit WebSocket 连接会定期发送 ping 帧。TsgcWSAPI_Bybit 组件自动处理这些帧,无需额外代码即可保持连接活跃。
