Show in-position vs flat on control monitor cards with green/red.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user