From 4a3538fb3517372483c849ca7a8b1cfd75433df8 Mon Sep 17 00:00:00 2001 From: Macbook Date: Mon, 22 Jun 2026 09:14:58 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A0=84=EB=9E=B5=ED=8F=89=EA=B0=80=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=EB=B4=89=20=EC=8B=9C=EA=B0=84=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20=EC=9C=84=EC=B9=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/StrategyEvaluationPage.tsx | 83 +++++++++++-------- .../StrategyEvaluationChart.tsx | 10 ++- frontend/src/styles/strategyEvaluation.css | 11 +++ 3 files changed, 65 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/StrategyEvaluationPage.tsx b/frontend/src/components/StrategyEvaluationPage.tsx index e347d68..be879df 100644 --- a/frontend/src/components/StrategyEvaluationPage.tsx +++ b/frontend/src/components/StrategyEvaluationPage.tsx @@ -834,43 +834,54 @@ function StrategyEvaluationPageInner({ theme = 'dark' }: Props) {
- {selectedStrategy && signalScanRunning && ( - 시그널 계산 중… - )} - {selectedStrategy && analysisSummary && !signalScanRunning && ( - - - 매수:{padEvaluationSignalCount(analysisSummary.buyCount)}건 +
+ {selectedBarTimeSec != null && ( + + )} + {selectedStrategy && signalScanRunning && ( + 시그널 계산 중… + )} + {selectedStrategy && analysisSummary && !signalScanRunning && ( + + + 매수:{padEvaluationSignalCount(analysisSummary.buyCount)}건 + + · + + 매도:{padEvaluationSignalCount(analysisSummary.sellCount)}건 + + · + 0 + ? ' seval-analysis-return--pos' + : analysisSummary.fullBuyReturnPct < 0 + ? ' seval-analysis-return--neg' + : '' + }`}> + 일괄:{formatEvaluationReturnPct(analysisSummary.fullBuyReturnPct)} + + · + 0 + ? ' seval-analysis-return--pos' + : analysisSummary.splitBuyReturnPct < 0 + ? ' seval-analysis-return--neg' + : '' + }`}> + 분할:{formatEvaluationReturnPct(analysisSummary.splitBuyReturnPct)} + - · - - 매도:{padEvaluationSignalCount(analysisSummary.sellCount)}건 - - · - 0 - ? ' seval-analysis-return--pos' - : analysisSummary.fullBuyReturnPct < 0 - ? ' seval-analysis-return--neg' - : '' - }`}> - 일괄:{formatEvaluationReturnPct(analysisSummary.fullBuyReturnPct)} - - · - 0 - ? ' seval-analysis-return--pos' - : analysisSummary.splitBuyReturnPct < 0 - ? ' seval-analysis-return--neg' - : '' - }`}> - 분할:{formatEvaluationReturnPct(analysisSummary.splitBuyReturnPct)} - - - )} + )} +
diff --git a/frontend/src/components/strategyEvaluation/StrategyEvaluationChart.tsx b/frontend/src/components/strategyEvaluation/StrategyEvaluationChart.tsx index 24a1a42..33a021f 100644 --- a/frontend/src/components/strategyEvaluation/StrategyEvaluationChart.tsx +++ b/frontend/src/components/strategyEvaluation/StrategyEvaluationChart.tsx @@ -768,10 +768,14 @@ const StrategyEvaluationChart: React.FC = ({ ))} - {selectedBar && ( - + {chartFullscreen && selectedBar && ( + + )} {strategy && backtestRunning && ( 시그널 계산 중… diff --git a/frontend/src/styles/strategyEvaluation.css b/frontend/src/styles/strategyEvaluation.css index 4f2219b..8699983 100644 --- a/frontend/src/styles/strategyEvaluation.css +++ b/frontend/src/styles/strategyEvaluation.css @@ -40,6 +40,15 @@ padding: 0 10px; } +.seval-top-toolbar__status { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 10px; + min-width: 0; + flex-wrap: wrap; +} + .seval-top-toolbar__right { flex: 0 0 16px; width: 16px; @@ -474,6 +483,7 @@ min-width: 120px; } +.seval-selected-bar-time, .seval-chart-bar-time { display: inline-flex; align-items: center; @@ -485,6 +495,7 @@ border: 1px solid color-mix(in srgb, var(--btd-gold, var(--se-gold)) 35%, var(--se-border)); background: color-mix(in srgb, var(--btd-gold, var(--se-gold)) 8%, transparent); white-space: nowrap; + font-variant-numeric: tabular-nums; } .seval-chart-bar-time--loading {