API Binance

Binance

 

Binance 是一家国际多语言加密货币交易所。它提供了一些 API 来访问 Binance 数据。支持以下 API:

 

  1. WebSocket 流:允许您订阅某些方法并实时获取数据。服务器将事件推送给订阅者。使用 WebSocket 作为协议。
  2. UserData 流:已订阅的客户端获取账户详情。需要 API 密钥进行身份验证,并使用 WebSocket 作为协议。
  3. REST API: 需要 API 密钥和密钥进行身份验证,使用 HTTPs 作为协议。
    1. 市场数据
    2. 账户和交易数据
    3. 钱包
  4. 期货:WebSocket 期货市场数据流通过 Binance Futures 客户端 API 提供支持。

 

该客户端也支持 Binance.us,以下 API 受到支持:

 

  1. WebSocket 流:允许您订阅某些方法并实时获取数据。服务器将事件推送给订阅者。使用 WebSocket 作为协议。
  2. UserData 流:已订阅的客户端获取账户详情。需要 API 密钥进行身份验证,并使用 WebSocket 作为协议。
  3. REST API:客户端可向服务器请求市场和账户数据。需要 API Key 和 Secret 进行身份验证,并使用 HTTPS 协议。

 

属性

Binance API 有两种方法:公开和私有。公开方法无需身份验证即可访问,例如获取行情价格。部分与用户数据相关的方法是私有的,需要使用 Binance API 密钥。

 

 

 

 

最常见的用途

 

WebSocket 流 API

基础端点为 wss://stream.binance.com:9443,客户端可在成功连接后订阅/取消订阅事件。

支持以下订阅/取消订阅方法。

 

方法 参数 描述
AggregateTrades 交易对 推送为单个 taker 订单聚合的交易信息
交易 交易对 推送原始交易信息;每笔交易有唯一的买方和卖方
KLine Symbol, Interval 每秒、每分钟、每小时...推送当前 K 线/烛线更新。
MiniTicker 交易对 24 小时滚动窗口迷你行情统计。这些数据不是 UTC 日的统计数据,而是前 24 小时的 24 小时滚动窗口数据。
AllMiniTickers   所有价格变动交易对的 24 小时滚动窗口迷你 ticker 统计数据(以数组形式)。这些不是 UTC 日内的统计数据,而是过去 24 小时的 24 小时滚动窗口数据。请注意,数组中只包含价格发生变动的 ticker。
Ticker 交易对 单个交易对的 24 小时滚动窗口行情统计。这不是 UTC 天的统计数据,而是前 24 小时的滚动窗口。
AllMarketTickers   所有发生变化的交易对 24 小时滚动窗口行情统计数组。这不是 UTC 天的统计数据,而是前 24 小时的滚动窗口。请注意,数组中只会包含发生变化的行情。
BookTicker 交易对 实时推送指定交易对最优买卖价格或数量的任何更新。
AllBookTickers   实时推送所有交易对的最优买卖价或数量的任何更新。
PartialBookDepth 交易对,深度 前 <levels> 档买卖盘,每秒推送一次。有效的 <levels> 值为 5、10 或 20。
DiffDepth 交易对 用于在本地管理订单簿的订单簿价格和数量深度更新。

 

成功订阅/取消订阅后,客户端会收到一条相关消息,其中 id 是 Subscribed / Unsubscribed 方法的返回结果。

 


{
  "result": null,
  "id": 1
}

 

User Data Stream API

需要从您的 Binance 账户获取有效的 ApiKey,并将 ApiKey 设置到组件的 Binance.ApiKey 属性中。

 

每次发生变化时,以下数据将被推送给客户端。如果设置了有效的 ApiKey,无需订阅任何方法,系统将自动完成订阅。

 

方法 描述
账户更新 账户状态通过 outboundAccountInfo 事件进行更新。
余额更新

余额更新发生在以下情况下:

 

  • 账户存款或取款
  • 账户间资金转账(例如现货账户转至保证金账户)
订单更新 订单通过 executionReport 事件更新。

 

 

REST API

基础端点为:https://api.binance.com。所有端点返回 JSON 对象或数组。数据按升序返回,最旧的在前,最新的在后。

 

使用 REST_API.BinanceOptions 属性访问 REST API 选项。

 

 

公共 API 端点

 

这些端点无需任何授权即可访问。

 

通用端点

 

方法 参数 描述
Ping   测试与 Rest API 的连通性。
GetServerTime   测试与 Rest API 的连接性并获取当前服务器时间。
GetExchangeInformation   当前交易所交易规则和交易对信息

 

 

市场数据端点

 

方法 参数 描述
GetOrderBook 交易对 获取订单簿。
GetTrades 交易对 获取最新成交
GetHistoricalTrades 交易对 获取历史交易记录。
GetAggregateTrades 交易对 获取压缩的聚合交易数据。在同一时间以相同价格成交的同一订单的交易,其数量将被聚合。
GetKLines Symbol, Interval 某交易对的 K 线/烛线柱。K 线以其开盘时间唯一标识。
GetAveragePrice 交易对 某个交易对的当前均价。
Get24hrTicker 交易对 24 小时滚动窗口价格变动统计。不带 symbol 参数访问时请谨慎。
GetPriceTicker 交易对 某个交易对的最新价格。
GetPriceTickers Symbols 一个交易对或多个交易对的最新价格。示例:["BTCUSDT","BNBUSDT"]
GetBookTicker 交易对 某个或多个交易对在订单簿中的最优价格/数量。
GetUIKLines Symbol, Interval 某一交易对的 K 线/烛台图数据。响应格式与 GetKLines 类似,针对烛台图展示进行了优化。
GetRollingWindowTicker Symbol, Symbols, WindowSize 滚动窗口价格变动统计。注意:如果未指定,WindowSize 默认为 1d。
GetTradingDayTicker Symbol, Symbols, Type 某个交易日的价格变动统计数据。

 

 

 

私有 API 端点

 

需要 APIKey 和 APISecret 才能获得服务器授权。

 

账户数据端点

 

方法 参数 描述
NewOrder Symbol, Side, Type 提交新订单。
PlaceMarketOrder Side, Symbol, Quantity 下新的市价单
PlaceMarketQuoteOrder Side, Symbol, QuoteOrderQty 下新市价报价单
PlaceLimitOrder Side, Symbol, Quantity, LimitPrice 下限价单
PlaceStopOrder 方向、交易对、数量、止损价格、限价价格 下新止损单
PlaceStopTrailingOrder 方向,交易对,数量,TrailingDelta,LimitPrice 下新的追踪止损订单
PlaceTakeProfitOrder 方向、交易对、数量、止损价格、限价价格 下新的止盈订单
PlaceTakeProfitTrailingOrder 方向,交易对,数量,TrailingDelta,LimitPrice 下达新的止盈跟踪止损订单
PlaceLimitMakerOrder Side, Symbol, Quantity 下新的限价市价单
TestNewOrder Symbol, Side, Type 测试新订单创建和签名/recvWindow 时长。创建并验证新订单,但不将其发送到撮合引擎。
QueryOrder 交易对 查询订单状态。
CancelOrder 交易对 取消活跃订单。取消活跃订单。必须发送 OrderId 或 OrigClientOrderId 之一。
CancelAllOpenOrders Symbol(可选)  
GetOpenOrders   获取某个交易对的所有未结订单。访问时不指定交易对请谨慎。
GetAllOrders 交易对 获取所有账户订单;包括活跃、已取消或已成交的订单。
NewOCO Symbol, Side, Quantity, Price, StopPrice 发送新的 OCO 订单
CancelOCO 交易对 取消整个订单列表
QueryOCO 交易对 根据提供的可选参数检索特定 OCO 订单
GetAllOCO   根据提供的可选参数检索所有 OCO 订单
GetOpenOCO   获取所有未完成的 OCO 订单。
GetAccountInformation   获取当前账户信息。
GetAccountTradeList 交易对 获取特定账户和交易对的成交记录。
CancelReplaceOrder Symbol, Side, Type, CancelReplaceMode 取消现有订单并在同一交易对上下新订单。
NewOrderListOCO Symbol, Side, Quantity, AboveType, BelowType 下新的 OCO 订单列表。
NewOrderListOTO Symbol, WorkingType, WorkingSide, WorkingQuantity, WorkingPrice, PendingType, PendingSide, PendingQuantity 下一个新的 OTO(一触即发)订单列表。
NewOrderListOTOCO Symbol, WorkingType, WorkingSide, WorkingQuantity, WorkingPrice, PendingSide, PendingAboveType, PendingBelowType, PendingQuantity 下达新的 OTOCO(一触发一取消另一个)订单列表。
NewSOROrder Symbol, Side, Type, Quantity 使用智能订单路由(SOR)下单。
TestSOROrder Symbol, Side, Type, Quantity 使用智能订单路由(SOR)测试新订单。创建并验证新订单,但不将其发送至撮合引擎。
GetOrderRateLimitUsage 显示用户所有时间间隔的当前订单数使用情况。
GetPreventedMatches 交易对 显示因 STP(自成交防护)而过期的订单列表。
GetAllocations 交易对 检索 SOR 订单执行产生的分配。
GetAccountCommission 交易对 获取当前账户手续费率。

 

 

 

转换端点

 

方法 参数 描述
GetAllConvertPairs FromAsset, ToAsset 查询所有可转换代币对及各代币的上限/下限
GetConvertAssetInfo   查询支持资产的精度信息
SendConvertQuoteRequest FromAsset, ToAsset 为请求的令牌对请求报价
AcceptConvertQuote QuoteId 通过报价 ID 接受所提供的报价。
GetConvertOrderStatus OrderId 或 QuoteId 按订单 ID 查询订单状态。
PlaceConvertLimitOrder BaseAsset, QuoteAsset, Side, LimitPrice

允许用户下限价单。

baseAsset 或 quoteAsset 可通过 exchangeInfo 端点确定。
限价由 baseAsset 到 quoteAsset 定义。
使用 baseAmount 或 quoteAmount 其中之一。

CancelConvertLimitOrder OrderId 允许用户取消限价订单
GetConvertLimitOpenOrders   允许用户查询所有现有限价单
GetConvertTradeHistory StartTime, EndTime startTime 与 endTime 之间的最大间隔为 30 天。

 

 

 

钱包端点

(*钱包端点仅适用于生产服务器,不适用于演示服务器)

 

方法 描述
GetWalletSystemStatus 获取系统状态。
GetWalletAllCoinsInformation 获取用户可用于存入和提取的代币信息。
GetWalletDailyAccountSnapshot 类型:"SPOT"、"MARGIN"、"FUTURES"
  • 查询时间段必须少于 30 天
  • 仅支持查询最近一个月内的数据
  • 如果未发送 startTime 和 endTime,默认返回最近 7 天的记录
SetWalletDisableFastWithdrawSwitch 此请求将禁用您账户下的快速提现开关。
您需要为请求此端点的 API 密钥启用"交易"选项。
SetWalletEnableFastWithdrawSwitch 此请求将在您的账户下启用快速提现开关。
您需要为请求此端点的 API 密钥启用"交易"选项。
当快速提现开关开启后,向 Binance 账户划转资金将即时完成,无需链上交易,无交易 ID,也无提现手续费。
WalletWithdraw

提交提款请求。

 

GetWalletDepositHistory 获取存款历史。
GetWalletWithdrawHistory 获取提现历史记录。
GetWalletDepositAddress 通过网络获取充值地址。
GetWalletAccountStatus 获取账户状态详情。
GetWalletAccountAPITradingStatus 获取账户 API 交易状态详情。
GetWalletDustLog 仅返回最后 100 条记录
仅返回 2020/12/01 之后的记录
GetWalletAssetsConvertedBNB  
WalletDustTransfer

将零散资产转换为 BNB。

您需要为请求此端点的 API Key 开启现货与杠杆交易权限。

GetWalletAssetDividendRecord 查询资产分红记录。
GetWalletAssetDetail 获取 Binance 支持的资产详情。
GetWalletTradeFee 获取交易手续费
WalletUserUniversalTransfer

您需要为请求此端点的 API Key 启用"允许通用划转"选项。MAIN_UMFUTURE 现货账户划转至 USDⓈ-M 合约账户

类型的枚举:

  • MAIN_CMFUTURE 现货账户划转至 COIN-M 合约账户
  • MAIN_MARGIN 现货账户划转至保证金(全仓)账户
  • UMFUTURE_MAIN USDⓈ-M 合约账户划转至现货账户
  • UMFUTURE_MARGIN USDⓈ-M 合约账户划转至保证金(全仓)账户
  • CMFUTURE_MAIN COIN-M 合约账户划转至现货账户
  • CMFUTURE_MARGIN COIN-M 合约账户划转至保证金(全仓)账户
  • MARGIN_MAIN 保证金(全仓)账户划转至现货账户
  • MARGIN_UMFUTURE 保证金(全仓)账户划转至 USDⓈ-M 合约
  • MARGIN_CMFUTURE 保证金(全仓)账户划转至 COIN-M 合约
  • ISOLATEDMARGIN_MARGIN 逐仓保证金账户划转至保证金(全仓)账户
  • MARGIN_ISOLATEDMARGIN 保证金(全仓)账户划转至逐仓保证金账户
  • ISOLATEDMARGIN_ISOLATEDMARGIN 逐仓保证金账户划转至逐仓保证金账户
  • MAIN_FUNDING 现货账户划转至资金账户
  • FUNDING_MAIN 资金账户划转至现货账户
  • FUNDING_UMFUTURE 资金账户划转至 UMFUTURE 账户
  • UMFUTURE_FUNDING UMFUTURE 账户划转至资金账户
  • MARGIN_FUNDING MARGIN 账户划转至资金账户
  • FUNDING_MARGIN 资金账户划转至保证金账户
  • FUNDING_CMFUTURE 资金账户划转至 CMFUTURE 账户
  • CMFUTURE_FUNDING CMFUTURE 账户划转至资金账户
GetWalletQueryUserUniversalTransferHistory
  • 当 type 为 ISOLATEDMARGIN_MARGIN 和 ISOLATEDMARGIN_ISOLATEDMARGIN 时,必须发送 fromSymbol
  • 当 type 为 MARGIN_ISOLATEDMARGIN 和 ISOLATEDMARGIN_ISOLATEDMARGIN 时,必须发送 toSymbol
  • 仅支持查询最近 6 个月内的数据
  • 如果未发送 startTime 和 endTime,默认返回最近 7 天的记录
GetWalletFundingWallet 目前支持查询以下业务资产:Binance Pay、Binance Card、Binance Gift Card、Stock Token
GetWalletUserAsset 获取用户资产,仅返回正值数据。
GetWalletApiKeyPermission  

 

 

事件

Binance 消息在 TsgcWebSocketClient 组件中接收,您可以使用以下事件:

 

OnConnect

成功连接到 Binance 服务器后。

OnDisconnect

与 Binance 服务器断开连接后

OnMessage

服务器发送给客户端的消息在此事件中处理。

OnError

如果协议出现任何错误,将调用此事件。

OnException

如果存在未处理的异常,将调用此事件。

 

此外,在 Binance API 组件中有一个名为 OnBinanceHTTPException 的特定事件,每次调用 HTTP 请求(REST API 或 WebSocket 用户数据流)出错时触发。

 

(*) 由于 Binance 服务器的变更,Rad Studio 10.1 之前的 Indy 版本将无法连接到测试服务器。此问题不影响 Enterprise 版,或已升级到最新 Indy 版本的情况。