From 27846a1b636f792e09b88d5245396f5636d7dc03 Mon Sep 17 00:00:00 2001 From: OpenSquared Date: Fri, 19 Jun 2026 22:51:04 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20trades=20logg=C3=A9s=20du=20cycle=20=3D?= =?UTF-8?q?=20seulement=20les=20patterns=20ajout=C3=A9s=20ce=20cycle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cycleTrades inclut tous les trades du scoring run (anciens patterns re-scorés inclus). On filtre par cyclePatternIds pour ne compter que les trades issus de patterns ajoutés pendant ce cycle. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/pages/Dashboard.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index 9d09e79..eaa4a66 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -473,9 +473,12 @@ export default function Dashboard() { : elapsed < 1440 ? `${Math.round(elapsed / 60)}h` : `${Math.round(elapsed / 1440)}j` const patternsAdded: number = last?.patterns_added ?? 0 - const tradesLogged: number = cycleTrades.length + // Only count trades whose pattern was added THIS cycle (not older patterns re-scored) + const cyclePatternIds = new Set(cyclePatterns.map((p: any) => p.id)) + const cycleTradesFromNewPatterns = cycleTrades.filter((t: any) => cyclePatternIds.has(t.pattern_id)) + const tradesLogged: number = cycleTradesFromNewPatterns.length const tradesNotLogged: number = Math.max(0, patternsAdded - tradesLogged) - const tradesClosed = cycleTrades.filter((t: any) => t.status === 'closed').length + const tradesClosed = cycleTradesFromNewPatterns.filter((t: any) => t.status === 'closed').length const commentary = last?.commentary ? (() => { try { return typeof last.commentary === 'string' ? JSON.parse(last.commentary) : last.commentary } catch { return null } })() : null