symbols_list/
symbols_list.rs1use std::time::Duration;
7
8use ctrader_rs::{Client, Config};
9
10#[tokio::main]
11async fn main() -> Result<(), Box<dyn std::error::Error>> {
12 dotenvy::dotenv().ok();
13
14 tracing_subscriber::fmt()
15 .with_env_filter("symbols_list=debug,ctrader_rs=debug")
16 .with_line_number(true)
17 .init();
18
19 let client_id = std::env::var("CTRADER_CLIENT_ID")?;
20 let secret = std::env::var("CTRADER_SECRET")?;
21 let token = std::env::var("CTRADER_TOKEN")?;
22 let account_id: i64 = std::env::var("CTRADER_ACCOUNT_ID")?.parse()?;
23
24 let config = Config::new(client_id, secret).deadline(Duration::from_secs(5));
25
26 println!("Connecting …");
27 let client = Client::start(config).await?;
28 println!("✓ Connected");
29
30 let auth_res = client.account_auth(account_id, &token).await?;
32 assert_eq!(auth_res.ctid_trader_account_id, account_id);
33 println!("✓ Account {account_id} authenticated");
34
35 let res = client.symbols_list(account_id, false).await?;
37 println!("\nTotal symbols: {}", res.symbol.len());
38
39 let xauusd = res
41 .symbol
42 .iter()
43 .find(|s| s.symbol_name.as_deref() == Some("XAUUSD"));
44
45 match xauusd {
46 Some(sym) => println!(
47 "✓ XAUUSD found (id={}, enabled={})",
48 sym.symbol_id,
49 sym.enabled.unwrap_or(false)
50 ),
51 None => println!("✗ XAUUSD NOT found in symbol list"),
52 }
53
54 println!("\nFirst 10 symbols:");
56 println!("{:<10} {:<15} {}", "ID", "Name", "Enabled");
57 println!("{}", "-".repeat(35));
58 for sym in res.symbol.iter().take(10) {
59 println!(
60 "{:<10} {:<15} {}",
61 sym.symbol_id,
62 sym.symbol_name.as_deref().unwrap_or(""),
63 sym.enabled.unwrap_or(false),
64 );
65 }
66
67 Ok(())
68}