Explorar el Código

使用30与70进行平仓,开仓的逻辑保持不变。

skyffire hace 1 año
padre
commit
5f6e325c15
Se han modificado 1 ficheros con 16 adiciones y 6 borrados
  1. 16 6
      strategy/src/avellaneda_stoikov.rs

+ 16 - 6
strategy/src/avellaneda_stoikov.rs

@@ -289,12 +289,22 @@ impl AvellanedaStoikov {
                 self.ask_delta += pos_edge;
             }
 
-            if self.ratio_edge > Decimal::ZERO {
-                self.ask_delta -= self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
-                self.bid_delta += self.sigma_square.abs() * dec!(5);
-            } else if self.ratio_edge < Decimal::ZERO {
-                self.ask_delta += self.sigma_square.abs() * dec!(5);
-                self.bid_delta -= self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
+            if (self.ratio_edge > Decimal::ZERO) || (self.money_flow_index > dec!(70) && self.inventory > Decimal::ZERO) {
+                if self.inventory > Decimal::ZERO {
+                    self.ask_delta = Decimal::ZERO;
+                    self.bid_delta += self.sigma_square.abs() * dec!(5);
+                } else {
+                    self.ask_delta -= self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
+                    self.bid_delta += self.sigma_square.abs() * dec!(5);
+                }
+            } else if (self.ratio_edge < Decimal::ZERO) || (self.money_flow_index < dec!(30) && self.inventory < Decimal::ZERO) {
+                if self.inventory < Decimal::ZERO {
+                    self.ask_delta += self.sigma_square.abs() * dec!(5);
+                    self.bid_delta = Decimal::ZERO;
+                } else {
+                    self.ask_delta += self.sigma_square.abs() * dec!(5);
+                    self.bid_delta -= self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
+                }
             } else if self.ratio_edge == Decimal::ZERO {
                 self.ask_delta += self.sigma_square.abs() * dec!(5);
                 self.bid_delta += self.sigma_square.abs() * dec!(5);