diff --git a/backend/signal_engine.py b/backend/signal_engine.py index 3a6d21b..8b6c40a 100644 --- a/backend/signal_engine.py +++ b/backend/signal_engine.py @@ -261,9 +261,12 @@ class SymbolState: cutoff = now_ms - 15 * 60 * 1000 while self.recent_large_trades and self.recent_large_trades[0][0] < cutoff: self.recent_large_trades.popleft() + # 只检查新trade(避免重复添加) + seen = set(t[0] for t in self.recent_large_trades) # time_ms作为去重key for t in self.win_fast.trades: - if t[1] >= p99 and t[0] > cutoff: + if t[1] >= p99 and t[0] > cutoff and t[0] not in seen: self.recent_large_trades.append((t[0], t[1], t[3])) + seen.add(t[0]) def evaluate_signal(self, now_ms: int) -> dict: cvd_fast = self.win_fast.cvd