Binance 是一家国际多语言加密货币交易所。它提供了一些 API 用于访问 Binance 数据。此组件允许您获取 Binance 期货 WebSocket 市场流。
https://binance-docs.github.io/apidocs/futures/en
https://binance-docs.github.io/apidocs/delivery/en
Binance API 有两种类型的方法:公开和私有。公开方法无需身份验证即可访问,例如:获取行情价格。部分方法是私有的,与用户数据相关;这些方法需要使用 Binance API 密钥。
客户端可以连接到 USDT 或 COIN Binance Futures,使用 FuturesContracts 属性设置您要交易的合约类型:
客户端可以连接到生产或演示 Binance 账户。如果启用了 TestNet 属性,将连接到演示账户,否则将连接到生产 Binance 服务器。
客户端可以在成功连接后订阅/取消订阅事件。
支持以下订阅/取消订阅方法。
| 方法 | 参数 | 描述 |
| AggregateTrades | 交易对 | 聚合交易流每 100 毫秒推送一次针对单个吃单订单的聚合交易信息。 |
| MarkPrice | Symbol, UpdateSpeed | 单个交易对的标记价格和资金费率,每 3 秒或每秒推送一次。 |
| AllMarkPrice | UpdateSpeed | 所有交易对的标记价格和资金费率每 3 秒或每秒推送一次。 |
| KLine | Symbol, Interval | K 线/蜡烛图流每 250 毫秒推送一次当前 K 线/蜡烛图的更新(如果存在)。 |
| MiniTicker | 交易对 | 单个品种的 24 小时滚动窗口迷你行情统计。这不是 UTC 日的统计数据,而是从 requestTime 到 24 小时前的 24 小时滚动窗口。 |
| AllMiniTicker | 所有交易对的 24 小时滚动窗口迷你行情统计。这些不是 UTC 日统计,而是从请求时间到之前 24 小时的滚动窗口。请注意,数组中只会包含已发生变化的行情。 | |
| Ticker | 交易对 | 单个交易对的 24 小时滚动窗口行情统计。这不是 UTC 日的统计数据,而是从 requestTime 到 requestTime 之前 24 小时的滚动窗口统计。 |
| AllMarketTickers | 所有交易对的 24 小时滚动窗口行情统计。这些不是 UTC 日统计数据,而是从请求时间到 24 小时前的滚动窗口。请注意,数组中只会包含已发生变化的行情。 | |
| BookTicker | 交易对 | 实时推送指定交易对最优买卖价格或数量的任何更新。 |
| AllBookTickers | 实时推送所有交易对的最优买卖价或数量的任何更新。 | |
| LiquidationOrders | 交易对 | 强制平仓订单流推送特定交易对的强制平仓订单信息 |
| AllLiquidationOrders | 所有强制平仓订单流推送市场中所有交易对的强制平仓订单信息。 | |
| PartialBookDepth | 交易对,深度 | 最优买卖报价,有效值为 5、10 或 20。 |
| DiffDepth | 交易对 | 买卖盘每 250 毫秒、500 毫秒、100 毫秒推送一次,或实时推送(如有) |
成功订阅/取消订阅后,客户端会收到相关消息,其中 id 是 Subscribed / Unsubscribed 方法的结果。
{
"result": null,
"id": 1
}
需要从您的 Binance 账户获取有效的 ApiKey,并将 ApiKey 设置到组件的 Binance.ApiKey 属性中。
每次发生变化时,以下数据将被推送给客户端。如果设置了有效的 ApiKey,无需订阅任何方法,系统将自动完成订阅。
| 方法 | 描述 |
| 追加保证金通知 | 当用户的持仓风险率过高时,此流将被推送。 此消息仅作为风险提示信息,不建议作为投资策略依据。 在市场波动剧烈的情况下,推送此流时,用户的持仓可能已同时被强制平仓。 |
| 余额与持仓更新 |
余额更新发生在以下情况下:
|
| 订单更新 | 创建新订单时,订单状态变更将推送此类事件。 |
所有端点均返回 JSON 对象或数组。数据按升序返回,最旧的在前,最新的在后。
公共 API 端点
这些端点无需任何授权即可访问。
通用端点
| 方法 | 参数 | 描述 |
| Ping | 测试与 Rest API 的连通性。 | |
| GetServerTime | 测试与 Rest API 的连接性并获取当前服务器时间。 | |
| GetExchangeInformation | 当前交易所交易规则和交易对信息 |
市场数据端点
| 方法 | 参数 | 描述 |
| GetOrderBook | 交易对 | 获取订单簿。 |
| GetTrades | 交易对 | 获取最新成交 |
| GetHistoricalTrades | 交易对 | 获取历史交易记录。 |
| GetAggregateTrades | 交易对 | 获取压缩的聚合交易数据。在同一时间以相同价格成交的同一订单的交易,其数量将被聚合。 |
| GetKLines | Symbol, Interval | 某交易对的 K 线/烛线柱。K 线以其开盘时间唯一标识。 |
| Get24hrTicker | 交易对 | 24 小时滚动窗口价格变动统计。不带 symbol 参数访问时请谨慎。 |
| GetPriceTicker | 交易对 | 某个或多个标的的最新价格。 |
| GetBookTicker | 交易对 | 某个或多个交易对在订单簿中的最优价格/数量。 |
| GetMarkPrice | 交易对 | 标记价格和资金费率 |
| GetFundingRateHistory | 交易对 | |
| GetOpenInterest | 交易对 | 获取特定品种当前的持仓量。 |
| GetOpenInterestStatistics | Symbol, Period | |
| GetTopTraderAccountRatio | Symbol, Period | |
| GetTopTraderPositionRatio | Symbol, Period | |
| GetGlobalAccountRatio | Symbol, Period | |
| GetTakerVolume | Symbol, Period | |
| GetContinuousKLines | Pair, ContractType, Interval | 特定合约类型的K线/蜡烛图数据。 |
| GetIndexPriceKLines | Pair, Interval | 交易对指数价格的 K 线/蜡烛图数据。 |
| GetMarkPriceKLines | Symbol, Interval | 某交易对标记价格的 K 线/蜡烛图数据。 |
| GetPremiumIndexKLines | Symbol, Interval | 某个交易对的溢价指数 K 线。 |
| GetFundingInfo | 获取所有品种的资金费率信息。 | |
| GetPriceTickerV2 | 交易对 | 某个交易对或多个交易对的最新价格(V2)。 |
| GetIndexInfo | 交易对 | 获取索引信息。 |
| GetAssetIndex | 交易对 | 获取多资产模式的资产指数。 |
| GetConstituents | 交易对 | 获取指数成分。 |
| GetDeliveryPrice | 货币对 | 获取交割价格。 |
| GetBasis | Pair, ContractType, Period | 获取基础数据。 |
私有 API 端点
需要 APIKey 和 APISecret 才能获得服务器授权。
账户与交易端点
| 方法 | 参数 | 描述 |
| ChangePositionMode | DualPosition | 更改用户在所有交易对上的持仓模式(对冲模式或单向模式) |
| GetCurrentPositionMode | 获取用户在所有交易对上的持仓模式(对冲模式或单向模式) | |
| NewOrder | Symbol、Side、PositionSide、Type | 提交新订单。 |
| PlaceMarketOrder | Side, Symbol, Quantity | |
| PlaceLimitOrder | Side, Symbol, Quantity, LimitPrice | |
| PlaceStopOrder | 方向、交易对、数量、止损价格、限价价格 | |
| PlaceTrailingStopOrder | Side, Symbol, Quantity, aActivationPrice, aCallbackRate | |
| QueryOrder | 交易对 | 查询订单状态。 |
| CancelOrder | 交易对 | 取消一个活跃订单。必须发送 OrderId 或 OrigClientOrderId 之一。 |
| CancelAllOpenOrders | 交易对 | |
| AutoCancelAllOpenOrders | Symbol, CountDownTimer | 在指定倒计时结束时取消指定交易对的所有未结挂单。 |
| QueryCurrentOpenOrder | 交易对 | |
| GetOpenOrders | 交易对 | 获取某个交易对的所有未结订单。访问时不指定交易对请谨慎。 |
| GetAllOrders | 交易对 | 获取所有账户订单;包括活跃、已取消或已成交的订单。 |
| GetAccountBalance | ||
| GetAccountInformation | 获取当前账户信息。 | |
| ChangeInitialLeverage | Symbol, Leverage | 修改特定交易对市场的用户初始杠杆。 |
| ChangeMarginType | Symbol, MarginType | |
| ModifyIsolatedPositionMargin | Symbol, Amount, Type | |
| GetPositionMarginChangeHistory | 交易对 | |
| GetPositionInformation | 交易对 | |
| GetAccountTradeList | 交易对 | |
| GetIncomeHistory | 交易对 | |
| GetNotionalLeverageBracket | 交易对 | |
| TestNewOrder | Symbol、Side、PositionSide、Type | 测试新订单创建和签名/recvWindow 时长。创建并验证新订单,但不将其发送到撮合引擎。 |
| ModifyOrder | 交易对 | 修改现有订单。 |
| NewBatchOrders | BatchOrders | 批量下单。 |
| ModifyBatchOrders | BatchOrders | 修改多个订单。 |
| CancelBatchOrders | 交易对 | 批量取消订单。 |
| GetOrderAmendment | 交易对 | 获取订单修改历史。 |
| CountdownCancelAll | Symbol, CountdownTime | 在指定倒计时结束时取消指定交易对的所有未结挂单。 |
| GetForceOrders | 交易对 | 获取用户的强制平仓订单。 |
| GetADLQuantile | 交易对 | 获取持仓的 ADL 分位数估计。 |
| GetAccountBalanceV3 | 获取合约账户余额(V3)。 | |
| GetAccountInformationV3 | 获取当前账户信息(V3)。 | |
| GetPositionInformationV3 | 交易对 | 获取当前持仓信息(V3)。 |
| GetCommissionRate | 交易对 | 获取用户佣金费率。 |
| GetAccountConfig | 获取当前账户配置。 | |
| GetSymbolConfig | 交易对 | 获取品种配置。 |
| GetOrderRateLimit | 获取用户的订单速率限制。 | |
| GetApiTradingStatus | 交易对 | 获取 API 交易量化规则指标。 |
| ChangeMultiAssetsMode | MultiAssetsMargin | 更改用户的多资产模式。多资产模式:true;单资产模式:false。 |
| GetMultiAssetsMode | 获取用户当前的多资产模式。 | |
| SetFeeBurn | FeeBurn | 更改用户的 BNB 手续费燃烧状态。 |
| GetFeeBurn | 获取用户的 BNB 手续费减免状态。 | |
| CreateListenKey | 启动新的用户数据流。若未发送 keepalive,流将在 60 分钟后关闭。 | |
| KeepAliveListenKey | 保活用户数据流以防止超时。 | |
| CloseListenKey | 关闭用户数据流。 |
Binance Futures 消息在 TsgcWebSocketClient 组件中接收,您可以使用以下事件:
OnConnect
成功连接到 Binance 服务器后。
OnDisconnect
与 Binance 服务器断开连接后
OnMessage
服务器发送给客户端的消息在此事件中处理。
OnError
如果协议出现任何错误,将调用此事件。
OnException
如果存在未处理的异常,将调用此事件。
此外,在 Binance API 组件中有一个名为 OnBinanceHTTPException 的特定事件,每次调用 HTTP 请求(REST API 或 WebSocket 用户数据流)出错时触发。
(*)由于 Binance 服务器的变更,Rad Studio 10.1 之前的 Indy 版本将无法连接到测试服务器。此问题不影响企业版,或已将 Indy 版本升级至最新版本的情况。