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 && }