Show in-position vs flat on control monitor cards with green/red.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-30 13:09:30 +08:00
parent e7529e9dc4
commit 3556450ff0
+20
View File
@@ -37,6 +37,19 @@ function pnlClass(v: unknown): string {
return n > 0 ? "pnl-pos" : "pnl-neg";
}
const OPEN_STATUSES = new Set([
"open",
"half_open",
"option_closed_perp_pending",
"opening",
]);
function hasOpenPosition(position: Record<string, unknown>): boolean {
if (position.has_position === true) return true;
const st = String(position.status || "").toLowerCase();
return OPEN_STATUSES.has(st);
}
export default function MonitorPage() {
const [nodes, setNodes] = useState<NodeCard[]>([]);
const [err, setErr] = useState("");
@@ -163,6 +176,7 @@ export default function MonitorPage() {
{nodes.map((n) => {
const s = pickStrategy(n);
const running = s.running === true || s.running === 1;
const inPos = hasOpenPosition(s.position);
return (
<article
key={n.id}
@@ -212,6 +226,12 @@ export default function MonitorPage() {
{running ? "运行中" : "已停"} · {s.phase}
</dd>
</div>
<div>
<dt></dt>
<dd className={inPos ? "pnl-pos" : "pnl-neg"}>
{inPos ? "持仓中" : "无持仓"}
</dd>
</div>
<div>
<dt></dt>
<dd>{s.rounds ?? "-"}</dd>