331 lines
21 KiB
HTML
331 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" />
|
||
<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>
|
||
|
||
<main class="matrix-main matrix-crt-inner">
|
||
<section class="matrix-panel matrix-panel-hero matrix-panel-chrome matrix-panel-fold" data-fold-id="gemma-funnel" data-fold-default="open">
|
||
<div class="matrix-panel-head matrix-panel-head-row matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="true">
|
||
<h2>// GEMMA 漏斗 · 优先矩阵</h2>
|
||
<span class="matrix-fold-head-right">
|
||
<span class="matrix-chip matrix-chip-magenta">LIVE FEED</span>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" id="keyMonitorPanel" data-fold-id="key-monitor" data-fold-default="open">
|
||
<div class="matrix-panel-head matrix-panel-head-row matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="true">
|
||
<h2>// 关键位突破监控</h2>
|
||
<span class="matrix-fold-head-right">
|
||
<span class="matrix-chip matrix-dim">人工录入 · 5m 门控</span>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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">
|
||
<input id="keySymbolInput" class="matrix-input" type="text" placeholder="BTC 或 BTC/USDT" style="min-width:7rem" />
|
||
<select id="keyMonitorTypeInput" class="matrix-input">
|
||
<option value="箱体突破">箱体突破</option>
|
||
<option value="收敛突破">收敛突破</option>
|
||
</select>
|
||
<select id="keyDirectionInput" class="matrix-input">
|
||
<option value="">方向</option>
|
||
<option value="long">做多</option>
|
||
<option value="short">做空</option>
|
||
</select>
|
||
<input id="keyUpperInput" class="matrix-input" type="number" step="any" placeholder="上沿/阻力" style="min-width:6rem" />
|
||
<input id="keyLowerInput" class="matrix-input" type="number" step="any" placeholder="下沿/支撑" style="min-width:6rem" />
|
||
<select id="keySlTpModeInput" class="matrix-input" title="止盈止损方案">
|
||
<option value="standard">标准突破</option>
|
||
<option value="trend_manual">趋势突破</option>
|
||
</select>
|
||
<input id="keyManualTpInput" class="matrix-input" type="number" step="any" placeholder="趋势止盈价" style="min-width:6rem;display:none" />
|
||
<label class="matrix-hint" 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">添加监控</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-panel-fold" data-fold-id="daily-report" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-head-row matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 每日晨报 · 昨日复盘</h2>
|
||
<span class="matrix-fold-head-right">
|
||
<button type="button" id="runDailyReportBtn" class="matrix-btn ghost" data-fold-ignore>立即生成</button>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" data-fold-id="symbol-blocklist" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-head-row matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 监控黑名单 · base</h2>
|
||
<span class="matrix-fold-head-right">
|
||
<span class="matrix-chip matrix-dim" id="symbolBlocklistCountChip">0 条规则</span>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" id="orderExecutorsPanel" data-fold-id="order-executors" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-head-row matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 下单执行器 · 转发链</h2>
|
||
<span class="matrix-fold-head-right">
|
||
<span class="matrix-chip matrix-dim">仅扫描端维护 · 同一信号广播</span>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" data-fold-id="intraday-rules" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 策略寄存器 · 5m</h2>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" data-fold-id="scan-layers" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 全市场扫描 · 观察层 / 触发层</h2>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" data-fold-id="telemetry" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 系统遥测</h2>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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-panel-fold" data-fold-id="runtime-logs" data-fold-default="closed">
|
||
<div class="matrix-panel-head matrix-panel-fold-toggle" role="button" tabindex="0" aria-expanded="false">
|
||
<h2>// 运行日志</h2>
|
||
<span class="matrix-fold-chevron" aria-hidden="true">▼</span>
|
||
</div>
|
||
<div class="matrix-panel-fold-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>
|