diff --git a/frontend/app/paper-v52/page.tsx b/frontend/app/paper-v52/page.tsx index dc64419..0bd4eb6 100644 --- a/frontend/app/paper-v52/page.tsx +++ b/frontend/app/paper-v52/page.tsx @@ -233,6 +233,12 @@ function LatestSignals() { // ─── 当前持仓 ──────────────────────────────────────────────────── function ActivePositions({ strategy }: { strategy: StrategyFilter }) { + const [paperRiskUsd, setPaperRiskUsd] = useState(200); + useEffect(() => { + (async () => { + try { const r = await authFetch("/api/paper/config"); if (r.ok) { const cfg = await r.json(); setPaperRiskUsd((cfg.initial_balance || 10000) * (cfg.risk_per_trade || 0.02)); } } catch {} + })(); + }, []); const [positions, setPositions] = useState([]); const [wsPrices, setWsPrices] = useState>({}); @@ -294,8 +300,7 @@ function ActivePositions({ strategy }: { strategy: StrategyFilter }) { const fullR = riskDist > 0 ? (p.direction === "LONG" ? (currentPrice - entry) / riskDist : (entry - currentPrice) / riskDist) : 0; const tp1R = riskDist > 0 ? (p.direction === "LONG" ? ((p.tp1_price || 0) - entry) / riskDist : (entry - (p.tp1_price || 0)) / riskDist) : 0; const unrealR = p.tp1_hit ? 0.5 * tp1R + 0.5 * fullR : fullR; - const paper1R = (config?.initial_balance || 10000) * (config?.risk_per_trade || 0.02); - const unrealUsdt = unrealR * paper1R; + const unrealUsdt = unrealR * paperRiskUsd; return (
diff --git a/frontend/app/paper/page.tsx b/frontend/app/paper/page.tsx index 3f93591..51b6ced 100644 --- a/frontend/app/paper/page.tsx +++ b/frontend/app/paper/page.tsx @@ -183,6 +183,12 @@ function LatestSignals() { // ─── 当前持仓 ──────────────────────────────────────────────────── function ActivePositions() { + const [paperRiskUsd, setPaperRiskUsd] = useState(200); + useEffect(() => { + (async () => { + try { const r = await authFetch("/api/paper/config"); if (r.ok) { const cfg = await r.json(); setPaperRiskUsd((cfg.initial_balance || 10000) * (cfg.risk_per_trade || 0.02)); } } catch {} + })(); + }, []); const [positions, setPositions] = useState([]); const [wsPrices, setWsPrices] = useState>({}); @@ -231,8 +237,7 @@ function ActivePositions() { const fullR = riskDist > 0 ? (p.direction === "LONG" ? (currentPrice - entry) / riskDist : (entry - currentPrice) / riskDist) : 0; const tp1R = riskDist > 0 ? (p.direction === "LONG" ? ((p.tp1_price || 0) - entry) / riskDist : (entry - (p.tp1_price || 0)) / riskDist) : 0; const unrealR = p.tp1_hit ? 0.5 * tp1R + 0.5 * fullR : fullR; - const paper1R = (config?.initial_balance || 10000) * (config?.risk_per_trade || 0.02); - const unrealUsdt = unrealR * paper1R; + const unrealUsdt = unrealR * paperRiskUsd; return (