|
|
@@ -3,6 +3,8 @@ use std::io::Read;
|
|
|
use rust_decimal::Decimal;
|
|
|
use toml::from_str;
|
|
|
use serde_derive::Deserialize;
|
|
|
+use serde_json::Value;
|
|
|
+use tracing::info;
|
|
|
|
|
|
|
|
|
#[derive(Debug, Deserialize, Clone)]
|
|
|
@@ -48,7 +50,7 @@ pub struct Params {
|
|
|
// 日志级别,从低到高依次是:[trace, debug, info, warn, error]
|
|
|
pub log_level: String,
|
|
|
// 中控端口
|
|
|
- pub port: u32
|
|
|
+ pub port: u32,
|
|
|
}
|
|
|
|
|
|
impl Params {
|
|
|
@@ -65,18 +67,42 @@ impl Params {
|
|
|
}
|
|
|
pub fn new_json(file_path: &str) -> Result<Params, Box<dyn std::error::Error>> {
|
|
|
// 打开文件并读取内容
|
|
|
- // let mut file = File::open(file_path)?;
|
|
|
- // let mut contents = String::new();
|
|
|
- // file.read_to_string(&mut contents)?;
|
|
|
-
|
|
|
let json_contents = std::fs::read_to_string(file_path)?;
|
|
|
- // 使用serde_json库来解析JSON文件内容,并将其转换为Ship结构体
|
|
|
- let params: Params = serde_json::from_str(&json_contents)?;
|
|
|
-
|
|
|
-
|
|
|
- // 解析 TOML 数据到 Params 结构体
|
|
|
- // let params: Params = from_str(&contents)?;
|
|
|
|
|
|
+ let json_value: serde_json::Value = serde_json::from_str(&json_contents).unwrap();
|
|
|
+ let acc = json_value["account"].clone();
|
|
|
+ let mut ref_exchange: Vec<String> = vec![];
|
|
|
+ for r in json_value["ref_exchange"].as_array().unwrap() {
|
|
|
+ ref_exchange.push(r.as_str().unwrap().to_string())
|
|
|
+ }
|
|
|
+ let mut ref_pair: Vec<String> = vec![];
|
|
|
+ ref_pair.push(json_value["ref_pair"].as_str().unwrap().to_string());
|
|
|
+ // 使用serde_json库来解析JSON文件内容,并将其转换为Ship结构体
|
|
|
+ // let params: Params = serde_json::from_str(&json_contents)?;
|
|
|
+ let params: Params = Params {
|
|
|
+ broker_id: json_value["broker_id"].as_str().unwrap().to_string(),
|
|
|
+ account_name: acc["name"].as_str().unwrap().to_string(),
|
|
|
+ access_key: acc["accessKey"].as_str().unwrap().to_string(),
|
|
|
+ secret_key: acc["secretKey"].as_str().unwrap().to_string(),
|
|
|
+ pass_key: acc["pass"].as_str().unwrap().to_string(),
|
|
|
+ exchange: json_value["exchange"].as_str().unwrap().to_string(),
|
|
|
+ pair: json_value["pair"].as_str().unwrap().to_string(),
|
|
|
+ open: Decimal::try_from(json_value["open"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ close: Decimal::try_from(json_value["close"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ lever_rate: Decimal::try_from(json_value["lever_rate"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ hold_coin: Decimal::try_from(json_value["lever_rate"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ interval: json_value["lever_rate"].as_u64().unwrap_or_default(),
|
|
|
+ ref_exchange: ref_exchange,
|
|
|
+ ref_pair: ref_pair,
|
|
|
+ used_pct: Decimal::try_from(json_value["used_pct"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ stop_loss: Decimal::try_from(json_value["stop_loss"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ gamma: Decimal::try_from(json_value["gamma"].as_f64().unwrap_or_default()).unwrap(),
|
|
|
+ grid: json_value["gamma"].as_i64().unwrap_or_default() as i8,
|
|
|
+ colo: json_value["colo"].as_i64().unwrap_or_default() as i8,
|
|
|
+ log_level: json_value["log_level"].as_str().unwrap().to_string(),
|
|
|
+ port: json_value["colo"].as_u64().unwrap_or_default() as u32,
|
|
|
+ };
|
|
|
+ // println!("?????????:{:?}。", params);
|
|
|
Ok(params)
|
|
|
}
|
|
|
}
|