skyfffire преди 1 година
родител
ревизия
c6ae94b925
променени са 3 файла, в които са добавени 27 реда и са изтрити 27 реда
  1. 1 1
      derive/tests/binance_swap_export_test.rs
  2. 1 1
      strategy/src/avellaneda_stoikov.rs
  3. 25 25
      strategy/src/core.rs

+ 1 - 1
derive/tests/binance_swap_export_test.rs

@@ -14,6 +14,6 @@ async fn test_get_self_exchange() {
     global::log_utils::init_log_with_trace();
 
     let mut export = test_new_export(ExportEnum::BinanceSwap).await;
-    let export_trades = export.export_trades("binance_swap", SYMBOL.to_string(), 1724838180000, 1724843160000, 1000).await;
+    let export_trades = export.export_trades("binance_swap", SYMBOL.to_string(), 1724896814000, 1724901554000, 1000).await;
     trace!(?export_trades);
 }

+ 1 - 1
strategy/src/avellaneda_stoikov.rs

@@ -204,7 +204,7 @@ impl AvellanedaStoikov {
         // };
         // self.gamma.rescale(8);
 
-        self.gamma = dec!(0.75) * Self::IRA;
+        self.gamma = dec!(0.5) * Self::IRA;
     }
 
     pub fn update_kappa(&mut self) {

+ 25 - 25
strategy/src/core.rs

@@ -960,31 +960,31 @@ impl Core {
         }
 
         // 仓位异常风控,只在合约模式下执行
-        // if !self.exchange.contains("spot") {
-        //     let local_position_by_orders_pos = (self.local_position_by_orders.long_pos - self.local_position_by_orders.short_pos).abs();
-        //     let local_position_pos = (self.local_position.long_pos - self.local_position.short_pos).abs();
-        //
-        //     if local_position_by_orders_pos != local_position_pos {
-        //         warn!("{}发现仓位异常", self.params.account_name);
-        //         warn!(?self.local_position_by_orders, ?self.local_position);
-        //         self.position_check_series.push(1);
-        //     } else {
-        //         self.position_check_series.push(0);
-        //     }
-        //
-        //     // self.position_check_series长度限制
-        //     if self.position_check_series.len() > 6 {
-        //         self.position_check_series.remove(0);
-        //     }
-        //
-        //     // 连续不符合判定
-        //     if self.position_check_series.iter().sum::<i8>() >= 6 {
-        //         let exit_msg = format!("{} 合约连续检查本地仓位和推算仓位不符合,退出。", self.params.account_name);
-        //         warn!(exit_msg);
-        //         self.exit_msg = exit_msg;
-        //         self.stop().await;
-        //     }
-        // }
+        if !self.exchange.contains("spot") {
+            let local_position_by_orders_pos = (self.local_position_by_orders.long_pos - self.local_position_by_orders.short_pos).abs();
+            let local_position_pos = (self.local_position.long_pos - self.local_position.short_pos).abs();
+
+            if local_position_by_orders_pos != local_position_pos {
+                warn!("{}发现仓位异常", self.params.account_name);
+                warn!(?self.local_position_by_orders, ?self.local_position);
+                self.position_check_series.push(1);
+            } else {
+                self.position_check_series.push(0);
+            }
+
+            // self.position_check_series长度限制
+            if self.position_check_series.len() > 6 {
+                self.position_check_series.remove(0);
+            }
+
+            // 连续不符合判定
+            if self.position_check_series.iter().sum::<i8>() >= 6 {
+                let exit_msg = format!("{} 合约连续检查本地仓位和推算仓位不符合,退出。", self.params.account_name);
+                warn!(exit_msg);
+                self.exit_msg = exit_msg;
+                self.stop().await;
+            }
+        }
 
         // 下单异常风控
         if self.strategy.total_amount == Decimal::ZERO {