Przeglądaj źródła

移除馬丁,提升資金流靈敏度

skyfffire 1 rok temu
rodzic
commit
9f5eba39b2
2 zmienionych plików z 31 dodań i 31 usunięć
  1. 7 7
      strategy/src/avellaneda_stoikov.rs
  2. 24 24
      strategy/src/strategy.rs

+ 7 - 7
strategy/src/avellaneda_stoikov.rs

@@ -59,7 +59,7 @@ impl AvellanedaStoikov {
     // 时间窗口大小(微秒)
     const MAX_TIME_RANGE_MICROS: i64 = 5 * 60_000_000;
     const TRADE_RANGE_MICROS: i64 = 3 * 60_000_000;
-    const FLOW_RATIO_RANGE_MICROS: i64 = 1 * 60_000_000;
+    const FLOW_RATIO_RANGE_MICROS: i64 = 10_000_000;
     // const ONE_MILLION: Decimal = dec!(1_000_000);
     // const TWENTY_THOUSAND: Decimal = dec!(20_000);
     const IRA: Decimal = dec!(1);
@@ -294,15 +294,15 @@ impl AvellanedaStoikov {
             if self.flow_ratio_change > Decimal::ZERO {
                 self.bid_delta -= self.base_delta;
 
-                if self.inventory <= Decimal::ZERO {
-                    self.ask_delta += self.base_delta;
-                }
+                // if self.inventory <= Decimal::ZERO {
+                //     self.ask_delta += self.base_delta;
+                // }
             } else if self.flow_ratio_change < Decimal::ZERO {
                 self.ask_delta -= self.base_delta;
 
-                if self.inventory >= Decimal::ZERO {
-                    self.bid_delta += self.base_delta;
-                }
+                // if self.inventory >= Decimal::ZERO {
+                //     self.bid_delta += self.base_delta;
+                // }
             }
 
             if self.init_delta_plus.is_zero() {

+ 24 - 24
strategy/src/strategy.rs

@@ -956,18 +956,18 @@ impl Strategy {
             let mut target_buy_price = predictor.optimal_bid_price;
             // target_buy_price = utils::clip(target_buy_price, self.bp * dec!(0.97), self.ap * dec!(1.0005));
             target_buy_price = utils::fix_price(target_buy_price, self.tick_size);
-            // let amount = utils::get_amount_by_min_amount_value(self.min_amount_value, target_buy_price, self.step_size);
-            let amount = if predictor.inventory < Decimal::ZERO {
-                // utils::fix_amount(self.step_size * predictor.inventory.abs(), self.step_size)
-                if predictor.level >= dec!(4) {
-                    utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.inventory.abs(), target_buy_price, self.step_size)
-                } else {
-                    utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.level, target_buy_price, self.step_size)
-                }
-            } else {
-                // utils::fix_amount(self.step_size * (predictor.level + Decimal::ONE), self.step_size)
-                utils::get_amount_by_min_amount_value(self.min_amount_value * (predictor.level + Decimal::ONE), target_buy_price, self.step_size)
-            };
+            let amount = utils::get_amount_by_min_amount_value(self.min_amount_value, target_buy_price, self.step_size);
+            // let amount = if predictor.inventory < Decimal::ZERO {
+            //     // utils::fix_amount(self.step_size * predictor.inventory.abs(), self.step_size)
+            //     if predictor.level >= dec!(4) {
+            //         utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.inventory.abs(), target_buy_price, self.step_size)
+            //     } else {
+            //         utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.level, target_buy_price, self.step_size)
+            //     }
+            // } else {
+            //     // utils::fix_amount(self.step_size * (predictor.level + Decimal::ONE), self.step_size)
+            //     utils::get_amount_by_min_amount_value(self.min_amount_value * (predictor.level + Decimal::ONE), target_buy_price, self.step_size)
+            // };
 
 
             // 下单价值判定
@@ -993,18 +993,18 @@ impl Strategy {
             // target_sell_price = utils::clip(target_sell_price, self.bp * dec!(0.9995), self.ap * dec!(1.03));
             // 取消大小限制
             target_sell_price = utils::fix_price(target_sell_price, self.tick_size);
-            // let amount = utils::get_amount_by_min_amount_value(self.min_amount_value, target_sell_price, self.step_size);
-            let amount = if predictor.inventory > Decimal::ZERO {
-                if predictor.level >= dec!(4) {
-                    utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.inventory.abs(), target_sell_price, self.step_size)
-                } else {
-                    utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.level, target_sell_price, self.step_size)
-                }
-                // utils::fix_amount(self.step_size * predictor.inventory.abs(), self.step_size)
-            } else {
-                utils::get_amount_by_min_amount_value(self.min_amount_value * (predictor.level + Decimal::ONE), target_sell_price, self.step_size)
-                // utils::fix_amount(self.step_size * (predictor.level + Decimal::ONE), self.step_size)
-            };
+            let amount = utils::get_amount_by_min_amount_value(self.min_amount_value, target_sell_price, self.step_size);
+            // let amount = if predictor.inventory > Decimal::ZERO {
+            //     if predictor.level >= dec!(4) {
+            //         utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.inventory.abs(), target_sell_price, self.step_size)
+            //     } else {
+            //         utils::get_amount_by_min_amount_value(self.min_amount_value * predictor.level, target_sell_price, self.step_size)
+            //     }
+            //     // utils::fix_amount(self.step_size * predictor.inventory.abs(), self.step_size)
+            // } else {
+            //     utils::get_amount_by_min_amount_value(self.min_amount_value * (predictor.level + Decimal::ONE), target_sell_price, self.step_size)
+            //     // utils::fix_amount(self.step_size * (predictor.level + Decimal::ONE), self.step_size)
+            // };
 
             // 下单价值不能太大,也不能太小
             let amount_value = amount * target_sell_price;