params.rs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. // 现货底仓
  29. pub hold_coin: Decimal,
  30. // core的run_strategy函数,用于定期检查使用
  31. pub interval: u64,
  32. // 参考盘口
  33. pub ref_exchange: Vec<String>,
  34. // 参考币种
  35. pub ref_pair: Vec<String>,
  36. // 账户资金使用比例
  37. pub used_pct: Decimal,
  38. // 止损比例 默认0.02 0.02 = 2%
  39. pub stop_loss: Decimal,
  40. // 平滑系数 默认0.999
  41. pub gamma: Decimal,
  42. // 分批建仓功能 小资金建议1 大资金建议3 默认 1
  43. pub grid: i8,
  44. // 是否启用colocation技术, 1开启,0关闭 默认0
  45. pub colo: i8,
  46. // 日志级别,从低到高依次是:[trace, debug, info, warn, error]
  47. pub log_level: String,
  48. // 中控端口
  49. pub port: u32,
  50. // 止损比例
  51. pub max_spread: Decimal,
  52. }
  53. impl Params {
  54. pub fn new(file_path: &str) -> Result<Params, Box<dyn std::error::Error>> {
  55. // 打开文件并读取内容
  56. let mut file = File::open(file_path)?;
  57. let mut contents = String::new();
  58. file.read_to_string(&mut contents)?;
  59. // 解析 TOML 数据到 Params 结构体
  60. let params: Params = from_str(&contents)?;
  61. Ok(params)
  62. }
  63. }