diff --git a/frontend/app/paper-v53/page.tsx b/frontend/app/paper-v53/page.tsx index 2ffaaf2..12035f4 100644 --- a/frontend/app/paper-v53/page.tsx +++ b/frontend/app/paper-v53/page.tsx @@ -104,6 +104,12 @@ function LatestSignals({ strategy }: { strategy: StrategyTab }) { {fc && strategy === "v53_alt" && (
+ + {(fc.gate_passed ?? true) ? "✅ Gate通过" : "❌ 否决"} + + {fc.gate_block && ( + {fc.gate_block} + )} 方向{fc.direction?.score ?? 0}/55 拥挤{fc.crowding?.score ?? 0}/25 环境{fc.environment?.score ?? 0}/15 diff --git a/frontend/app/signals-v53/page.tsx b/frontend/app/signals-v53/page.tsx index 8ab75a1..eb0b919 100644 --- a/frontend/app/signals-v53/page.tsx +++ b/frontend/app/signals-v53/page.tsx @@ -46,7 +46,8 @@ interface LatestIndicator { auxiliary?: { score?: number; max?: number; coinbase_premium?: number }; // BTC gate fields gate_passed?: boolean; - block_reason?: string; + block_reason?: string; // BTC用 + gate_block?: string; // ALT用 obi_raw?: number; spot_perp_div?: number; whale_cvd_ratio?: number; @@ -91,6 +92,62 @@ function LayerScore({ label, score, max, colorClass }: { label: string; score: n ); } +// ─── ALT Gate 状态卡片 ────────────────────────────────────────── + +const ALT_GATE_THRESHOLDS: Record = { + ETH: { vol: "0.3%", obi: "0.35", spd: "0.5%", whale: "$50k" }, + XRP: { vol: "0.4%", obi: "0.40", spd: "0.6%", whale: "$30k" }, + SOL: { vol: "0.6%", obi: "0.45", spd: "0.8%", whale: "$20k" }, +}; + +function ALTGateCard({ symbol, factors }: { symbol: Symbol; factors: LatestIndicator["factors"] }) { + if (!factors || symbol === "BTC") return null; + const thresholds = ALT_GATE_THRESHOLDS[symbol] ?? ALT_GATE_THRESHOLDS["ETH"]; + const passed = factors.gate_passed ?? true; + const blockReason = factors.gate_block; + return ( +
+
+

🔒 {symbol} Gate-Control

+ + {passed ? "✅ Gate通过" : "❌ 否决"} + +
+
+
+

波动率

+

{((factors.atr_pct_price ?? 0) * 100).toFixed(3)}%

+

需 ≥{thresholds.vol}

+
+
+

OBI

+

= 0 ? "text-emerald-600" : "text-red-500"}`}> + {((factors.obi_raw ?? 0) * 100).toFixed(2)}% +

+

否决±{thresholds.obi}

+
+
+

期现背离

+

= 0 ? "text-emerald-600" : "text-red-500"}`}> + {((factors.spot_perp_div ?? 0) * 10000).toFixed(2)}bps +

+

否决±{thresholds.spd}

+
+
+

鲸鱼阈值

+

{thresholds.whale}

+

大单门槛

+
+
+ {blockReason && ( +

+ 否决原因: {blockReason} +

+ )} +
+ ); +} + // ─── BTC Gate 状态卡片 ─────────────────────────────────────────── function BTCGateCard({ factors }: { factors: LatestIndicator["factors"] }) { @@ -266,6 +323,9 @@ function IndicatorCards({ symbol }: { symbol: Symbol }) { )}
+ {/* ALT Gate 卡片 */} + {!isBTC && data.factors && } + {/* BTC Gate 卡片 */} {isBTC && data.factors && }