//! NAC SDK 交易所交易示例 //! //! 本示例演示如何使用NAC SDK进行交易所交易: //! 1. 查询交易对列表 //! 2. 查询市场深度 //! 3. 查询K线数据 //! 4. 下限价单 //! 5. 下市价单 //! 6. 查询订单状态 //! 7. 取消订单 //! //! 运行示例: //! ```bash //! cargo run --example trading //! ``` use nac_sdk::adapters::{NACAdapter, config::NACConfig}; #[tokio::main] async fn main() -> Result<(), Box> { println!("=== NAC 交易所交易示例 ===\n"); println!("场景: Bob想要在NAC交易所交易ANPT/XTZH交易对\n"); // 1. 初始化 println!("【步骤1】初始化NAC SDK"); let config = NACConfig::default(); let adapter = NACAdapter::new(&config).await?; println!("✓ SDK初始化成功\n"); // 2. 生成Bob的密钥对 println!("【步骤2】生成Bob的密钥对和地址"); let (bob_private_key, bob_public_key) = adapter.l0().generate_keypair(); let bob_address = adapter.l0().address_from_public_key(&bob_public_key)?; println!("✓ Bob的地址: {}\n", hex::encode(&bob_address)); // 3. 查询交易对列表 println!("【步骤3】查询可用的交易对"); println!("正在查询交易对..."); // let pairs = adapter.l5().get_trading_pairs().await?; println!("✓ 查询成功 (模拟)"); println!(" 可用交易对:"); println!(" 1. ANPT/XTZH - Alice NYC Property Token / XTZH稳定币"); println!(" 2. GOLD/XTZH - Gold Token / XTZH稳定币"); println!(" 3. OIL/XTZH - Oil Token / XTZH稳定币\n"); let trading_pair = "ANPT/XTZH"; println!("Bob选择交易对: {}\n", trading_pair); // 4. 查询市场深度 println!("【步骤4】查询市场深度"); println!("正在查询市场深度..."); // let depth = adapter.l5().get_market_depth(trading_pair).await?; println!("✓ 市场深度 (模拟):"); println!("\n 卖单 (Asks):"); println!(" 价格 数量 总计"); println!(" --------------------------------"); println!(" 1.53 XTZH 5,000 ANPT 7,650 XTZH"); println!(" 1.52 XTZH 10,000 ANPT 15,200 XTZH"); println!(" 1.51 XTZH 15,000 ANPT 22,650 XTZH"); println!("\n 买单 (Bids):"); println!(" 价格 数量 总计"); println!(" --------------------------------"); println!(" 1.50 XTZH 20,000 ANPT 30,000 XTZH"); println!(" 1.49 XTZH 25,000 ANPT 37,250 XTZH"); println!(" 1.48 XTZH 30,000 ANPT 44,400 XTZH\n"); // 5. 查询K线数据 println!("【步骤5】查询K线数据"); println!("正在查询1小时K线..."); // let klines = adapter.l5().get_kline_data(trading_pair, "1h", 24).await?; println!("✓ K线数据 (最近24小时) (模拟):"); println!(" 开盘价: 1.48 XTZH"); println!(" 最高价: 1.55 XTZH"); println!(" 最低价: 1.47 XTZH"); println!(" 收盘价: 1.51 XTZH"); println!(" 成交量: 500,000 ANPT"); println!(" 成交额: 755,000 XTZH\n"); // 6. 下限价买单 println!("【步骤6】下限价买单"); println!("Bob想要以1.50 XTZH的价格买入10,000 ANPT"); println!("正在下单..."); // let order_id = adapter.l5().place_order( // trading_pair, // OrderType::Limit, // OrderSide::Buy, // 1.50, // 10000.0 // ).await?; let order_id = "ORDER-2024-001"; println!("✓ 订单创建成功"); println!(" 订单ID: {}", order_id); println!(" 交易对: {}", trading_pair); println!(" 类型: 限价单 (Limit)"); println!(" 方向: 买入 (Buy)"); println!(" 价格: 1.50 XTZH"); println!(" 数量: 10,000 ANPT"); println!(" 总价: 15,000 XTZH\n"); // 7. 查询订单状态 println!("【步骤7】查询订单状态"); println!("正在查询订单状态..."); // let order_status = adapter.l5().get_order_status(order_id).await?; println!("✓ 订单状态 (模拟):"); println!(" 订单ID: {}", order_id); println!(" 状态: 部分成交 (Partially Filled)"); println!(" 已成交: 5,000 ANPT"); println!(" 未成交: 5,000 ANPT"); println!(" 平均成交价: 1.50 XTZH\n"); // 8. 查询Bob的订单列表 println!("【步骤8】查询Bob的所有订单"); println!("正在查询订单列表..."); // let orders = adapter.l5().get_user_orders(&bob_address).await?; println!("✓ 订单列表 (模拟):"); println!(" 订单1: ORDER-2024-001 - 买入 10,000 ANPT @ 1.50 XTZH - 部分成交"); println!(" 订单2: ORDER-2024-002 - 卖出 3,000 ANPT @ 1.55 XTZH - 已完成"); println!(" 订单3: ORDER-2024-003 - 买入 5,000 ANPT @ 1.48 XTZH - 已取消\n"); // 9. 下市价买单 println!("【步骤9】下市价买单"); println!("Bob想要以市价立即买入5,000 ANPT"); println!("正在下单..."); // let market_order_id = adapter.l5().place_order( // trading_pair, // OrderType::Market, // OrderSide::Buy, // 0.0, // 市价单不需要指定价格 // 5000.0 // ).await?; let market_order_id = "ORDER-2024-004"; println!("✓ 市价单创建成功"); println!(" 订单ID: {}", market_order_id); println!(" 交易对: {}", trading_pair); println!(" 类型: 市价单 (Market)"); println!(" 方向: 买入 (Buy)"); println!(" 数量: 5,000 ANPT"); println!(" 状态: 已完成 (Filled)"); println!(" 平均成交价: 1.51 XTZH"); println!(" 总价: 7,550 XTZH\n"); // 10. 取消订单 println!("【步骤10】取消未完成的限价单"); println!("Bob决定取消ORDER-2024-001的未成交部分"); println!("正在取消订单..."); // adapter.l5().cancel_order(order_id).await?; println!("✓ 订单取消成功"); println!(" 订单ID: {}", order_id); println!(" 已取消数量: 5,000 ANPT\n"); // 11. 查询Bob的钱包余额 println!("【步骤11】查询Bob的钱包余额"); println!("正在查询余额..."); // let anpt_balance = adapter.l5().get_wallet_balance(&bob_address).await?; println!("✓ 钱包余额 (模拟):"); println!(" ANPT: 10,000 代币 (价值 15,100 XTZH)"); println!(" XTZH: 50,000 稳定币"); println!(" 总资产: 65,100 XTZH\n"); // 12. 查询交易历史 println!("【步骤12】查询Bob的交易历史"); println!("正在查询交易历史..."); // let history = adapter.l5().get_transaction_history(&bob_address, 10).await?; println!("✓ 交易历史 (最近10笔) (模拟):"); println!(" 1. 2026-02-19 10:30:00 - 买入 5,000 ANPT @ 1.51 XTZH"); println!(" 2. 2026-02-19 10:25:00 - 买入 5,000 ANPT @ 1.50 XTZH"); println!(" 3. 2026-02-19 10:20:00 - 卖出 3,000 ANPT @ 1.55 XTZH"); println!(" 4. 2026-02-19 10:15:00 - 买入 2,000 ANPT @ 1.49 XTZH"); println!(" 5. 2026-02-19 10:10:00 - 充值 100,000 XTZH\n"); // 13. 完成 println!("=== 交易示例完成 ===\n"); println!("总结:"); println!("✓ Bob成功在NAC交易所交易ANPT/XTZH交易对"); println!("✓ 总共买入: 10,000 ANPT"); println!("✓ 平均成交价: 1.505 XTZH"); println!("✓ 总花费: 15,050 XTZH"); println!("✓ 当前持仓: 10,000 ANPT (价值 15,100 XTZH)"); println!("✓ 浮动盈亏: +50 XTZH (+0.33%)\n"); println!("下一步:"); println!("- Bob可以继续交易或持有等待升值"); println!("- Bob可以将ANPT代币转移到其他地址"); println!("- Bob可以获得ANPT代币的租金收益分红"); Ok(()) }