Преглед изворни кода

自动设置最大最小价差

JiahengHe пре 1 година
родитељ
комит
f30be008bd
2 измењених фајлова са 11 додато и 0 уклоњено
  1. 6 0
      strategy/src/predictor_new.rs
  2. 5 0
      strategy/src/quant.rs

+ 6 - 0
strategy/src/predictor_new.rs

@@ -130,6 +130,9 @@ impl PredictorNew {
        计算价格偏差范围
     **/
     pub fn calc_deviation_range(&mut self, ira: Decimal) -> Decimal {
+        if self.max_spread == Decimal::ZERO || self.max_spread == Decimal::ZERO{
+            return Decimal::ZERO
+        }
         return (self.rl_num - ira) * self.max_spread + ira * self.min_spread;
     }
 
@@ -255,6 +258,9 @@ impl PredictorNew {
         }
         let ira = self.ira;
         let dd = self.calc_deviation_range(ira.clone());
+        if dd == Decimal::ZERO {
+            return Vec::new();
+        }
         let gamma = self.calc_gamma(ira.clone(), &std);
         let rp = self.calc_rp(&gamma, &std);
         let dk = self.calc_dk(&gamma, &std);

+ 5 - 0
strategy/src/quant.rs

@@ -1463,6 +1463,11 @@ impl Quant {
             info!("数量精度 {}", self.strategy.step_size);
             info!("价格精度 {}", self.strategy.tick_size);
         }
+        // 置入最大最小价差
+        self.predictor.min_spread = Decimal::TWO * self.strategy.tick_size;
+        self.predictor.max_spread = Decimal::TEN * self.strategy.tick_size;
+        info!("最小价差 {}", self.predictor.min_spread);
+        info!("最大价差 {}", self.predictor.max_spread);
         let grid = Decimal::from(self.params.grid.clone());
         // 计算下单数量
         let long_one_hand_value: Decimal = start_cash * self.params.lever_rate / grid;