params.rs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. use std::fs::File;
  2. use std::io::Read;
  3. use rust_decimal::Decimal;
  4. use toml::from_str;
  5. use serde_derive::Deserialize;
  6. #[derive(Debug, Deserialize, Clone)]
  7. pub struct Params {
  8. // 经纪商id
  9. pub broker_id: String,
  10. // 账号昵称
  11. pub account_name: String,
  12. // ak
  13. pub access_key: String,
  14. // sk
  15. pub secret_key: String,
  16. // pk
  17. pub pass_key: String,
  18. // 交易盘口
  19. pub exchange: String,
  20. // 交易币对
  21. pub pair: String,
  22. // 开仓
  23. pub open: Decimal,
  24. // 平仓
  25. pub close: Decimal,
  26. // 杠杆大小
  27. pub lever_rate: Decimal,
  28. // quant的run_strategy函数,用于定期检查使用
  29. pub interval: u64,
  30. // 参考盘口
  31. pub ref_exchange: Vec<String>,
  32. // 参考币种
  33. pub ref_pair: Vec<String>,
  34. // 账户资金使用比例
  35. pub used_pct: Decimal,
  36. // 止损比例 默认0.02 0.02 = 2%
  37. pub stop_loss: Decimal,
  38. // 平滑系数 默认0.999
  39. pub gamma: Decimal,
  40. // 分批建仓功能 小资金建议1 大资金建议3 默认 1
  41. pub grid: i8,
  42. // 是否启用colocation技术, 1开启,0关闭 默认0
  43. pub colo: i8,
  44. // 日志级别,从低到高依次是:[trace, debug, info, warn, error]
  45. pub log_level: String,
  46. // 中控端口
  47. pub port: u32,
  48. }
  49. impl Params {
  50. pub fn new(file_path: &str) -> Result<Params, Box<dyn std::error::Error>> {
  51. // 打开文件并读取内容
  52. let mut file = File::open(file_path)?;
  53. let mut contents = String::new();
  54. file.read_to_string(&mut contents)?;
  55. // 解析 TOML 数据到 Params 结构体
  56. let params: Params = from_str(&contents)?;
  57. Ok(params)
  58. }
  59. }