334 lines
21 KiB
HTML
334 lines
21 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
||
<script>
|
||
(function () {
|
||
var lite = window.matchMedia("(max-width: 640px), (hover: none) and (pointer: coarse)").matches;
|
||
if (lite) document.documentElement.classList.add("matrix-lite");
|
||
})();
|
||
</script>
|
||
<title>MATRIX · FUNNEL</title>
|
||
<link rel="stylesheet" href="/static/style.css?v={{ asset_version }}" />
|
||
</head>
|
||
<body class="matrix-theme">
|
||
<canvas id="matrixRain" class="matrix-rain-canvas" aria-hidden="true"></canvas>
|
||
<div class="matrix-vignette" aria-hidden="true"></div>
|
||
<div class="matrix-aurora" aria-hidden="true"></div>
|
||
<div class="matrix-scanlines" aria-hidden="true"></div>
|
||
<div class="matrix-noise" aria-hidden="true"></div>
|
||
|
||
<div class="matrix-chrome">
|
||
<div class="matrix-hud" id="matrixHud">
|
||
<div class="matrix-hud-block matrix-hud-live">
|
||
<span class="matrix-hud-dot" aria-hidden="true"></span>
|
||
<div class="matrix-hud-stack">
|
||
<span class="matrix-hud-label">LINK</span>
|
||
<span class="matrix-hud-val" id="hudLink">SYNC…</span>
|
||
</div>
|
||
</div>
|
||
<div class="matrix-hud-block">
|
||
<span class="matrix-hud-label">CYCLE</span>
|
||
<span class="matrix-hud-val" id="hudCycle">—</span>
|
||
</div>
|
||
<div class="matrix-hud-block" title="BTC:近8h×15m 环境(横盘时多空均可推送;否则涨→LONG、跌→SHORT);BTC·辅=日线 regime(仅参考)">
|
||
<span class="matrix-hud-label">BTC·辅</span>
|
||
<span class="matrix-hud-val" id="hudBtc">—</span>
|
||
</div>
|
||
<div class="matrix-hud-block">
|
||
<span class="matrix-hud-label">POOL</span>
|
||
<span class="matrix-hud-val" id="hudPool">—</span>
|
||
</div>
|
||
<div class="matrix-hud-block">
|
||
<span class="matrix-hud-label">PUSH</span>
|
||
<span class="matrix-hud-val" id="hudPush">—</span>
|
||
</div>
|
||
<div class="matrix-hud-block matrix-hud-wide">
|
||
<span class="matrix-hud-label">GEMMA</span>
|
||
<span class="matrix-hud-val mono" id="hudGemma">—</span>
|
||
</div>
|
||
<div class="matrix-hud-block matrix-hud-wide">
|
||
<span class="matrix-hud-label">LAST</span>
|
||
<span class="matrix-hud-val mono" id="hudLast">—</span>
|
||
</div>
|
||
</div>
|
||
|
||
<header class="matrix-header matrix-header-crt">
|
||
<div class="matrix-brand">
|
||
<div class="matrix-title-wrap">
|
||
<div class="matrix-glitch matrix-glitch-xl" data-text="MATRIX // FUNNEL">
|
||
<span class="matrix-glitch-layer matrix-glitch-c">MATRIX // FUNNEL</span>
|
||
<span class="matrix-glitch-layer matrix-glitch-m">MATRIX // FUNNEL</span>
|
||
<span class="matrix-glitch-base">MATRIX // FUNNEL</span>
|
||
</div>
|
||
<div class="matrix-subdeck">
|
||
<span class="matrix-deco">[</span>
|
||
<span id="matrixTagline" class="matrix-tagline matrix-tagline-glow">Gate USDT 永续 · 5m 结构 → 日线漏斗 · Gemma 优先链</span>
|
||
<span class="matrix-deco">]</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="matrix-radar-header" aria-hidden="true" title="战术雷达 · 装饰">
|
||
<div class="matrix-radar-hud">
|
||
<div class="matrix-radar-h-graticule"></div>
|
||
<div class="matrix-radar-h-cross"></div>
|
||
<div class="matrix-radar-h-rings"></div>
|
||
<div class="matrix-radar-h-sweep"></div>
|
||
<div class="matrix-radar-h-sweep matrix-radar-h-sweep-ghost"></div>
|
||
<div class="matrix-radar-h-blip"></div>
|
||
</div>
|
||
<span class="matrix-radar-h-caption">SCAN</span>
|
||
</div>
|
||
<div class="matrix-header-actions">
|
||
<span class="matrix-pill matrix-pill-clock" id="liveClock">--:--:--</span>
|
||
<span class="matrix-pill dim">OP ▸ <span id="opUser">{{ username }}</span></span>
|
||
<a class="matrix-btn ghost" href="/logout">断开链路</a>
|
||
</div>
|
||
</header>
|
||
|
||
<nav class="matrix-section-nav" id="sectionNav" aria-label="功能导航">
|
||
<div class="matrix-section-nav-inner">
|
||
<button type="button" class="matrix-nav-item is-active" data-nav-id="gemma-funnel">GEMMA4 漏斗</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="key-monitor">关键位监控</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="daily-report">每日晨报</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="symbol-blocklist">监控黑名单</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="order-executors">下单执行器</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="intraday-rules">策略寄存器</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="scan-layers">全市场扫描</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="telemetry">系统遥测</button>
|
||
<button type="button" class="matrix-nav-item" data-nav-id="runtime-logs">运行日志</button>
|
||
</div>
|
||
</nav>
|
||
|
||
<main class="matrix-main matrix-crt-inner">
|
||
<section class="matrix-panel matrix-panel-hero matrix-panel-chrome matrix-nav-section is-nav-active" id="nav-gemma-funnel" data-nav-id="gemma-funnel">
|
||
<div class="matrix-panel-head matrix-panel-head-row">
|
||
<h2>// GEMMA 漏斗 · 优先矩阵</h2>
|
||
<span class="matrix-chip matrix-chip-magenta">LIVE FEED</span>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<div class="matrix-hero-radar" aria-hidden="true">
|
||
<div class="matrix-hero-radar-grid"></div>
|
||
<div class="matrix-hero-radar-sweep"></div>
|
||
<div class="matrix-hero-radar-sweep matrix-hero-radar-sweep-trail"></div>
|
||
<div class="matrix-hero-radar-ring"></div>
|
||
</div>
|
||
<p class="matrix-hint">合成评分 · 成交量 · 日线结构 · 上方空间 · 中间阻力 → 达标企业微信推送</p>
|
||
<div class="matrix-form-row matrix-form-row-tight">
|
||
<label for="funnelWindowHoursInput">展示窗口(h)</label>
|
||
<input id="funnelWindowHoursInput" type="number" step="1" min="1" max="168" value="24" title="仅显示该小时内写入的 gemma_funnel,保存在本浏览器" />
|
||
<button type="button" id="applyFunnelWindowBtn" class="matrix-btn">应用</button>
|
||
<span id="funnelWindowMsg" class="matrix-msg"></span>
|
||
</div>
|
||
<p id="funnelMeta" class="matrix-hint matrix-dim">// 数据同步中…</p>
|
||
<div id="funnelMatrix" class="matrix-grid"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-chrome matrix-nav-section" id="keyMonitorPanel" data-nav-id="key-monitor">
|
||
<div class="matrix-panel-head matrix-panel-head-row">
|
||
<h2>// 关键位突破监控</h2>
|
||
<span class="matrix-chip matrix-dim">人工录入 · 5m 门控</span>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<p class="matrix-hint">GEMMA 漏斗仅供参考;在此录入上/下沿。箱体突破与收敛突破均支持「标准突破」或「趋势突破」(无 1.5H 方案)。</p>
|
||
<p id="keyMonitorRule" class="matrix-hint matrix-dim">// 规则加载中…</p>
|
||
<div class="matrix-form-row matrix-form-row-wrap key-monitor-form">
|
||
<input id="keySymbolInput" class="matrix-input key-monitor-field" type="text" placeholder="BTC 或 BTC/USDT" />
|
||
<div class="matrix-seg-group" id="keyMonitorTypeSeg" aria-label="结构类型">
|
||
<button type="button" class="matrix-seg-btn is-active" data-value="箱体突破">箱体</button>
|
||
<button type="button" class="matrix-seg-btn" data-value="收敛突破">收敛</button>
|
||
</div>
|
||
<input type="hidden" id="keyMonitorTypeInput" value="箱体突破" />
|
||
<div class="matrix-seg-group" id="keyDirectionSeg" aria-label="方向">
|
||
<button type="button" class="matrix-seg-btn" data-value="long">做多</button>
|
||
<button type="button" class="matrix-seg-btn" data-value="short">做空</button>
|
||
</div>
|
||
<input type="hidden" id="keyDirectionInput" value="" />
|
||
<input id="keyUpperInput" class="matrix-input key-monitor-field" type="number" step="any" placeholder="上沿/阻力" />
|
||
<input id="keyLowerInput" class="matrix-input key-monitor-field" type="number" step="any" placeholder="下沿/支撑" />
|
||
<div class="matrix-seg-group" id="keySlTpModeSeg" aria-label="突破方案">
|
||
<button type="button" class="matrix-seg-btn is-active" data-value="standard">标准</button>
|
||
<button type="button" class="matrix-seg-btn" data-value="trend_manual">趋势</button>
|
||
</div>
|
||
<input type="hidden" id="keySlTpModeInput" value="standard" />
|
||
<input id="keyManualTpInput" class="matrix-input key-monitor-field key-monitor-tp" type="number" step="any" placeholder="趋势止盈价" style="display:none" />
|
||
<label class="matrix-hint key-monitor-check" style="display:inline-flex;align-items:center;gap:4px">
|
||
<input id="keyBreakevenInput" type="checkbox" /> 移动保本
|
||
</label>
|
||
<button type="button" id="keyAddBtn" class="matrix-btn matrix-btn-pulse key-monitor-add">添加监控</button>
|
||
</div>
|
||
<p id="keyMonitorSaveMsg" class="matrix-msg"></p>
|
||
<div class="matrix-two-col" style="margin-top:12px">
|
||
<div>
|
||
<h3 class="matrix-hint" style="margin-bottom:8px">监控中</h3>
|
||
<div id="keyMonitorActive" class="matrix-list"></div>
|
||
</div>
|
||
<div>
|
||
<div style="display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px">
|
||
<h3 class="matrix-hint" style="margin:0">关键位历史</h3>
|
||
<a id="keyHistoryExport" class="matrix-btn ghost" href="/export/key_monitor_history.csv?days=30" style="text-decoration:none;font-size:.75rem">导出 CSV</a>
|
||
</div>
|
||
<div id="keyMonitorHistory" class="matrix-list"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-chrome matrix-nav-section" id="nav-daily-report" data-nav-id="daily-report">
|
||
<div class="matrix-panel-head matrix-panel-head-row">
|
||
<h2>// 每日晨报 · 昨日复盘</h2>
|
||
<button type="button" id="runDailyReportBtn" class="matrix-btn ghost">立即生成</button>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<div class="matrix-form-row">
|
||
<label>晨报开关</label>
|
||
<input id="dailyReportEnabledInput" type="checkbox" />
|
||
<label>北京时间执行</label>
|
||
<input id="dailyReportTimeInput" type="time" />
|
||
<label>推送企业微信</label>
|
||
<input id="dailyReportPushInput" type="checkbox" />
|
||
<label>启动即生成</label>
|
||
<input id="dailyReportStartupInput" type="checkbox" />
|
||
<button type="button" id="saveDailyReportBtn" class="matrix-btn matrix-btn-pulse">保存晨报配置</button>
|
||
</div>
|
||
<p id="dailyReportSaveMsg" class="matrix-msg"></p>
|
||
<p id="dailyReportMeta" class="matrix-hint matrix-dim">// 等待晨报数据…</p>
|
||
<div id="dailyReportBox" class="matrix-list"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-chrome matrix-nav-section" id="nav-symbol-blocklist" data-nav-id="symbol-blocklist">
|
||
<div class="matrix-panel-head matrix-panel-head-row">
|
||
<h2>// 监控黑名单 · base</h2>
|
||
<span class="matrix-chip matrix-dim" id="symbolBlocklistCountChip">0 条规则</span>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<p class="matrix-hint">
|
||
Gate USDT 永续左侧 base(每行一个或逗号分隔),如 <code>XAU</code> <code>XAUT</code> <code>XAG</code>;<code>all_swaps</code> 与
|
||
<code>watchlist</code> 均会在入池后剔除。保存后下一轮扫描生效。
|
||
</p>
|
||
<textarea
|
||
id="symbolBlocklistInput"
|
||
class="matrix-input matrix-textarea"
|
||
rows="5"
|
||
spellcheck="false"
|
||
autocomplete="off"
|
||
placeholder="XAU XAUT XAG"
|
||
></textarea>
|
||
<div class="matrix-form-row matrix-form-row-tight">
|
||
<button type="button" id="saveSymbolBlocklistBtn" class="matrix-btn matrix-btn-pulse">保存黑名单</button>
|
||
</div>
|
||
<p id="symbolBlocklistSaveMsg" class="matrix-msg"></p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-chrome matrix-nav-section" id="orderExecutorsPanel" data-nav-id="order-executors">
|
||
<div class="matrix-panel-head matrix-panel-head-row">
|
||
<h2>// 下单执行器 · 转发链</h2>
|
||
<span class="matrix-chip matrix-dim">仅扫描端维护 · 同一信号广播</span>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<p class="matrix-hint">
|
||
关键位门控通过且计划 RR 达标后,向列表中<strong>已启用</strong>的执行器 POST <code>/v1/signal</code>(单一 SL/TP,与录入方案一致)。
|
||
各执行器自行配置 Gate API、盈亏比、移动保本等;<strong>不支持执行器反向注册</strong>。
|
||
修改 webhook 密钥后请同步到各执行器 <code>security.webhook_secret</code>。
|
||
</p>
|
||
<div class="matrix-form-row matrix-form-row-wrap">
|
||
<label>总开关</label>
|
||
<input id="oeGlobalEnabled" type="checkbox" />
|
||
<label>Webhook 密钥</label>
|
||
<input id="oeWebhookSecret" class="matrix-input" type="password" style="min-width:14rem" autocomplete="new-password" />
|
||
<label>超时(s)</label>
|
||
<input id="oeTimeout" class="matrix-input" type="number" min="3" max="120" step="1" style="width:5rem" />
|
||
<button type="button" id="oeSaveGlobalBtn" class="matrix-btn matrix-btn-pulse">保存全局</button>
|
||
</div>
|
||
<p id="oeGlobalMsg" class="matrix-msg"></p>
|
||
<div class="matrix-form-row matrix-form-row-wrap" style="margin-top:12px">
|
||
<label>名称</label>
|
||
<input id="oeNewName" class="matrix-input" type="text" placeholder="如 account_a" style="width:8rem" />
|
||
<label>Base URL</label>
|
||
<input id="oeNewUrl" class="matrix-input" type="text" placeholder="http://127.0.0.1:8090" style="min-width:16rem" />
|
||
<label>启用</label>
|
||
<input id="oeNewEnabled" type="checkbox" checked />
|
||
<button type="button" id="oeAddBtn" class="matrix-btn ghost">添加执行器</button>
|
||
</div>
|
||
<p id="oeAddMsg" class="matrix-msg"></p>
|
||
<div id="oeList" class="matrix-list" style="margin-top:12px"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-chrome matrix-nav-section" id="nav-intraday-rules" data-nav-id="intraday-rules">
|
||
<div class="matrix-panel-head">
|
||
<h2>// 策略寄存器 · 5m</h2>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<p class="matrix-hint">全市场雷达:横盘 + 5m 突破 + 放量 · 仅参考推送 · 正式下单请用「关键位突破监控」</p>
|
||
<div class="matrix-form-row">
|
||
<label>横盘时长(h)</label>
|
||
<input id="rangeHoursInput" type="number" step="0.5" min="1" />
|
||
<label>横盘振幅上限(%)</label>
|
||
<input id="rangeMaxPctInput" type="number" step="0.1" min="0.1" />
|
||
<label>放量倍数</label>
|
||
<input id="volumeSpikeMultInput" type="number" step="0.1" min="1" />
|
||
<label>放量回看根数</label>
|
||
<input id="volumeLookbackInput" type="number" step="1" min="5" />
|
||
<label>突破缓冲(%)</label>
|
||
<input id="breakoutBufferInput" type="number" step="0.01" min="0" />
|
||
<label>止损缓冲(%)</label>
|
||
<input id="stopBufferPctInput" type="number" step="0.05" min="0" max="10" title="全市场扫描企微参考止损:突破K极值外侧缓冲" />
|
||
<label>启用推送时间窗(09:00-23:00)</label>
|
||
<input id="pushTimeWindowEnabledInput" type="checkbox" />
|
||
<button type="button" id="saveIntradayBtn" class="matrix-btn matrix-btn-pulse">写入寄存器</button>
|
||
</div>
|
||
<p id="intradaySaveMsg" class="matrix-msg"></p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-chrome matrix-nav-section" id="nav-scan-layers" data-nav-id="scan-layers">
|
||
<div class="matrix-panel-head">
|
||
<h2>// 全市场扫描 · 观察层 / 触发层</h2>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<p class="matrix-hint matrix-dim">自动箱体雷达 · 与关键位下单无关</p>
|
||
<div class="matrix-two-col">
|
||
<div class="matrix-panel matrix-panel-chrome matrix-panel-nested">
|
||
<div class="matrix-panel-head"><h2>// 观察层 · WATCH</h2></div>
|
||
<div id="watchAlerts" class="matrix-list"></div>
|
||
</div>
|
||
<div class="matrix-panel matrix-panel-chrome matrix-panel-nested">
|
||
<div class="matrix-panel-head"><h2>// 触发层 · TRIGGER</h2></div>
|
||
<div id="triggerAlerts" class="matrix-list"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-wide matrix-panel-chrome matrix-nav-section" id="nav-telemetry" data-nav-id="telemetry">
|
||
<div class="matrix-panel-head">
|
||
<h2>// 系统遥测</h2>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<div class="matrix-split">
|
||
<pre id="status" class="matrix-pre matrix-pre-glow"></pre>
|
||
<pre id="config" class="matrix-pre matrix-pre-glow"></pre>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="matrix-panel matrix-panel-wide matrix-panel-chrome matrix-nav-section" id="nav-runtime-logs" data-nav-id="runtime-logs">
|
||
<div class="matrix-panel-head">
|
||
<h2>// 运行日志</h2>
|
||
</div>
|
||
<div class="matrix-panel-body">
|
||
<div id="logs" class="matrix-list matrix-list-logs"></div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</div>
|
||
|
||
<script src="/static/app.js?v={{ asset_version }}"></script>
|
||
</body>
|
||
</html>
|