fn print_orderbook(orderbook: &Orderbook) {
println!("═══════════════════════════════════════");
println!("Market: {}", orderbook.market_id);
println!("Asset: {}", orderbook.asset_id);
if let Some(ts) = orderbook.timestamp {
println!("Time: {}", ts.format("%H:%M:%S%.3f UTC"));
}
println!("\n {:>10} {:>10}", "PRICE", "SIZE");
println!(" ─────────────────────");
// Show top 5 asks (reversed for display)
for level in orderbook.asks.iter().take(5).rev() {
println!(" {:>10.4} {:>10.0} ASK", level.price, level.size);
}
println!(" ─────────────────────");
// Show top 5 bids
for level in orderbook.bids.iter().take(5) {
println!(" {:>10.4} {:>10.0} BID", level.price, level.size);
}
// Summary
if let (Some(bid), Some(ask)) = (orderbook.best_bid(), orderbook.best_ask()) {
println!("\nBest Bid: ${:.4}", bid);
println!("Best Ask: ${:.4}", ask);
println!("Spread: ${:.4} ({:.2}%)",
ask - bid,
(ask - bid) / ((bid + ask) / 2.0) * 100.0
);
}
if let Some(mid) = orderbook.mid_price() {
println!("Mid: ${:.4}", mid);
}
}