| Crates.io | binance-futures-rs |
| lib.rs | binance-futures-rs |
| version | 0.1.2 |
| created_at | 2025-09-14 14:11:07.129323+00 |
| updated_at | 2025-09-14 15:09:36.779691+00 |
| description | A Rust client library for Binance Futures API |
| homepage | |
| repository | https://github.com/E3IO/binance-futures-rs |
| max_upload_size | |
| id | 1838811 |
| size | 183,900 |
一个专为Binance合约交易设计的Rust客户端库,提供完整的REST API和WebSocket实时数据流支持。
在你的 Cargo.toml 中添加:
[dependencies]
binance-futures-rs = "0.1.1"
tokio = { version = "1.0", features = ["full"] }
use binance_futures_rs::{BinanceClient, KlineInterval};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建客户端(公共端点无需认证)
let client = BinanceClient::new();
// 获取当前比特币价格
let price = client.market().price_ticker(Some("BTCUSDT")).await?;
println!("BTC价格: {}", price[0].price);
// 获取订单簿深度
let depth = client.market().depth("BTCUSDT", Some(10)).await?;
println!("最佳买价: {}", depth.bids[0][0]);
println!("最佳卖价: {}", depth.asks[0][0]);
// 获取K线数据
let klines = client.market().klines(
"BTCUSDT",
KlineInterval::OneHour,
None, None, Some(10)
).await?;
Ok(())
}
use binance_futures_rs::{
BinanceClient, Credentials, NewOrderRequest,
OrderSide, OrderType, TimeInForce
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 设置API凭证
let credentials = Credentials::new(
"your_api_key".to_string(),
"your_secret_key".to_string(),
);
// 创建认证客户端(建议使用测试网)
let client = BinanceClient::testnet_with_credentials(credentials);
// 下限价买单
let order = NewOrderRequest::new(
"BTCUSDT".to_string(),
OrderSide::Buy,
OrderType::Limit,
)
.quantity("0.001".to_string())
.price("30000.0".to_string())
.time_in_force(TimeInForce::Gtc);
let result = client.trading().new_order(order).await?;
println!("订单ID: {}", result.order_id);
Ok(())
}
use binance_futures_rs::{BinanceClient, Credentials};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let credentials = Credentials::new(
"your_api_key".to_string(),
"your_secret_key".to_string(),
);
let client = BinanceClient::testnet_with_credentials(credentials);
// 获取账户信息
let account = client.account().account_info().await?;
println!("总钱包余额: {}", account.total_wallet_balance);
println!("可用余额: {}", account.available_balance);
// 获取持仓信息
let positions = client.account().position_risk(None).await?;
for position in positions {
if position.position_amt != "0" {
println!("持仓: {} {}", position.symbol, position.position_amt);
}
}
Ok(())
}
/fapi/v1/depth)/fapi/v1/ticker/price)/fapi/v1/ticker/24hr)/fapi/v1/klines)/fapi/v1/trades)/fapi/v1/historicalTrades)/fapi/v1/aggTrades)/fapi/v1/premiumIndex)/fapi/v1/exchangeInfo)POST /fapi/v1/order)DELETE /fapi/v1/order)GET /fapi/v1/order)GET /fapi/v1/allOrders)GET /fapi/v1/openOrders)POST /fapi/v1/batchOrders)GET /fapi/v1/userTrades)GET /fapi/v2/account)GET /fapi/v2/balance)GET /fapi/v2/positionRisk)GET /fapi/v1/income)GET /fapi/v1/leverageBracket)GET /fapi/v1/adlQuantile)GET /fapi/v1/forceOrders)GET /fapi/v1/commissionRate)运行示例程序:
# 市场数据示例(无需API密钥)
cargo run --example market_data
# 交易示例(需要设置环境变量)
export BINANCE_API_KEY="your_testnet_api_key"
export BINANCE_SECRET_KEY="your_testnet_secret_key"
cargo run --example trading_example
# 账户信息示例
cargo run --example account_example
强烈建议在测试网上进行开发和测试:
BinanceClient::testnet_with_credentials() 创建客户端let client = BinanceClient::testnet_with_credentials(credentials);
库提供了详细的错误类型:
use binance_futures_rs::{BinanceError, Result};
match client.market().price_ticker(Some("BTCUSDT")).await {
Ok(price) => println!("价格: {}", price[0].price),
Err(BinanceError::Api { code, msg }) => {
println!("API错误 {}: {}", code, msg);
}
Err(BinanceError::Http(e)) => {
println!("网络错误: {}", e);
}
Err(e) => {
println!("其他错误: {}", e);
}
}
欢迎提交Issue和Pull Request!
MIT License
此库仅供教育和开发目的。使用此库进行实际交易时,请自行承担风险。作者不对任何交易损失负责。