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();
消费事件
使用 FuturesUsdStream
的 consume()
方法开始消费事件,并根据需要处理它们。
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