From da12cdddd447236e95f9a496027755ea75b0ced0 Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 8 Jul 2026 03:35:03 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E4=BF=AE=E6=AD=A3=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=E5=8D=96=E5=87=BA=E5=90=8E=E7=9A=84=E8=A1=A5=E4=BB=93=E6=A7=BD?= =?UTF-8?q?=E4=BD=8D"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 0bb47812e538a6121a3c3774dc1f30726f086f5a. --- crates/fidc-core/src/platform_expr_strategy.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/fidc-core/src/platform_expr_strategy.rs b/crates/fidc-core/src/platform_expr_strategy.rs index cf99079..7ba87a7 100644 --- a/crates/fidc-core/src/platform_expr_strategy.rs +++ b/crates/fidc-core/src/platform_expr_strategy.rs @@ -8151,6 +8151,7 @@ impl Strategy for PlatformExprStrategy { let mut intraday_attempted_buys = BTreeSet::::new(); let mut same_bar_buy_symbols = BTreeSet::::new(); let mut delayed_sold_symbols = BTreeSet::::new(); + let mut delayed_open_exit_submitted = false; let mut unresolved_stop_loss_symbols = BTreeSet::::new(); let mut pending_risk_level_forced_exit_symbols = BTreeSet::::new(); let delayed_limit_exit_time = self @@ -8254,6 +8255,7 @@ impl Strategy for PlatformExprStrategy { end_time: Some(delayed_limit_exit_time), reason: "delayed_limit_open_sell".to_string(), }); + delayed_open_exit_submitted = true; delayed_sold_symbols.insert(symbol.clone()); self.forget_position_entry_date(&symbol); let projected_sold = if ctx @@ -8359,6 +8361,7 @@ impl Strategy for PlatformExprStrategy { let mut daily_top_up_pending_buy_value = 0.0_f64; let mut pending_full_close_symbols = BTreeSet::::new(); let mut slot_blocking_symbols = BTreeSet::::new(); + let should_block_released_slots_after_top_up = delayed_open_exit_submitted; let interleaved_pending_full_close_symbols = BTreeSet::::new(); let risk_level_forced_exit_time = self.risk_level_forced_exit_time(); self.pending_full_close_symbols.retain(|symbol| { @@ -8783,6 +8786,10 @@ impl Strategy for PlatformExprStrategy { target_value: 0.0, reason: "stop_loss_exit".to_string(), }); + if daily_top_up_pending_buy_value > 0.0 && should_block_released_slots_after_top_up + { + slot_blocking_symbols.insert(position.symbol.clone()); + } self.forget_position_entry_date(&position.symbol); slot_working_symbols.remove(&position.symbol); if can_sell { @@ -8851,6 +8858,10 @@ impl Strategy for PlatformExprStrategy { target_value: 0.0, reason: "take_profit_exit".to_string(), }); + if daily_top_up_pending_buy_value > 0.0 && should_block_released_slots_after_top_up + { + slot_blocking_symbols.insert(position.symbol.clone()); + } self.forget_position_entry_date(&position.symbol); slot_working_symbols.remove(&position.symbol); if can_sell {