#![allow(clippy::field_reassign_with_default)]
use ccxt_core::error::Result;
use ccxt_exchanges::binance::Binance;
use std::collections::HashMap;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
let mut config = ccxt_core::ExchangeConfig::default();
config.api_key = std::env::var("BINANCE_API_KEY")
.ok()
.map(ccxt_core::SecretString::new);
config.secret = std::env::var("BINANCE_API_SECRET")
.ok()
.map(ccxt_core::SecretString::new);
let exchange = Arc::new(Binance::new(config)?);
println!("Starting subscription to user trade records...");
match exchange
.clone()
.watch_my_trades(None, None, Some(10), None)
.await
{
Ok(trades) => {
println!("\nReceived {} trade records:", trades.len());
for trade in trades {
println!(
" {} - {} {} @ {} (order: {:?})",
trade.symbol, trade.side, trade.amount, trade.price, trade.order
);
}
}
Err(e) => {
eprintln!("Failed to subscribe to trades: {:?}", e);
}
}
println!("\nSubscribing to BTC/USDT trades...");
match exchange
.clone()
.watch_my_trades(Some("BTC/USDT"), None, Some(5), Some(HashMap::new()))
.await
{
Ok(trades) => {
println!("\nReceived {} BTC/USDT trade records:", trades.len());
for trade in trades {
println!(
" {} {} @ {} (fee: {:?})",
trade.side, trade.amount, trade.price, trade.fee
);
}
}
Err(e) => {
eprintln!("Failed to subscribe to BTC/USDT trades: {:?}", e);
}
}
Ok(())
}