CCXT
Rust Examples

Watch Trades

Watch Trades — CCXT Rust code example.

use ccxt::Params;
use ccxt_pro::Binance;

// run it by doing: cargo run --bin watch_trades --features ws --release -- BTC/USDT

async fn run() {
    let symbol = std::env::args()
        .nth(1)
        .unwrap_or_else(|| "BTC/USDT".to_string());

    let mut exchange = Binance::new(None);
    if let Err(e) = exchange.try_load_markets(false).await {
        println!("load_markets failed [{}]: {}", e.kind, e.message);
        return;
    }

    println!("watching {symbol} trades on binance, ctrl-c to stop");

    loop {
        match exchange
            .watch_trades(&symbol, None, None, Params::none())
            .await
        {
            Ok(trades) => {
                for trade in &trades {
                    println!(
                        "{}  {:<12}  {:<4}  price={:<12} amount={:<12} cost={:?}",
                        trade.datetime.clone().unwrap_or_default(),
                        trade.id.clone().unwrap_or_default(),
                        trade.side.clone().unwrap_or_default(),
                        trade.price.unwrap_or(0.0),
                        trade.amount.unwrap_or(0.0),
                        trade.cost,
                    );
                }
            }
            Err(e) => println!("[{}] {}", e.kind, e.message),
        }
    }
}

fn main() {
    if std::env::var("CCXT_SHOW_PANICS").is_err() {
        std::panic::set_hook(Box::new(|_| {}));
    }
    let rt = tokio::runtime::Builder::new_multi_thread()
        .worker_threads(2)
        .thread_stack_size(64 * 1024 * 1024)
        .enable_all()
        .build()
        .unwrap();
    rt.block_on(run());
}