Browse Source

資金流多周期共振技術加入。

skyfffire 1 year ago
parent
commit
dbde9ca5e6
1 changed files with 23 additions and 7 deletions
  1. 23 7
      strategy/src/avellaneda_stoikov.rs

+ 23 - 7
strategy/src/avellaneda_stoikov.rs

@@ -281,13 +281,29 @@ impl AvellanedaStoikov {
                 self.ask_delta += pos_edge;
             }
 
-            // if self.flow_ratio_change > Decimal::ZERO {
-            //     self.bid_delta -= self.base_delta * dec!(0.5);
-            //     self.ask_delta += self.base_delta * dec!(0.5);
-            // } else if self.flow_ratio_change < Decimal::ZERO {
-            //     self.bid_delta += self.base_delta * dec!(0.5);
-            //     self.ask_delta -= self.base_delta * dec!(0.5);
-            // }
+            if self.flow_ratio < Decimal::ZERO {
+                if self.flow_ratio_change > dec!(0.01) {
+                    self.bid_delta += self.base_delta * dec!(10);
+                    self.ask_delta -= self.base_delta * dec!(10);
+                } else if self.flow_ratio_change < dec!(-0.01) && self.inventory < Decimal::ZERO {
+                    self.bid_delta -= self.base_delta * dec!(3);
+                    self.ask_delta += self.base_delta * dec!(3);
+                } else {
+                    self.bid_delta += self.base_delta * dec!(5);
+                    self.ask_delta += self.base_delta * dec!(5);
+                }
+            } else if self.flow_ratio > Decimal::ZERO {
+                if self.flow_ratio_change > dec!(0.01) && self.inventory > Decimal::ZERO {
+                    self.bid_delta -= self.base_delta * dec!(3);
+                    self.ask_delta += self.base_delta * dec!(3);
+                } else if self.flow_ratio_change < dec!(-0.01) {
+                    self.bid_delta += self.base_delta * dec!(10);
+                    self.ask_delta -= self.base_delta * dec!(10);
+                } else {
+                    self.bid_delta += self.base_delta * dec!(5);
+                    self.ask_delta += self.base_delta * dec!(5);
+                }
+            }
 
             if self.init_delta_plus.is_zero() {
                 self.init_delta_plus = (self.bid_delta + self.ask_delta) / Decimal::TWO