Browse Source

仅做多

skyfffire 1 year ago
parent
commit
dace6ce670
2 changed files with 6 additions and 7 deletions
  1. 5 6
      strategy/src/avellaneda_stoikov.rs
  2. 1 1
      strategy/src/strategy.rs

+ 5 - 6
strategy/src/avellaneda_stoikov.rs

@@ -249,7 +249,7 @@ impl AvellanedaStoikov {
     }
 
     pub fn update_sigma_square(&mut self) {
-        self.sigma_square = self.spread_max;
+        self.sigma_square = self.spread_max * dec!(0.618);
         self.sigma_square.rescale(10);
     }
 
@@ -267,9 +267,8 @@ impl AvellanedaStoikov {
 
     pub fn update_ref_price(&mut self) {
         if !self.fair_price_vec[0].is_zero() && !self.fair_price_vec[1].is_zero() {
-            let v0_rate = self.volume_vec[0] / (self.volume_vec[0] + self.volume_vec[1]);
-            let v1_rate = self.volume_vec[1] / (self.volume_vec[0] + self.volume_vec[1]);
-
+            // let v0_rate = self.volume_vec[0] / (self.volume_vec[0] + self.volume_vec[1]);
+            // let v1_rate = self.volume_vec[1] / (self.volume_vec[0] + self.volume_vec[1]);
 
             let sma = self.depth_vec[1].asks[0].price;
             let smb = self.depth_vec[1].bids[0].price;
@@ -279,7 +278,7 @@ impl AvellanedaStoikov {
 
             let price_diff = mp0 - mp1;
 
-            self.ref_price = self.fair_price_vec[0] * v0_rate + self.fair_price_vec[1] * v1_rate + price_diff / Decimal::TWO;
+            self.ref_price = (self.fair_price_vec[0] + self.fair_price_vec[1] + price_diff) / Decimal::TWO;
         }
     }
 
@@ -406,7 +405,7 @@ impl AvellanedaStoikov {
         cci.predictor_state_vec.push_back(PredictorState {
             update_time: Decimal::from_i64(Utc::now().timestamp_millis()).unwrap(),
 
-            mid_price: self.mid_price,
+            mid_price: self.last_price,
             ask_price: self.ask_price,
             bid_price: self.bid_price,
             last_price: self.last_price,

+ 1 - 1
strategy/src/strategy.rs

@@ -987,7 +987,7 @@ impl Strategy {
             }
         }
         // 挂空单
-        if self.post_side <= 0 && sell_value == Decimal::ZERO {
+        if self.post_side <= 0 && sell_value == Decimal::ZERO && predictor.inventory > Decimal::ZERO {
             let mut target_sell_price = predictor.optimal_ask_price;
             // target_sell_price = utils::clip(target_sell_price, self.bp * dec!(0.9995), self.ap * dec!(1.03));
             // 取消大小限制