From 44a545e6e493154ee0db27582df1d53b16cea489 Mon Sep 17 00:00:00 2001 From: dekun Date: Mon, 3 Aug 2026 07:54:44 +0800 Subject: [PATCH] Show control monitor mode as SIM/A or SIM/B sizing codes. Co-authored-by: Cursor --- control/frontend/src/pages/Monitor.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/control/frontend/src/pages/Monitor.tsx b/control/frontend/src/pages/Monitor.tsx index e4db27f..bf86857 100644 --- a/control/frontend/src/pages/Monitor.tsx +++ b/control/frontend/src/pages/Monitor.tsx @@ -221,8 +221,8 @@ function riskLines(strat: Record): RiskLines { const riskOrOpen = `${lossPct || "—"}/${openRatio}`; return { riskBased, - sizing: riskBased ? "以损定仓" : "手动仓位", - sizingShort: riskBased ? "以损" : "手动", + sizing: riskBased ? "以损定仓(A)" : "手动开仓(B)", + sizingShort: riskBased ? "A" : "B", lossPct, exit, openRatio, @@ -234,9 +234,17 @@ function riskLines(strat: Record): RiskLines { function modeLabel(mode: string, strat: Record): string { const m = String(mode || "-").toUpperCase(); const short = m.includes("LIVE") ? "LIVE" : m.includes("SIM") ? "SIM" : m || "-"; + // A=以损定仓,B=手动开仓 return `${short}/${riskLines(strat).sizingShort}`; } +function modeLabelTitle(mode: string, strat: Record): string { + const label = modeLabel(mode, strat); + const riskBased = + strat.sizing_mode === "risk_based" || strat.risk_based === true; + return `${label}(${riskBased ? "A=以损定仓" : "B=手动开仓"})`; +} + function tokenDotClass(n: { token_configured?: boolean; fleet_ok?: boolean | null; @@ -768,7 +776,12 @@ export default function MonitorPage() { {n.name} - {modeLabel(s.mode, s.strat)} + + {modeLabel(s.mode, s.strat)} + {s.exchange} {inPos ? "持仓中" : "无持仓"}