秒懂Bybit API!快速搭建高效交易系统?

2025-03-06 11:02:09 32

Bybit API 接口详解

本文档旨在提供一份详尽的Bybit API接口解析,并提供实际应用指导,助力开发者迅速掌握Bybit API的使用技巧,从而能够构建出稳定、高效且可靠的量化交易系统及相关应用。本指南深入研究了Bybit官方API中文文档,提取了核心信息,并在此基础上进行了细致的补充和完善,务求内容准确、表达清晰,方便开发者理解和应用。我们将重点关注API的关键功能、请求参数、响应格式,以及在实际交易场景中的最佳实践。

账户信息接口

获取账户资产信息 (GET /v5/account/wallet-balance)

该接口允许用户查询其在 Bybit 交易所的账户资产详细信息。通过此接口,用户可以实时获取不同币种的可用余额、已冻结金额、总权益等关键数据,从而更好地管理和监控其账户的资金状况。该接口支持查询单个或多个币种的资产信息。若未指定币种,则返回所有币种的资产数据。

具体来说,该接口返回的信息包括但不限于:

  • 可用余额 (Available Balance): 指用户可以立即用于交易或提现的资金数量。
  • 已冻结金额 (Frozen Amount): 指由于挂单、保证金或其他原因而被暂时冻结的资金数量,不可用于交易或提现。
  • 总权益 (Total Equity): 指账户中所有资产的总价值,通常以某个计价货币(如 USDT)表示。
  • 币种 (Coin): 指资产所属的加密货币类型,如 BTC、ETH、LTC 等。

通过定期调用此接口,用户可以构建自己的资产监控系统,及时了解账户资金变动情况,并根据市场变化做出相应的投资决策。 该接口提供的数据也可用于风险管理和财务分析。

请求参数:

  • accountType (String, 可选): 账户类型,用于指定需要查询的账户类型。有效枚举值包括: SPOT (现货账户),用于进行现货交易的账户; CONTRACT (合约账户),用于交易永续合约、交割合约等合约产品的账户; OPTION (期权账户),用于交易期权产品的账户; UNIFIED (统一账户),支持多种资产和交易类型的综合账户; FUND (资金账户),用于存储资金,通常用于理财或质押等用途。如果未指定此参数,则API将返回所有账户类型的资产信息汇总。
  • coin (String, 可选): 币种,指定需要查询的币种。例如, BTC 代表比特币, ETH 代表以太坊。如果不指定此参数,API将返回所有币种的资产信息。请注意,这里需要使用币种的交易代码,区分于币种的全称。
  • memberId (Long, 可选): 子账户的 Member ID,用于查询特定子账户的资产信息。在多账户管理体系中,每个子账户都有唯一的Member ID。如果需要查询主账户的资产信息,则应将此参数留空或省略。此参数仅在主账户需要查看其管理的子账户资产时使用。

响应示例:

此JSON响应示例展示了一个典型的加密货币账户资产信息结构,用于说明API接口返回的数据格式。以下是对其中各个字段的详细解释:

{

  • "retCode" : 0,
    返回代码, 0 通常表示请求成功。非零值则表示出现错误,具体错误信息可参考 "retMsg" 字段。
  • "retMsg" : "OK",
    返回消息,用于描述请求的状态。 "OK" 表示请求成功。
  • "result" : { ... },
    包含实际返回数据的对象。
    • "list" : [ ... ],
      一个数组,包含一个或多个账户的资产信息。每个元素代表一个账户的详细数据。
      • {
        • "accountType" : "SPOT",
          账户类型。 "SPOT" 表示现货账户,也可能包含其他类型,如合约账户 ( "CONTRACT" )、杠杆账户 ( "MARGIN" ) 等,具体取决于交易所的支持情况。
        • "coin" : "BTC",
          币种,例如 "BTC" (比特币)。
        • "equity" : "0.01",
          账户权益,代表账户中该币种的总价值,通常以币本位计算。
        • "availableToWithdraw" : "0.01",
          可提取余额,指可以立即提取到其他钱包或交易所的币种数量。
        • "transferBalance" : "0",
          可用于划转的余额,指可以用于内部账户之间划转的币种数量。
        • "bonus" : "0",
          赠金,某些交易所会提供赠金用于交易,但通常有使用限制。
        • "availableBalance" : "0.01",
          可用余额,指可以用于交易的币种数量。
        • "locked" : "0",
          锁定余额,指由于挂单或其他原因被锁定的币种数量,无法用于交易或提现。
        • "borrowAmount" : "0",
          借币数量,如果账户使用了杠杆交易,此字段表示借入的币种数量。
        • "accruedInterest" : "0",
          累计利息,指借币产生的未支付利息。
        • "loan" : "0"
          贷款,与 borrowAmount 类似,表示借入的币种数量。
        • }
  • "retExtInfo" : { },
    扩展信息,用于返回额外的状态或提示信息,通常为空对象。
  • "time" : 1678886400000
    时间戳,表示数据更新的时间,通常为 Unix 时间戳(毫秒)。
}

注意: equity 代表账户权益,availableBalance 代表可用余额。开发者需要仔细阅读文档,了解每个字段的含义。

获取统一保证金账户信息 (GET /v5/account/info)

获取统一保证金账户的详细信息,涵盖账户的风险状态、保证金水平以及其他重要参数。此接口专门为已开通统一保证金账户功能的交易者设计,提供了全面的账户概览,帮助用户监控和管理其头寸的风险敞口。

通过此接口,用户可以查询到以下关键信息:

  • 风险率: 反映账户当前的风险程度,是评估账户健康状况的重要指标。高风险率可能意味着账户面临爆仓的风险,需要及时调整仓位。
  • 保证金率: 显示已用保证金与账户总权益的比率,用于衡量账户的杠杆使用情况。了解保证金率有助于用户评估其资金利用效率,并避免过度杠杆。
  • 账户权益: 账户中所有资产的总价值,包括已实现和未实现的盈亏。
  • 可用保证金: 可用于开仓或承担亏损的保证金金额。
  • 冻结保证金: 已被冻结的保证金金额,通常是因为存在未完成的订单或 pending 交易。
  • 账户模式: 指示当前账户采用的保证金模式,例如全仓或逐仓。
  • 杠杆倍数: 账户使用的杠杆倍数,影响盈亏放大的程度。

使用此接口,交易者可以实时监控其统一保证金账户的状态,及时调整交易策略,降低潜在风险,并优化资金利用效率。理解这些参数对于有效管理统一保证金账户至关重要。

请求参数:

该接口调用不需要任何请求参数。这意味着您只需发起一个简单的HTTP请求(例如GET请求)到指定的API端点,无需在请求体或URL中包含任何额外的数据。

在没有请求参数的情况下,API通常会返回与该接口关联的默认数据或执行其预定义的功能。例如,该接口可能用于获取最新的市场数据、检索账户余额或触发特定的操作,而无需用户指定任何额外的筛选条件或配置选项。

虽然没有显式的请求参数,但请务必检查API的文档,以确保理解请求方法(例如GET, POST, PUT, DELETE等)和请求头(例如Content-Type, Authorization等)的要求。 错误的请求方法或缺失必要的请求头可能会导致API调用失败或返回错误的结果。

即使没有请求参数,一些API可能会依赖于身份验证令牌或其他类型的凭证来验证用户的身份和授权。 这些凭证通常通过请求头或特定的Cookie进行传递。

响应示例:

返回的JSON格式数据,用于展示账户风险和余额信息。

{
"retCode": 0,
指示API请求的返回状态码。 0 通常表示成功。
"retMsg": "OK",
API请求的返回消息。 "OK" 确认请求已成功处理。
"result": {
包含了账户的具体数据信息。
"accountIMRate": "0.001",
账户的初始保证金率,用于计算开仓所需的最低保证金。数值表示0.1%。
"accountMMRate": "0.0005",
账户的维持保证金率,低于此比例会触发追加保证金通知或强制平仓。数值表示0.05%。
"accountType": "UNIFIED",
账户类型, "UNIFIED" 表示统一账户,可能支持多种交易产品。
"equity": "1000",
账户净值,等于总资产减去未实现盈亏。
"totalEquity": "1000",
账户总净值,包含已实现和未实现盈亏。
"totalAvailableBalance": "900",
账户可用余额,可以用于开仓交易的资金量。该值等于总钱包余额减去已用保证金和冻结金额。
"totalPerpUPL": "0",
账户永续合约的未实现盈亏总额。 "0" 表示当前未实现盈亏为零。
"totalWalletBalance": "1000",
账户钱包余额,是存入账户的总资金。
"totalMarginBalance": "1000",
账户保证金余额,等于钱包余额加上未实现盈亏。
"crossMarginRisk": "0",
全仓保证金风险率,用于评估账户的整体风险水平。数值越低,风险越高。 "0" 可能表示风险极低。
"accountLTV": "0"
账户的贷款价值比率(Loan-to-Value Ratio),用于衡量账户的杠杆水平和风险。 "0" 表示没有贷款或杠杆。
},
"retExtInfo": {},
保留字段,可能包含额外的返回信息,当前为空。
"time": 1678886400000
响应生成的时间戳,以毫秒为单位。 }

风险管理: 开发者应该密切关注 accountIMRate (维持保证金率) 和 accountMMRate (起始保证金率),合理控制仓位,避免爆仓风险。

交易接口

下单 (POST /v5/order/create)

该接口用于创建新的交易订单。通过发送 POST 请求至 /v5/order/create 端点,用户可以提交包括限价单、市价单在内的多种订单类型。API 允许指定交易对、订单方向(买入/卖出)、订单数量、订单价格等参数,从而实现灵活的交易策略。

订单类型: 除了常见的限价单和市价单外,此接口可能还支持其他高级订单类型,例如:

  • 限价单 (Limit Order): 以指定的价格或更优的价格成交。如果市场价格未达到指定价格,订单将不会立即成交,而是挂在订单簿上等待。
  • 市价单 (Market Order): 以当前市场最优价格立即成交。通常用于快速成交,但成交价格可能不如限价单精确。
  • 止损单 (Stop Loss Order): 当市场价格达到预设的止损价时,触发一个市价单或限价单,用于限制潜在损失。
  • 止盈单 (Take Profit Order): 当市场价格达到预设的止盈价时,触发一个市价单或限价单,用于锁定利润。
  • 跟踪止损单 (Trailing Stop Order): 止损价格会随着市场价格的上涨而自动调整,保持一个固定的价差,用于在市场行情有利时锁定利润,并在行情反转时及时止损。

参数说明: 在使用此接口时,需要仔细配置请求参数,以确保订单能够正确执行。常见的参数包括:

  • symbol 交易对,例如 BTCUSDT
  • side 订单方向, Buy (买入)或 Sell (卖出)。
  • type 订单类型,例如 Limit (限价单)或 Market (市价单)。
  • qty 订单数量,以交易对的基础货币单位计。
  • price 订单价格,仅当订单类型为限价单时需要指定。
  • time_in_force 订单有效期,例如 GTC (Good Till Cancelled,一直有效) 或 IOC (Immediate or Cancel,立即成交或取消)。
  • reduce_only 是否为只减仓订单,用于平仓操作。

注意事项: 在进行交易之前,请务必仔细阅读 API 文档,了解所有参数的含义和使用方法。同时,需要注意市场风险,合理控制仓位,避免过度交易。

请求参数:

  • symbol (String, 必选): 交易对代码,用于指定要交易的资产对。例如, BTCUSDT 表示比特币兑美元的交易对。该参数是订单创建的必要条件,必须准确无误地提供。交易所通常提供交易对列表,务必参考官方文档确认。
  • side (String, 必选): 买卖方向,指示是买入还是卖出。有效值包括: Buy 表示买入,旨在以较低价格买入资产并在未来以较高价格卖出获利; Sell 表示卖出,旨在以较高价格卖出已持有的资产并在未来以较低价格买回获利。
  • orderType (String, 必选): 订单类型,定义订单的执行方式。有效值包括: Limit 限价单,只有当市场价格达到或优于指定价格时才会执行; Market 市价单,以当前市场最优价格立即执行。理解不同订单类型的特性对于风险管理至关重要。
  • qty (String, 必选): 订单数量,表示要买入或卖出的资产数量。数量必须符合交易所规定的最小交易单位和数量精度。输入不合规的数量可能导致订单创建失败。
  • timeInForce (String, 可选): 订单有效时间策略,控制订单在市场上的有效期限。有效值包括: GTC (Good Till Cancelled),订单将持续有效,直到被完全执行或手动取消; IOC (Immediate Or Cancel),订单尝试立即以指定价格或更优价格成交,未成交部分立即取消; FOK (Fill Or Kill),订单必须立即全部成交,否则整个订单将被取消。 默认为 GTC ,即如果未指定,订单将持续有效直到被取消。
  • price (String, 可选): 价格,仅当订单类型为 Limit 限价单时需要指定。此价格是订单执行的目标价格。如果市场价格未达到此价格,订单将不会被执行。
  • takeProfit (String, 可选): 止盈价格,当市场价格达到此价格时,将自动触发平仓,锁定利润。止盈单有助于在市场朝着预期方向发展时自动获利。
  • stopLoss (String, 可选): 止损价格,当市场价格达到此价格时,将自动触发平仓,限制损失。止损单有助于在市场朝着不利方向发展时限制潜在亏损。
  • tpTriggerBy (String, 可选): 止盈触发方式,指定用于触发止盈单的价格类型。常见的触发方式包括: LastPrice (最新成交价)、 MarkPrice (标记价格)、 IndexPrice (指数价格)。选择合适的触发方式可以提高止盈单的执行效率和准确性。
  • slTriggerBy (String, 可选): 止损触发方式,指定用于触发止损单的价格类型。常见的触发方式包括: LastPrice (最新成交价)、 MarkPrice (标记价格)、 IndexPrice (指数价格)。与止盈触发方式类似,选择合适的触发方式可以提高止损单的执行效率和准确性。
  • orderLinkId (String, 可选): 客户自定义的订单 ID,允许用户为订单分配一个唯一的标识符,方便用户在自己的系统中追踪订单状态和历史记录。这对于复杂的交易策略和订单管理非常有用。

响应示例:

以下JSON格式的数据结构代表一个成功的API响应,展示了订单创建或处理完成后的典型返回信息。


{
  "retCode": 0,
  "retMsg": "OK",
  "result": {
    "orderId": "1234567890",
    "orderLinkId": "yourorderid"
  },
  "retExtInfo": {},
  "time": 1678886400000
}

字段详解:

  • retCode : 返回码, 0 通常代表成功。 非零值通常指示错误,需要查阅API文档以了解具体错误代码的含义。
  • retMsg : 返回消息,对返回码的文字描述, "OK" 表示操作成功。在发生错误时,该字段会提供错误的简要描述。
  • result : 包含主要业务数据的对象。在此示例中,它包含订单相关的信息。
    • orderId : 平台生成的唯一订单ID,用于追踪订单状态和进行后续操作。
    • orderLinkId : 用户自定义的订单ID(示例中为 "your order id" ),方便用户在自己的系统中关联订单。 使用 标签强调“order”一词,提示用户此处应替换为实际的订单ID。该字段允许用户使用自己的ID体系来管理订单,便于对账和查询。
  • retExtInfo : 扩展信息字段,通常为空对象 ( {} )。未来可能会用于返回额外的、非核心的业务数据。
  • time : 时间戳,表示服务器处理请求的时间,以毫秒为单位的Unix时间戳。可用于记录订单处理时间或进行时间相关的分析。

注意事项:

  • 请务必检查 retCode 字段,确保其值为 0 ,以确认请求成功。
  • orderId orderLinkId 是重要的订单标识符,请妥善保存。
  • 实际API的返回结构可能包含更多字段,具体请参考对应的API文档。例如,可能包含手续费、成交价格等信息。
参数校验: 务必对所有请求参数进行严格校验,确保数据类型和数值范围符合要求,避免因参数错误导致下单失败。

撤单 (POST /v5/order/cancel)

该接口用于取消尚未完全成交的订单。在数字资产交易中,订单一旦提交,就会进入等待成交的状态,直到买方或卖方找到匹配的对手方。如果订单在一定时间内未成交,或者交易者改变主意,可以使用此接口主动取消订单。

调用此接口时,需要提供必要的订单标识信息,例如订单ID。不同的交易所或平台可能有不同的订单标识方式,通常包括客户端自定义的订单ID ( clOrdID ) 或交易所生成的唯一订单ID ( orderId )。务必正确提供订单标识信息,以便系统能够准确识别并取消目标订单。

撤单操作会立即生效,一旦成功提交撤单请求,系统会尽快从订单簿中移除该订单。但请注意,由于网络延迟和系统处理时间,撤单操作并非绝对实时,可能会出现极少数情况下,撤单请求提交后,订单在被撤销前已经成交的情况。因此,建议交易者在撤单操作后,通过查询订单状态接口确认订单是否已成功撤销。

需要注意的是,频繁的撤单操作可能会影响交易体验,并可能触发交易所的风控机制。因此,建议交易者谨慎使用撤单功能,避免不必要的交易操作。

请求参数:

  • symbol (String, 必选): 交易对,指定要查询订单的交易对。例如: BTCUSDT 表示比特币兑 USDT 的交易对。该参数是必需的,缺少该参数将导致请求失败。平台将根据此参数检索特定交易对的订单信息。
  • orderId (String, 可选): 订单 ID,是由交易所生成的唯一订单标识符。 使用此参数可以精确查询特定订单的信息。如果已知订单 ID,建议使用此参数,因为它比 orderLinkId 更可靠且查询速度更快。
  • orderLinkId (String, 可选): 客户自定义的订单 ID,也称为客户端订单 ID。这是用户在创建订单时设置的自定义标识符,允许用户通过他们自己设定的 ID 跟踪订单。 orderId orderLinkId 必须至少指定一个,以便服务器能够识别要查询的订单。如果同时提供了 orderId orderLinkId ,系统通常会优先使用 orderId 进行查询,因为它具有更高的唯一性和准确性。

响应示例:

以下是一个典型的API响应示例,展示了在加密货币交易或查询操作中,服务器可能返回的数据结构。理解这种响应的各个字段对于开发者构建稳定可靠的应用程序至关重要。

{
"retCode": 0,
"retMsg": "OK",
"result": {
"orderId": "1234567890"
},
"retExtInfo": {},
"time": 1678886400000
}

字段解释:

retCode (返回代码): 这是一个整数值,用于表示API请求的状态。通常, 0 表示成功,其他非零值表示发生了错误。具体的错误代码定义应参考API文档。例如, 1001 可能表示参数错误, 1002 可能表示权限不足, 1003 可能表示服务器内部错误。不同的加密货币交易所或服务提供商使用不同的错误代码规范,务必查阅相应的API文档了解详细含义。

retMsg (返回消息): 这是一个字符串,提供了对 retCode 更详细的描述,方便开发者理解API请求的结果。例如,当 retCode 0 时, retMsg 可能为 "OK" "Success" ;当 retCode 为非零值时, retMsg 会提供错误原因的文字描述,如 "Invalid API Key" "Insufficient Funds" "Order Size Too Small"

result (结果): 这是一个JSON对象,包含了API请求成功后返回的实际数据。其结构取决于具体的API接口。在这个例子中, result 对象只包含一个 orderId 字段,表示订单的唯一标识符。在其他API中, result 可能包含更复杂的数据结构,如交易历史记录、账户余额、市场深度等。

orderId (订单ID): 这是一个字符串,是订单的唯一标识符。可以使用此ID查询订单状态、取消订单等。订单ID的格式可能因交易所而异,通常是数字或字母数字组合。

retExtInfo (返回扩展信息): 这是一个JSON对象,用于返回一些额外的、非核心的信息。在某些情况下,它可能为空对象 {} ,表示没有额外的扩展信息。根据不同的API接口, retExtInfo 可能会包含诸如请求的速率限制信息、服务器的版本信息、调试信息等。

time (时间戳): 这是一个整数,表示服务器处理请求时的时间戳,通常以毫秒为单位。时间戳可以用于同步客户端和服务器的时间,或者用于记录事件发生的顺序。开发者应注意时区问题,并将其转换为本地时间进行显示。

幂等性: 撤单接口需要考虑幂等性,即多次调用相同参数的撤单接口,结果应该一致。 可以通过维护一个已撤销订单的列表来保证幂等性。

获取订单列表 (GET /v5/order/list)

该接口用于查询用户的订单列表,允许用户检索特定账户下所有或部分历史订单信息。通过提供不同的参数,可以灵活地筛选和排序订单,例如按交易对、订单状态、订单创建时间等。该接口返回的数据包括订单ID、交易对、订单类型(限价单、市价单等)、订单方向(买入、卖出)、订单数量、成交均价、订单状态、创建时间、更新时间等详细信息。

使用此接口时,请确保提供正确的API密钥和签名,并注意频率限制。频繁的请求可能导致API调用被限制。为了提高查询效率,建议使用分页参数( limit cursor )来限制每次返回的订单数量,并逐步获取完整的订单列表。

该接口对于分析交易策略、审计交易记录以及监控账户活动至关重要。通过定期查询订单列表,用户可以追踪订单的执行情况,并及时发现潜在的异常情况。

请求参数:

  • symbol (String, 必选): 交易对代码,指定需要查询的交易市场。例如: BTCUSDT 代表比特币兑美元的交易对。务必提供此参数,以便系统能够准确识别您所关注的交易市场。
  • orderId (String, 可选): 交易所生成的唯一订单标识符,用于精确查询特定订单的详细信息。如果提供了此参数,系统将直接返回与该 ID 匹配的订单信息,忽略其他查询条件。
  • orderLinkId (String, 可选): 由用户在创建订单时自定义的订单标识符。通过提供 orderLinkId ,用户可以方便地检索自己创建的订单,而无需依赖交易所生成的 orderId 。这在需要根据自定义标签追踪订单时非常有用。
  • orderStatus (String, 可选): 订单的当前状态,用于筛选特定状态的订单。可用的枚举值包括:
    • New : 订单已创建,但尚未成交。
    • PartiallyFilled : 订单部分成交。
    • Filled : 订单完全成交。
    • Cancelled : 订单已被取消。
    • Rejected : 订单被交易所拒绝。
    • PendingCancel : 订单正在等待取消。
    您可以指定一个或多个订单状态,以便只获取符合特定状态的订单。
  • limit (Integer, 可选): 指定API返回的最大订单数量。默认值为 20,最大允许值为 50。如果未提供此参数,API将默认返回最近的20个订单。 通过调整此参数,您可以控制每次API调用返回的数据量。
  • cursor (String, 可选): 用于分页查询的游标。当订单数量超过 limit 指定的值时,API将返回一个 cursor 值,用于获取下一页的订单。将此 cursor 值作为参数传递给下一次API调用,即可获取后续的订单列表。这是一种高效的分页机制,避免一次性返回大量数据。

响应示例:

以下JSON对象展示了加密货币交易平台API返回的响应示例,详细描述了一笔订单的信息。


{
   "retCode": 0,
    "retMsg": "OK",
  "result":  {
     "cursor": "nextpagecursor",
    "list": [
       {
         "orderId": "1234567890",
             "orderLinkId": "yourorderid",
         "symbol": "BTCUSDT",
          "side": "Buy",
          "orderType": "Limit",
          "price": "30000",
        "qty": "0.01",
          "orderStatus":  "Filled",
         "createTime": "1678886400000",
          "updateTime":  "1678886500000"
      }
     ]
  },
  "retExtInfo": {},
   "time": 1678886400000
}

字段解释:

  • retCode : 返回码。0表示成功,其他值表示错误。
  • retMsg : 返回消息。 "OK" 表示成功,其他值包含错误描述。
  • result : 包含实际数据的结果对象。
  • cursor : 用于分页的游标。如果结果集过大,可以根据此游标获取下一页数据。示例: "next page cursor"。
  • list : 订单信息数组。每个元素代表一笔订单。
  • orderId : 平台生成的唯一订单ID。示例: "1234567890"。
  • orderLinkId : 用户自定义的订单ID,方便用户追踪订单。示例: "your order id"。
  • symbol : 交易对。示例: "BTCUSDT" (比特币/泰达币)。
  • side : 订单方向。 "Buy" 表示买入, "Sell" 表示卖出。
  • orderType : 订单类型。 "Limit" 表示限价单, "Market" 表示市价单。 其他类型例如 "Stop Limit" (止损限价单) 和 "Stop Market" (止损市价单)。
  • price : 订单价格。限价单的指定价格。示例: "30000"。
  • qty : 订单数量。示例: "0.01" (表示0.01个BTC)。
  • orderStatus : 订单状态。 "Filled" 表示已完全成交。 其他状态例如 "New" (新创建), "Partially Filled" (部分成交), "Canceled" (已取消), "Rejected" (已拒绝)。
  • createTime : 订单创建时间,Unix时间戳,毫秒级别。示例: "1678886400000"。
  • updateTime : 订单最后更新时间,Unix时间戳,毫秒级别。示例: "1678886500000"。
  • retExtInfo : 扩展信息。通常为空对象 {},用于平台未来扩展。
  • time : 服务器时间,Unix时间戳,毫秒级别。示例: "1678886400000"。

时间戳均以毫秒为单位,需要进行转换才能得到可读的日期和时间。

分页处理: 如果订单数量较多,需要使用 limitcursor 参数进行分页查询。

行情接口

获取最新交易价格 (GET /v5/market/tickers)

该接口用于获取指定交易对的最新成交价格。通过调用此接口,您可以实时掌握市场上特定交易品种的动态,例如BTCUSDT的最新成交价,并以此为基础进行交易决策、风险评估或市场分析。

需要注意的是,该接口返回的是最近成交的一笔交易的价格,并非买一价或卖一价。 它反映了市场共识的最新价格水平。如果您需要买卖盘口信息,请参考其他相关API接口。

接口返回的数据通常还包含其他有用的信息,例如成交量、最高价、最低价等。这些信息可以帮助您更全面地了解市场行情。在使用此接口时,请务必关注API文档中对各个字段的详细说明,以便正确解析数据。

请求参数:

  • symbol (String, 必选): 交易对,用于指定您希望查询或操作的交易市场。务必使用交易所支持的规范格式,例如: BTCUSDT ,代表比特币兑美元的交易对。准确的交易对名称对于API请求的成功至关重要,任何拼写错误或无效的交易对都将导致请求失败。

响应示例:

该响应示例展示了一个典型的加密货币交易平台API返回的数据结构,用于获取现货交易对的市场行情信息。其结构包含多个关键字段,用于解析和利用市场数据。

JSON 结构详解:

retCode : 整数类型,表示API请求的返回码。 0 通常代表请求成功,非零值则表示发生了错误。开发者应根据此字段判断请求是否成功,并采取相应的错误处理措施。

retMsg : 字符串类型,提供关于 retCode 的补充信息。例如,当 retCode 0 时, retMsg 可能为 "OK" ,表明请求成功。如果发生错误, retMsg 会提供错误描述,帮助开发者定位问题。

result : 一个包含实际数据的JSON对象。其内部结构取决于API的具体功能。在本例中,它包含了交易对的详细信息。

category : 字符串类型,表示交易类别。这里是 "spot" ,表示现货交易。其他可能的类别可能包括 "futures" (期货交易)或 "options" (期权交易)。

list : 一个JSON数组,包含多个交易对的信息。每个元素代表一个交易对的市场数据快照。

交易对数据详解( list 数组中的元素):

symbol : 字符串类型,代表交易对的标识。例如, "BTCUSDT" 表示比特币与泰达币的交易对。这是唯一标识一个交易对的关键信息。

bid1Price : 字符串类型,表示当前最佳买一价(最高买入价)。 "29999.5" 表示市场上最高的买入价为29999.5 USDT。

bid1Size : 字符串类型,表示当前最佳买一价对应的买单数量。 "0.1" 表示市场上在29999.5 USDT价位上的买单数量为0.1个BTC。

ask1Price : 字符串类型,表示当前最佳卖一价(最低卖出价)。 "30000" 表示市场上最低的卖出价为30000 USDT。

ask1Size : 字符串类型,表示当前最佳卖一价对应的卖单数量。 "0.1" 表示市场上在30000 USDT价位上的卖单数量为0.1个BTC。

lastPrice : 字符串类型,表示最新成交价。 "30000" 表示最近一笔交易的成交价格为30000 USDT。

prevPrice24h : 字符串类型,表示24小时前的价格。 "29000" 表示24小时前的价格为29000 USDT,用于计算价格变动百分比。

highPrice24h : 字符串类型,表示24小时内的最高价。 "30500" 表示24小时内的最高价格为30500 USDT。

lowPrice24h : 字符串类型,表示24小时内的最低价。 "28500" 表示24小时内的最低价格为28500 USDT。

turnover24h : 字符串类型,表示24小时内的成交额(以计价货币计)。 "1000000" 表示24小时内的成交额为1000000 USDT。

volume24h : 字符串类型,表示24小时内的成交量(以交易货币计)。 "33.33" 表示24小时内的成交量为33.33个BTC。

time : 长整型,表示数据的时间戳,通常以毫秒为单位。 "1678886400000" 表示数据生成的时间。开发者可以使用此时间戳来判断数据的时效性。

retExtInfo : 一个JSON对象,用于提供额外的返回信息。在本例中为空,表示没有额外的扩展信息。有些API会使用此字段返回一些可选的参数或调试信息。

time : 长整型,表示API响应的时间戳,通常以毫秒为单位。 1678886400000 表示服务器返回响应的时间。此时间戳与 result 中的 time 不同,后者表示行情数据的时间。

高频交易: 高频交易者需要注意该接口的频率限制,避免被限流。

获取K线数据 (GET /v5/market/kline)

该接口用于获取指定交易对的历史K线数据。K线图,也称为蜡烛图,是技术分析中常用的工具,它通过显示一段时间内的开盘价、收盘价、最高价和最低价,直观地展示价格波动情况。通过此接口,开发者可以获取不同时间粒度的K线数据,从而进行深入的市场分析和策略回测。

详细说明:

  • 数据用途: 获取的K线数据可用于绘制K线图,计算技术指标(如移动平均线、相对强弱指标RSI、移动平均收敛背离MACD等),进行量化交易策略的回测和实时交易信号的生成。
  • 时间粒度: 接口支持多种时间周期(例如:1分钟、5分钟、15分钟、30分钟、1小时、4小时、1天、1周、1月等),开发者可以根据自身需求选择合适的时间粒度。较短的周期适合高频交易,较长的周期适合趋势分析。
  • 交易对: 不同的交易对代表不同的加密货币之间的交易关系(例如:BTCUSDT、ETHBTC等)。选择正确的交易对是获取准确K线数据的前提。
  • 数据返回: 返回的数据通常包含时间戳(timestamp)、开盘价(open)、最高价(high)、最低价(low)、收盘价(close)以及成交量(volume)等信息。部分交易所还会提供加权平均价等额外数据。
  • 数据限制: 为了减轻服务器压力和保证接口稳定性,通常会对单次请求返回的数据量进行限制(例如:最多返回1000根K线)。开发者需要注意分页或多次请求以获取完整的历史数据。
  • 错误处理: 接口调用可能因为参数错误、网络问题或服务器繁忙等原因失败。开发者需要正确处理各种错误码,保证程序的健壮性。

请求参数:

  • symbol (String, 必选): 交易对,用于指定要查询的加密货币交易市场。例如: BTCUSDT 表示比特币与美元的交易对。 此参数区分大小写,务必准确填写交易所支持的交易对代码。
  • interval (String, 必选): K 线周期,定义了每根K线代表的时间跨度。例如: 1m 表示1分钟K线, 5m 表示5分钟K线, 1h 表示1小时K线, 1d 表示1天K线。常见的K线周期包括但不限于分钟级别 (1m, 3m, 5m, 15m, 30m),小时级别 (1h, 2h, 4h, 6h, 8h, 12h),以及天级别 (1d),周级别 (1w),月级别 (1M)。
  • start (Long, 可选): 起始时间戳 (毫秒),用于限定K线数据的起始时间。该参数是一个Unix时间戳,以毫秒为单位。如果未指定,则从最早的可用数据开始。务必确保时间戳的准确性,以免影响数据查询结果。
  • end (Long, 可选): 结束时间戳 (毫秒),用于限定K线数据的结束时间。该参数也是一个Unix时间戳,以毫秒为单位。如果未指定,则查询到最新的数据为止。 end 时间戳必须晚于 start 时间戳。
  • limit (Integer, 可选): 返回的 K 线数量,用于限制API返回的K线数据条数。默认为 200,最大值为 200。 如果不指定此参数,API将返回默认数量的K线数据。出于性能考虑,API通常会限制返回的最大数量。

响应示例:

以下是一个加密货币交易平台API的响应示例,展示了比特币(BTC)对美元稳定币(USDT)的交易数据。该数据以JSON格式呈现,包含了多个关键字段,用于分析市场行情。

JSON 结构:

{
  "retCode": 0,
  "retMsg":  "OK",
  "result": {
    "symbol": "BTCUSDT",
    "interval": "1m",
    "list": [
      [
        "1678886400000",
        "29990",
        "30010",
        "29980",
        "30000",
        "10",
        "1678886460000"
      ]
    ]
  },
  "retExtInfo":  {},
  "time": 1678886400000
}

字段详解:

  • retCode : 返回代码, 0 通常表示请求成功。非零值表示发生了错误,需要查阅API文档了解具体错误信息。
  • retMsg : 返回消息,对返回代码的文字描述。 "OK" 表示请求成功。
  • result : 包含实际数据的对象。
    • symbol : 交易对,例如 "BTCUSDT" 表示比特币对泰达币。
    • interval : K线图的时间间隔,例如 "1m" 表示1分钟。常见的间隔包括 1m (分钟), 5m, 15m, 30m, 1h (小时), 4h, 1d (天), 1w (周), 1M (月)。
    • list : K线数据列表,每个元素代表一个时间间隔内的数据。
      • 每个列表元素是一个数组,包含以下信息:
        • 1678886400000 : 开盘时间戳(Unix timestamp,毫秒级别)。
        • 29990 : 开盘价。
        • 30010 : 最高价。
        • 29980 : 最低价。
        • 30000 : 收盘价。
        • 10 : 成交量(例如,BTC的数量)。
        • 1678886460000 : 收盘时间戳(Unix timestamp,毫秒级别)。
  • retExtInfo : 扩展信息,通常为空对象。可以用于返回一些额外的辅助信息。
  • time : 服务器时间戳(Unix timestamp,毫秒级别)。

数据解释:

在上述例子中, list 数组包含一个元素,表示在 1678886400000 (UTC时间2023年3月15日 00:00:00) 到 1678886460000 (UTC时间2023年3月15日 00:01:00) 这一分钟内,BTCUSDT的开盘价为29990,最高价为30010,最低价为29980,收盘价为30000,成交量为10个BTC。

应用场景:

这种API响应可以用于构建各种加密货币交易应用程序,例如:

  • 实时行情显示。
  • K线图表绘制。
  • 技术分析。
  • 量化交易策略。
数据精度: K 线数据包含开盘价、最高价、最低价、收盘价、成交量等信息。开发者需要根据实际需求选择合适的 K 线周期。

其他接口

Bybit API 提供的功能远不止于交易和数据获取,还包括一系列其他关键接口,旨在为用户提供更全面、精细化的资产管理和风险控制能力。这些接口涵盖了资金划转、杠杆倍数调整、风控参数设置等多个方面,能够满足不同交易策略和风险偏好的需求。

资金划转接口: 允许用户在不同的账户类型之间灵活调拨资金,例如从现货账户划转到衍生品账户,或在不同衍生品账户之间进行资金转移。这对于需要在不同市场进行交易或者进行套利操作的交易者来说至关重要,可以更高效地管理资金分配,优化资金利用率。

杠杆倍数调整接口: 赋予用户根据自身风险承受能力和交易策略动态调整杠杆倍数的权限。通过该接口,用户可以在开仓或持仓后灵活调整杠杆,应对市场波动,实现更精细化的风险管理。需要注意的是,高杠杆也意味着高风险,合理使用杠杆是稳定盈利的关键。

风控参数设置接口: 允许用户自定义一系列风控参数,例如止损止盈价格、仓位大小限制等。通过预设这些参数,可以有效控制潜在损失,避免因市场剧烈波动而遭受重大亏损。该接口尤其适用于自动化交易策略,能够确保策略在预设的风险范围内运行。

为了充分利用这些接口,开发者应仔细研读 Bybit API 中文文档 ,其中包含了接口的详细说明、参数定义、示例代码以及常见问题的解答。掌握这些信息,可以帮助开发者更好地理解和使用 Bybit API,开发出功能强大、安全可靠的交易应用程序。

探索加密货币技术的前沿,了解区块链、智能合约及分布式账本等核心技术原理,掌握如何利用这些创新技术推动金融行业和其他领域的发展。