1 个稳定版本

1.0.0 2023年9月28日

#11 in #binance

自定义许可协议

94KB
2K SLoC

路线图

  • USD-M 期货 WebSocket
  • USD-M 期货 Rest Api
  • SpotMarket WebSocket
  • SpotMarket Rest Api
  • Coin-M 期货 WebSocket
  • Coin-M 期货 Rest Api

binance_connect::futures_usd

功能

  • 通过事件消费者连接到 Binance USD-M 期货 WebSocket,以接收实时市场和账户更新。
  • 消费的事件包含返回的 Binance 数据的(净化后的)结构体表示。
  • 听键的创建和保持活动由库管理。
  • WebSocket 连接断开由库捕获和管理。这是因为 Binance 强制在 24 小时后断开连接。这可以通过在 FuturesWebSocketConfig 中使用 reconnect(bool) 设置器进行配置(默认设置为 true)。

入门指南

无配置

创建一个 FuturesUsdStream 实例,并添加所需的实时更新流。在这个例子中,我们正在订阅 BTC/USDT 交易对的订单深度和所有订单指标。

let fus: FuturesUsdStream = FuturesUsdStream::default()
    .with_book_depth("btcusdt", BookDepthUpdateSpeed::Millis500)
    .with_book_tickers()
    .start();

有配置

使用 ApiAuth 结构体设置您的 Binance API 身份验证。当请求 用户数据流 时,这是必需的。

let api_auth: ApiAuth = ApiAuth::new(
    "YOUR_API_KEY".to_string(),
    "YOUR_API_SECRET".to_string(),
);

可以创建一个 FuturesWebsocketConfig 来将配置选项传递给 FuturesUsdStream。例如;您可以选择使用 Binance 测试网或生产环境。当需要经过身份验证的连接时,FuturesWebsocketConfig 是必需的。

let config: FuturesWebSocketConfig = FuturesWebSocketConfig::with_config(config)
    .with_api_auth(api_auth)
    .use_testnet(); // Use the testnet environment (remove for live trading)

使用 with_config() 构造函数创建 FuturesUsdStream 实例,并添加所需的实时更新流。在这个例子中,我们正在订阅 BTC/USDT 交易对的订单深度、所有订单指标以及因为调用了 with_api_auth 方法在 FuturesWebsocketConfig 上,所以所有 用户数据流

let fus: FuturesUsdStream = FuturesUsdStream::with_config(config)
    .with_book_depth("btcusdt", BookDepthUpdateSpeed::Millis500)
    .with_book_tickers()
    .start();

消费事件

使用 FuturesUsdStreamconsume() 方法开始消费事件,并根据需要处理它们。

for event in fus.consume() {
    match event {
        BookDepthEvent(book_depth) => {
            println!("{:?}", book_depth)
        }
        BookTickersEvent(book_tickers) => {
            for book_ticker in book_tickers.data {
                println!("{:?}", book_ticker)
            }
        }
       // Only available with `with_api_auth(api_auth)` called on `FuturesWebsocketConfig` 
        AccountUpdateEvent(account_update) => {
            println!("{:?}", account_update)
        }
        _ => {}
    }
}

消费事件时返回的结构体遵循可预测的属性名称规范,而不是Binance使用的单个字母规范。属性值可以是枚举类型。请参阅 src/futures_usd/enums/binance.rs

以下以 BookTicker 响应结构体为例。请参阅 src/futures_usd/response.rs

pub struct BookTicker {
    pub event_type: EventType,
    pub event_time: u64,
    pub symbol: String,
    pub update_id: u64,
    pub bid_price: f64,
    pub bid_quantity: f64,
    pub ask_price: f64,
    pub ask_quantity: f64,
    pub transaction_time: u64,
}

事件

 /* MARKET_DATA */
 BookTickerEvent(BookTicker),
 BookTickersEvent(BookTickers),
 AggTradeEvent(AggTrade),
 MarkPriceUpdateEvent(MarkPriceUpdate),
 MarkPriceUpdatesEvent(MarkPriceUpdates),
 KlineEvent(Kline),
 ContinuousKlineEvent(ContinuousKline),
 MiniTickerEvent(MiniTicker),
 MiniTickersEvent(MiniTickers),
 TickerEvent(Ticker),
 TickersEvent(Tickers),
 ForceOrderEvent(ForceOrder),
 BookDepthEvent(BookDepth),
 CompositeIndexEvent(CompositeIndex),
 ContractInfoEvent(ContractInfo),
 AssetIndexUpdateEvent(AssetIndexUpdate),
 AssetIndexUpdatesEvent(AssetIndexUpdates),
 /* USER_DATA */
 OrderTradeUpdateEvent(OrderTradeUpdate),
 AccountUpdateEvent(AccountUpdate),
 MarginCallEvent(MarginCall),
 AccountConfigUpdateEvent(AccountConfigUpdate),
 StrategyUpdateEvent(StrategyUpdate),
 GridUpdateEvent(GridUpdate),
 ConditionalOrderTriggerRejectEvent(ConditionalOrderTriggerReject),
 /* SYSTEM */
 SubscribeResponseEvent,

错误

所有错误都会传递到 BinanceConnectError。 请参阅 src/error.rs

许可

本项目采用 MIT 许可协议。有关详细信息,请参阅 LICENSE 文件。

依赖项

~9–24MB
~388K SLoC