Browse Source

移除部分配置,完善参数说明

skyfffire 2 years ago
parent
commit
439458564a
5 changed files with 15 additions and 41 deletions
  1. 1 9
      config.toml.sample
  2. 2 7
      global/src/params.rs
  3. 4 9
      strategy/src/quant.rs
  4. 4 8
      strategy/src/strategy.rs
  5. 4 8
      strategy/src/utils.rs

+ 1 - 9
config.toml.sample

@@ -18,7 +18,7 @@ open = 0.001
 close = 0.0002
 # 杠杆倍率
 lever_rate = 0.1
-# 【已废弃参数,但是不能删除】延迟时间,改成ms级别
+# quant的run_strategy函数,用于定期检查使用,单位是毫秒
 interval = 100
 # 参考交易所,可选[gate_usdt_swap, kucoin_usdt_swap, binance_usdt_swap, binance_usdt_spot]
 ref_exchange = ["binance_usdt_swap"]
@@ -26,20 +26,12 @@ ref_exchange = ["binance_usdt_swap"]
 ref_pair = ["blz_usdt"]
 # 资金使用比率,0.9代表90%
 used_pct = 0.9
-# 【已废弃参数,但是不能删除】参考交易所下标
-index = 0
-# 【已废弃参数,但是不能删除】现货底仓
-hold_coin = 0.0
-# 【已废弃参数,但是不能删除】是否打印日志
-log = 1
 # 总体止损比例,0.02代表2%
 stop_loss = 0.02
 # gamma值,参与预测价格计算的
 gamma = 0.999
 # 分批建仓功能 小资金建议1 大资金建议3 默认 1
 grid = 1
-# 【已废弃参数,但是不能删除】允许的每秒下单次数
-place_order_limit = 0
 # 是否启用colo通道
 colo = 0
 # 日志级别,从低到高依次是:[trace, debug, info, warn, error],推荐使用info

+ 2 - 7
global/src/params.rs

@@ -27,25 +27,20 @@ pub struct Params {
     pub close: Decimal,
     // 杠杆大小
     pub lever_rate: Decimal,
-
-    pub interval: Decimal,
+    // quant的run_strategy函数,用于定期检查使用
+    pub interval: u64,
     // 参考盘口
     pub ref_exchange: Vec<String>,
     // 参考币种
     pub ref_pair: Vec<String>,
     // 账户资金使用比例
     pub used_pct: Decimal,
-    // 默认第n参考盘口
-    pub index: i8,
-    pub hold_coin: Decimal,
     // 止损比例 默认0.02  0.02 = 2%
     pub stop_loss: Decimal,
     // 平滑系数 默认0.999
     pub gamma: Decimal,
     // 分批建仓功能 小资金建议1 大资金建议3 默认 1
     pub grid: i8,
-    // 允许的每秒下单次数
-    pub place_order_limit: i64,
     // 是否启用colocation技术, 1开启,0关闭 默认0
     pub colo: i8,
     // 日志级别,从低到高依次是:[trace, debug, info, warn, error]

+ 4 - 9
strategy/src/quant.rs

@@ -22,10 +22,8 @@ use standard::exchange::{Exchange};
 use standard::exchange::ExchangeEnum::{BinanceSpot, BinanceSwap, GateSpot, GateSwap, KucoinSwap};
 
 use crate::model::{LocalPosition, OrderInfo, TraderMsg};
-
 use crate::predictor::Predictor;
 use crate::strategy::Strategy;
-use crate::utils::{clip};
 
 
 pub struct Quant {
@@ -38,8 +36,6 @@ pub struct Quant {
     pub base: String,
     // 报价货币
     pub quote: String,
-    // 现货底仓
-    pub hold_coin: Decimal,
     //
     pub strategy: Strategy,
     // 本地挂单表
@@ -66,7 +62,7 @@ pub struct Quant {
     pub local_buy_value: Decimal,
     pub local_sell_value: Decimal,
     pub local_cancel_log: HashMap<String, i64>,
-    pub interval: Decimal,
+    pub interval: u64,
     pub exchange: String,
     pub trade_msg: TraderMsg,
     pub exit_msg: String,
@@ -114,7 +110,6 @@ impl Quant {
             symbol: symbol.clone(),
             base: pairs[0].to_string(),
             quote: pairs[1].to_string(),
-            hold_coin: clip(params.hold_coin, dec!(0.0), dec!(10000.0)),
             strategy: Strategy::new(&params, true),
             local_orders: Default::default(),
             local_orders_backup: Default::default(),
@@ -1265,9 +1260,9 @@ pub fn run_strategy(quant_arc: Arc<Mutex<Quant>>) -> JoinHandle<()>{
                     quant.check_ready();
                 }
                 // 计算耗时并进行休眠
-                let pass_time = Utc::now().timestamp_millis() - start_time;
-                if pass_time < quant.interval.to_i64().unwrap() {
-                    delay = quant.interval.to_u64().unwrap() - pass_time.to_u64().unwrap();
+                let pass_time = (Utc::now().timestamp_millis() - start_time).to_u64().unwrap();
+                if pass_time < quant.interval {
+                    delay = quant.interval - pass_time;
                 }
             }
             sleep(Duration::from_millis(delay)).await;

+ 4 - 8
strategy/src/strategy.rs

@@ -13,8 +13,6 @@ use standard::OrderCommand;
 
 #[derive(Debug)]
 pub struct Strategy {
-    // pub interval: Decimal,                                       // 原文没有使用过这个参数
-
     // 各类时间戳和时延,我们都改成了毫秒级
     pub _print_time: i64,                                           // 上次打印时间
     pub _print_interval: i64,                                       // 打印时延
@@ -39,7 +37,6 @@ pub struct Strategy {
     pub limit_order_requests_num: i64,                              // 单位(时延)时间内下单次数上限
     pub _req_num_per_window: i64,                                   // 单位(时延)时间内请求上限窗口
 
-    pub place_order_limit: i64,                                     // 参数层面传进来的下单数量限制
     pub params: Params,                                             //
     pub exchange: String,                                           //
     pub broker_id: String,                                          //
@@ -124,7 +121,6 @@ impl Strategy {
             check_wait_interval: 10 * 1000,
             _check_local_orders_time: 0,
             _check_local_orders_interval: 0,
-            place_order_limit: 0,
             request_limit_check_time: 0,
             request_limit_check_interval: 0,
             limit_requests_num: 0,
@@ -214,16 +210,15 @@ impl Strategy {
         strategy._check_local_orders_time = now.timestamp_millis();
         strategy._check_local_orders_interval = 10 * 1000;
         // 下单的相关限制处理
-        strategy.place_order_limit = params.place_order_limit;
         strategy.request_limit_check_time = now.timestamp_millis();
         strategy.request_limit_check_interval = 10 * 1000;
         // 求得正常请求数量和下单请求数量(interval时间内)
         let request_limit_check_interval_per_second = strategy.request_limit_check_interval / 1000;
-        strategy.limit_requests_num = utils::get_limit_requests_num_per_second(params.exchange.clone(), params.place_order_limit) * (request_limit_check_interval_per_second);
-        strategy.limit_order_requests_num = utils::get_limit_order_requests_num_per_second(params.exchange.clone(), params.place_order_limit) * (request_limit_check_interval_per_second);
+        strategy.limit_requests_num = utils::get_limit_requests_num_per_second(params.exchange.clone()) * (request_limit_check_interval_per_second);
+        strategy.limit_order_requests_num = utils::get_limit_order_requests_num_per_second(params.exchange.clone()) * (request_limit_check_interval_per_second);
         // 开仓下单间隔 均匀下单机会
         strategy.post_open_time = now.timestamp_millis();
-        let post_open_interval_per_second = Decimal::ONE.div(Decimal::from_i64(utils::get_limit_order_requests_num_per_second(params.exchange.clone(), 0)).unwrap());
+        let post_open_interval_per_second = Decimal::ONE.div(Decimal::from_i64(utils::get_limit_order_requests_num_per_second(params.exchange.clone())).unwrap());
         strategy.post_open_interval = dec!(1000).mul(post_open_interval_per_second).to_i64().unwrap();
         info!("策略模块初始化完成!");
 
@@ -1282,6 +1277,7 @@ mod tests {
             create_time: 0,
             status: "".to_string(),
             fee: Default::default(),
+            trace_stack: Default::default(),
         });
         trader_msg.cash = dec!(1000);
         trader_msg.coin = Decimal::ZERO;

+ 4 - 8
strategy/src/utils.rs

@@ -44,10 +44,8 @@ pub fn fix_price(amount: Decimal, tick_size: Decimal) -> Decimal {
 }
 
 // 每秒请求频率
-pub fn get_limit_requests_num_per_second(exchange: String, limit: i64) -> i64 {
-    if limit != 0 {
-        return limit * public_params::RATIO;
-    } else if exchange.eq("kucoin_spot") {
+pub fn get_limit_requests_num_per_second(exchange: String) -> i64 {
+    if exchange.eq("kucoin_spot") {
         return public_params::KUCOIN_SPOT_LIMIT * public_params::RATIO;
     } else if exchange.eq("kucoin_usdt_swap") {
         return public_params::KUCOIN_USDT_SWAP_LIMIT * public_params::RATIO;
@@ -70,10 +68,8 @@ pub fn get_limit_requests_num_per_second(exchange: String, limit: i64) -> i64 {
 }
 
 // 每秒下单请求频率
-pub fn get_limit_order_requests_num_per_second(exchange: String, limit: i64) -> i64 {
-    if limit != 0 {
-        return limit
-    } else if exchange.eq("kucoin_spot") {
+pub fn get_limit_order_requests_num_per_second(exchange: String) -> i64 {
+    if exchange.eq("kucoin_spot") {
         return public_params::KUCOIN_SPOT_LIMIT
     } else if exchange.eq("kucoin_usdt_swap") {
         return public_params::KUCOIN_USDT_SWAP_LIMIT