55e94fe059
Co-authored-by: Cursor <cursoragent@cursor.com>
1773 lines
98 KiB
HTML
1773 lines
98 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN" data-theme="dark">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<script src="/assets/theme.js?v=20260604-hub-inst-theme"></script>
|
||
<script src="/assets/autofill_guard.js?v=1"></script>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content" />
|
||
<meta name="theme-color" content="#0b0e18" />
|
||
<meta name="apple-mobile-web-app-title" content="中控" />
|
||
<link rel="icon" href="/assets/icons/favicon.ico" sizes="32x32" />
|
||
<link rel="icon" href="/assets/icons/icon.svg" type="image/svg+xml" />
|
||
<link rel="apple-touch-icon" href="/assets/icons/apple-touch-icon.png" />
|
||
<link rel="manifest" href="/assets/icons/manifest.webmanifest" />
|
||
<title>复盘系统中控</title>
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'" />
|
||
<noscript><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" /></noscript>
|
||
<link rel="stylesheet" href="/assets/app.css?v=20260728-po-calc" />
|
||
<link rel="stylesheet" href="/assets/trade_stats_calendar.css?v=4" />
|
||
<link rel="stylesheet" href="/assets/account_risk_badge.css?v=4" />
|
||
<script src="/assets/account_risk_badge.js?v=4"></script>
|
||
<link rel="stylesheet" href="/assets/dashboard.css?v=20260720-dash-kpi-lg" />
|
||
</head>
|
||
<body>
|
||
<div class="app-bg" aria-hidden="true"></div>
|
||
<div class="app-shell">
|
||
<header class="app-header">
|
||
<div class="brand">
|
||
<span class="brand-mark" aria-hidden="true"></span>
|
||
<div>
|
||
<div class="brand-title">复盘系统中控</div>
|
||
<div class="brand-sub">MULTI-EXCHANGE · OPS</div>
|
||
</div>
|
||
</div>
|
||
<div class="header-right">
|
||
<div class="theme-toggle" role="group" aria-label="界面主题">
|
||
<button type="button" class="theme-toggle-btn is-active" data-theme-value="dark" aria-pressed="true" title="暗色主题">
|
||
<svg class="theme-icon" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
|
||
<path fill="currentColor" d="M12.1 3a9 9 0 1 0 8.9 11 6.5 6.5 0 1 1-8.9-11z"/>
|
||
</svg>
|
||
</button>
|
||
<button type="button" class="theme-toggle-btn" data-theme-value="light" aria-pressed="false" title="亮色主题">
|
||
<svg class="theme-icon" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
||
<circle cx="12" cy="12" r="4"/>
|
||
<path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
<span id="sys-status" class="sys-pill" title="系统状态">SYNC</span>
|
||
<nav class="top-nav">
|
||
<a href="/funds" id="nav-funds">资金概况</a>
|
||
<a href="/plan" id="nav-plan">开仓计划</a>
|
||
<a href="/monitor" id="nav-monitor">监控区</a>
|
||
<a href="/strategy" id="nav-strategy">策略说明</a>
|
||
<a href="/amp-stats" id="nav-amp-stats">振幅统计</a>
|
||
<a href="/help" id="nav-help">使用说明</a>
|
||
<a href="/market" id="nav-market">行情区</a>
|
||
<a href="/calculator" id="nav-calculator">计算器</a>
|
||
<a href="/compare" id="nav-compare">策略对比</a>
|
||
<a href="/archive" id="nav-archive">内照明心</a>
|
||
<a href="/quotes" id="nav-quotes">语录</a>
|
||
<a href="/dashboard" id="nav-dashboard">数据看板</a>
|
||
<a href="/ai" id="nav-ai">AI 教练</a>
|
||
<a href="/logs" id="nav-logs">系统日志</a>
|
||
<a href="/settings" id="nav-settings">系统设置</a>
|
||
</nav>
|
||
<button type="button" id="btn-logout" class="ghost" title="退出登录">退出</button>
|
||
</div>
|
||
</header>
|
||
|
||
<div id="page-plan" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">PLN</span> 开仓计划</h1>
|
||
<p class="page-desc">计划录入 · 进行中跟踪 · 历史归档与胜率统计</p>
|
||
</div>
|
||
<div class="toolbar">
|
||
<button type="button" id="plan-btn-refresh" class="primary">刷新</button>
|
||
<span id="plan-refresh-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<div class="plan-layout">
|
||
<aside class="plan-left-panel">
|
||
<section class="plan-form-section card">
|
||
<div class="plan-panel-head">
|
||
<h2>新建计划</h2>
|
||
</div>
|
||
<form id="plan-create-form" class="plan-form">
|
||
<div class="plan-form-grid">
|
||
<label class="plan-field">
|
||
<span>日期</span>
|
||
<input id="plan-create-date" type="date" required />
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>交易所</span>
|
||
<select id="plan-create-exchange" required></select>
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>币种</span>
|
||
<input id="plan-create-symbol" type="text" placeholder="BTC 或 BTC/USDT" required autocomplete="off" />
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>类型</span>
|
||
<select id="plan-create-type" required></select>
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>趋势周期</span>
|
||
<select id="plan-create-trend-tf" required></select>
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>入场周期</span>
|
||
<select id="plan-create-entry-tf" required></select>
|
||
</label>
|
||
<label class="plan-field plan-field-dir">
|
||
<span>方向</span>
|
||
<span class="plan-radio-row" id="plan-create-direction"></span>
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>目标位</span>
|
||
<input id="plan-create-target" type="text" placeholder="如 68500" autocomplete="off" data-lpignore="true" data-1p-ignore="true" data-form-type="other" />
|
||
</label>
|
||
<label class="plan-field">
|
||
<span>当前区间</span>
|
||
<input id="plan-create-range" type="text" placeholder="如 67000-68000" autocomplete="off" data-lpignore="true" data-1p-ignore="true" data-form-type="other" />
|
||
</label>
|
||
<label class="plan-field plan-field-full">
|
||
<span>备注</span>
|
||
<textarea id="plan-create-note" rows="2" placeholder="计划说明…" autocomplete="off" data-lpignore="true" data-1p-ignore="true" data-form-type="other"></textarea>
|
||
</label>
|
||
</div>
|
||
<button type="submit" class="primary plan-submit-btn">保存并进入进行中</button>
|
||
</form>
|
||
</section>
|
||
<section class="plan-active-section card">
|
||
<div class="plan-panel-head">
|
||
<h2>进行中的计划</h2>
|
||
<span id="plan-active-count" class="plan-panel-meta"></span>
|
||
</div>
|
||
<div id="plan-active-list" class="plan-active-list"></div>
|
||
</section>
|
||
</aside>
|
||
<main class="plan-right-panel">
|
||
<section class="plan-history-section card">
|
||
<div class="plan-panel-head">
|
||
<h2>计划历史</h2>
|
||
<span id="plan-history-count" class="plan-panel-meta"></span>
|
||
</div>
|
||
<div id="plan-history-list" class="plan-history-list"></div>
|
||
</section>
|
||
<section class="plan-stats-section card">
|
||
<div class="plan-panel-head">
|
||
<h2>数据统计</h2>
|
||
<span id="plan-stats-label" class="plan-panel-meta"></span>
|
||
</div>
|
||
<div class="plan-stats-toolbar">
|
||
<div class="plan-period-tabs" id="plan-stats-period-tabs" role="tablist">
|
||
<button type="button" class="plan-period-btn is-active" data-period="all">全部</button>
|
||
<button type="button" class="plan-period-btn" data-period="week">本周</button>
|
||
<button type="button" class="plan-period-btn" data-period="month">本月</button>
|
||
<button type="button" class="plan-period-btn" data-period="range">区间</button>
|
||
</div>
|
||
<span id="plan-stats-range-wrap" class="plan-stats-range hidden">
|
||
<input id="plan-stats-date-from" type="date" title="起始日" />
|
||
<span class="plan-period-sep">~</span>
|
||
<input id="plan-stats-date-to" type="date" title="结束日" />
|
||
</span>
|
||
<div class="plan-dim-tabs" id="plan-stats-dim-tabs" role="tablist">
|
||
<button type="button" class="plan-dim-btn is-active" data-dim="symbol">币种</button>
|
||
<button type="button" class="plan-dim-btn" data-dim="trend_tf">趋势周期</button>
|
||
<button type="button" class="plan-dim-btn" data-dim="entry_scheme">入场方案</button>
|
||
</div>
|
||
</div>
|
||
<div id="plan-stats-table" class="plan-stats-table-wrap"></div>
|
||
</section>
|
||
</main>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-monitor" class="page">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">MON</span> 监控区</h1>
|
||
</div>
|
||
<details id="host-status-panel" class="host-status-panel" aria-label="服务器运行状态">
|
||
<summary class="host-status-summary">
|
||
<span class="host-status-dot ok" id="host-status-dot" aria-hidden="true"></span>
|
||
<span class="host-status-summary-title">服务器状态</span>
|
||
<span class="host-status-summary-text" id="host-status-summary-text">加载中…</span>
|
||
</summary>
|
||
<div id="host-status-bar" class="host-status-bar" aria-live="polite">
|
||
<div class="host-status-top">
|
||
<div class="host-status-head">
|
||
<span class="host-status-name" id="host-status-name" title="">服务器</span>
|
||
</div>
|
||
<div class="host-status-meta">
|
||
<span class="host-status-uptime" id="host-status-uptime"></span>
|
||
<span class="host-status-updated" id="host-status-updated"></span>
|
||
</div>
|
||
</div>
|
||
<div class="host-status-metrics">
|
||
<div class="host-metric-card" id="host-metric-cpu">
|
||
<div class="host-metric-head">
|
||
<span class="host-metric-label">CPU</span>
|
||
<span class="host-metric-val" id="host-cpu-val">—</span>
|
||
</div>
|
||
<div class="host-metric-bar"><span class="host-metric-fill" id="host-cpu-fill"></span></div>
|
||
<span class="host-metric-sub" id="host-cpu-sub">—</span>
|
||
</div>
|
||
<div class="host-metric-card" id="host-metric-mem">
|
||
<div class="host-metric-head">
|
||
<span class="host-metric-label">内存</span>
|
||
<span class="host-metric-val" id="host-mem-val">—</span>
|
||
</div>
|
||
<div class="host-metric-bar"><span class="host-metric-fill" id="host-mem-fill"></span></div>
|
||
<span class="host-metric-sub" id="host-mem-sub">—</span>
|
||
</div>
|
||
<div class="host-metric-card" id="host-metric-disk">
|
||
<div class="host-metric-head">
|
||
<span class="host-metric-label">硬盘</span>
|
||
<span class="host-metric-val" id="host-disk-val">—</span>
|
||
</div>
|
||
<div class="host-metric-bar"><span class="host-metric-fill" id="host-disk-fill"></span></div>
|
||
<span class="host-metric-sub" id="host-disk-sub">—</span>
|
||
</div>
|
||
<div class="host-metric-card host-metric-card-net" id="host-metric-net">
|
||
<div class="host-metric-head">
|
||
<span class="host-metric-label">网络</span>
|
||
<span class="host-metric-val host-metric-val-net" id="host-net-val">实时</span>
|
||
</div>
|
||
<div class="host-net-lines">
|
||
<span class="host-net-line" id="host-net-up">↑ —</span>
|
||
<span class="host-net-line" id="host-net-down">↓ —</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<div id="monitor-macro-banner" class="monitor-macro-banner hidden" aria-live="polite">
|
||
<div class="monitor-macro-banner-inner">
|
||
<span class="monitor-macro-badge">宏观风控</span>
|
||
<span id="monitor-macro-banner-text" class="monitor-macro-text"></span>
|
||
</div>
|
||
</div>
|
||
<div id="monitor-alert-summary" class="monitor-alert-summary hidden" aria-live="polite"></div>
|
||
<details id="monitor-ops-fold" class="hub-m-fold monitor-ops-fold">
|
||
<summary class="hub-m-fold-summary">
|
||
<span class="hub-m-fold-title">操作 · 刷新 / 紧急全平</span>
|
||
<span id="monitor-updated-summary" class="hub-m-fold-meta"></span>
|
||
</summary>
|
||
<div class="toolbar">
|
||
<button type="button" id="btn-monitor-refresh" class="primary">立即刷新</button>
|
||
<label class="chk-label">
|
||
<input type="checkbox" id="auto-monitor" checked /> 后台每 5 秒聚合 · SSE 自动更新
|
||
</label>
|
||
<button type="button" id="btn-close-all" class="danger">全局紧急全平</button>
|
||
<span class="toolbar-spacer"></span>
|
||
<span id="monitor-updated" class="toolbar-meta"></span>
|
||
</div>
|
||
</details>
|
||
<div id="monitor-grid" class="grid-monitor"></div>
|
||
</div>
|
||
|
||
<div id="page-market" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">MKT</span> 行情区</h1>
|
||
</div>
|
||
<details id="market-toolbar-fold" class="hub-m-fold market-toolbar-fold">
|
||
<summary class="hub-m-fold-summary">
|
||
<span class="hub-m-fold-title">选币 · 周期 · 加载</span>
|
||
<span id="market-fold-summary" class="hub-m-fold-meta">BTC/USDT · 1d</span>
|
||
</summary>
|
||
<div class="market-toolbar toolbar">
|
||
<label class="market-field">
|
||
<span>交易所</span>
|
||
<select id="market-exchange"></select>
|
||
</label>
|
||
<label class="market-field market-field-symbol">
|
||
<span>币种</span>
|
||
<div class="market-symbol-wrap">
|
||
<input id="market-symbol" type="text" value="BTC/USDT" placeholder="BTC/USDT" autocomplete="off" />
|
||
<div class="market-scan-tabs" role="tablist" aria-label="成交额与背离筛选">
|
||
<button type="button" class="market-scan-tab is-active" data-scan-tab="top20" aria-selected="true">Top20</button>
|
||
<button type="button" class="market-scan-tab" data-scan-tab="4h" aria-selected="false">4h背离</button>
|
||
<button type="button" class="market-scan-tab" data-scan-tab="1d" aria-selected="false">日线背离</button>
|
||
<button type="button" class="market-scan-tab" data-scan-tab="1w" aria-selected="false">周线背离</button>
|
||
</div>
|
||
</div>
|
||
</label>
|
||
<label class="market-field">
|
||
<span>周期</span>
|
||
<select id="market-timeframe">
|
||
<option value="1m">1m</option>
|
||
<option value="5m">5m</option>
|
||
<option value="15m">15m</option>
|
||
<option value="1h">1h</option>
|
||
<option value="2h">2h</option>
|
||
<option value="4h">4h</option>
|
||
<option value="1d" selected>1d</option>
|
||
<option value="1w">1w</option>
|
||
</select>
|
||
</label>
|
||
<button type="button" id="market-load" class="primary">加载</button>
|
||
<button type="button" id="market-refresh" class="ghost" title="清空该币种本周期 K 线缓存并从交易所重新拉取">清库重拉</button>
|
||
<span class="toolbar-spacer"></span>
|
||
<span id="market-bar-countdown" class="toolbar-meta market-countdown"></span>
|
||
<span id="market-updated" class="toolbar-meta"></span>
|
||
</div>
|
||
</details>
|
||
<div id="market-vol-rank-anchor" class="market-vol-rank-anchor">
|
||
<div id="market-vol-rank-sheet" class="market-vol-rank-sheet hidden" aria-hidden="true">
|
||
<div id="market-vol-rank-meta" class="market-vol-rank-meta">加载中…</div>
|
||
<ol id="market-vol-rank-list" class="market-vol-rank-list"></ol>
|
||
</div>
|
||
</div>
|
||
<p id="market-status" class="market-status"></p>
|
||
<div id="market-chart-wrap" class="market-chart-wrap">
|
||
<div class="market-ohlcv-bar" aria-label="K线详情">
|
||
<div class="market-ohlcv-title">
|
||
<span id="mkt-exchange-label" class="mkt-exchange-tag"></span>
|
||
<span id="mkt-symbol-label">—</span>
|
||
<span id="mkt-tf-label">1d</span>
|
||
<div class="market-chart-actions">
|
||
<label class="market-day-split-opt" title="上一交易日收盘价水平线(北京切日)">
|
||
<input type="checkbox" id="market-prev-close-line" /> 昨日收盘价
|
||
</label>
|
||
<label class="market-day-split-opt" title="上一交易日最高/最低价水平线(北京切日)">
|
||
<input type="checkbox" id="market-prev-hl-lines" /> 昨日高低点
|
||
</label>
|
||
<label class="market-day-split-opt" title="北京时间 8:00 交易切日竖线">
|
||
<input type="checkbox" id="market-day-split" /> 交易间隔日
|
||
</label>
|
||
<label class="market-day-split-opt" title="OKX 期权到期切日:每天北京 16:00(UTC 08:00) 黄虚线,对应 1/2/3 日期权">
|
||
<input type="checkbox" id="market-option-expiry-split" /> 期权间隔日
|
||
</label>
|
||
<details class="market-ind-menu">
|
||
<summary>技术指标</summary>
|
||
<div class="market-ind-options">
|
||
<label class="market-ind-opt"><input type="checkbox" id="market-ind-ema" value="ema" /> EMA交叉(21/55)</label>
|
||
<label class="market-ind-opt"><input type="checkbox" id="market-ind-ema144" value="ema144" /> EMA144</label>
|
||
<label class="market-ind-opt"><input type="checkbox" id="market-ind-macd" value="macd" /> MACD</label>
|
||
<label class="market-ind-opt"><input type="checkbox" id="market-ind-rsi" value="rsi" /> RSI</label>
|
||
</div>
|
||
</details>
|
||
<button type="button" id="market-chart-fullscreen" class="ghost market-fs-btn" title="K线全屏(按 F)">全屏</button>
|
||
</div>
|
||
</div>
|
||
<div class="market-ohlcv-row">
|
||
<span class="ohlcv-item"><span class="k">开</span><span id="mkt-o">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">高</span><span id="mkt-h">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">低</span><span id="mkt-l">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">收</span><span id="mkt-c">—</span></span>
|
||
<span class="ohlcv-item market-vol"><span class="k">量</span><span id="mkt-v">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">振幅</span><span id="mkt-amp">—</span></span>
|
||
</div>
|
||
<div id="market-div-legend" class="market-div-legend hidden" aria-live="polite"></div>
|
||
<div id="market-fs-toolbar" class="market-fs-toolbar hidden" aria-label="全屏行情控制">
|
||
<label class="market-field market-fs-field">
|
||
<span>交易所</span>
|
||
<select id="market-fs-exchange"></select>
|
||
</label>
|
||
<label class="market-field market-fs-field market-field-symbol">
|
||
<span>币种</span>
|
||
<div class="market-symbol-wrap">
|
||
<input id="market-fs-symbol" type="text" placeholder="BTC/USDT" autocomplete="off" />
|
||
<div class="market-scan-tabs" role="tablist" aria-label="成交额与背离筛选">
|
||
<button type="button" class="market-scan-tab is-active" data-scan-tab="top20" aria-selected="true">Top20</button>
|
||
<button type="button" class="market-scan-tab" data-scan-tab="4h" aria-selected="false">4h背离</button>
|
||
<button type="button" class="market-scan-tab" data-scan-tab="1d" aria-selected="false">日线背离</button>
|
||
<button type="button" class="market-scan-tab" data-scan-tab="1w" aria-selected="false">周线背离</button>
|
||
</div>
|
||
</div>
|
||
</label>
|
||
<label class="market-field market-fs-field">
|
||
<span>周期</span>
|
||
<select id="market-fs-timeframe">
|
||
<option value="1m">1m</option>
|
||
<option value="5m">5m</option>
|
||
<option value="15m">15m</option>
|
||
<option value="1h">1h</option>
|
||
<option value="2h">2h</option>
|
||
<option value="4h">4h</option>
|
||
<option value="1d">1d</option>
|
||
<option value="1w">1w</option>
|
||
</select>
|
||
</label>
|
||
<button type="button" id="market-fs-load" class="primary">加载</button>
|
||
</div>
|
||
</div>
|
||
<div id="market-vol-rank-anchor-fs" class="market-vol-rank-anchor-fs" aria-hidden="true"></div>
|
||
<div id="market-pos-panel" class="market-pos-panel hidden" aria-label="持仓标记">
|
||
<div class="market-pos-row">
|
||
<span id="mkt-pos-side" class="market-pos-side"></span>
|
||
<span class="ohlcv-item"><span class="k">入场</span><span id="mkt-pos-entry">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">止损</span><span id="mkt-pos-sl">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">止盈</span><span id="mkt-pos-tp">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">张数</span><span id="mkt-pos-size">—</span></span>
|
||
<span class="ohlcv-item"><span class="k">浮盈亏</span><span id="mkt-pos-pnl" class="market-pos-pnl">—</span></span>
|
||
<button type="button" id="market-pos-clear" class="ghost market-pos-clear" title="清除 K 线上的持仓价格线">清除标记</button>
|
||
</div>
|
||
<div id="market-pos-orders" class="market-pos-orders"></div>
|
||
</div>
|
||
<div class="market-chart-body">
|
||
<aside id="market-draw-toolbar" class="market-draw-toolbar" aria-label="画线工具">
|
||
<button type="button" class="market-draw-btn is-active" data-tool="cursor" title="光标(点击选中,右键管理,Del 删除)">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 4l7 16 2.5-5.5L20 12z"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="hline" title="水平线">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.8" d="M4 12h16"/><circle cx="12" cy="12" r="2" fill="currentColor"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="rect" title="矩形">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="5" y="7" width="14" height="10" fill="none" stroke="currentColor" stroke-width="1.6"/><circle cx="5" cy="7" r="1.3" fill="currentColor"/><circle cx="19" cy="17" r="1.3" fill="currentColor"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="brush" title="画笔">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 18l8-2 2-8 6-2-2 6-8 2z"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="range" title="价格测距(按住拖动)">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.6" d="M12 5v14M8 8h8M8 16h8"/><path fill="currentColor" d="M11 4h2v3h-2zm0 13h2v3h-2z"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="fib" title="斐波那契(按住拖动)">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.4" d="M4 6h16M4 10h16M4 14h16M4 18h16"/><circle cx="20" cy="6" r="1.2" fill="currentColor"/><circle cx="20" cy="18" r="1.2" fill="currentColor"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="trend" title="趋势线(按住拖动)">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.8" d="M5 18L19 6"/><circle cx="5" cy="18" r="1.5" fill="currentColor"/><circle cx="19" cy="6" r="1.5" fill="currentColor"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="path" title="折线(连续点击,双击/右键/回车结束)">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.6" d="M5 16L10 12L14 15L19 7"/><path fill="currentColor" d="M17 5l3 3-3 1z"/></svg>
|
||
</button>
|
||
<span class="market-draw-sep" aria-hidden="true"></span>
|
||
<button type="button" class="market-draw-btn" data-tool="erase" title="删除选中">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M9 3h6l1 2h4v2H4V5h4zm1 6h2v9h-2zm4 0h2v9h-2zM7 7h10l-1 14H8z"/></svg>
|
||
</button>
|
||
<button type="button" class="market-draw-btn" data-tool="clear" title="清除全部画线">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.8" d="M6 6l12 12M18 6L6 18"/></svg>
|
||
</button>
|
||
</aside>
|
||
<div class="market-chart-main">
|
||
<button type="button" id="market-chart-fs-exit" class="ghost market-fs-exit hidden" title="退出全屏 (Esc)">退出全屏</button>
|
||
<div id="market-exchange-badge" class="market-exchange-badge" aria-hidden="true"></div>
|
||
<div id="market-chart" class="market-chart-host"></div>
|
||
<canvas id="market-draw-canvas" class="market-draw-canvas" aria-hidden="true"></canvas>
|
||
<div id="market-price-tag" class="market-price-tag hidden" aria-hidden="true">
|
||
<div class="market-price-tag-head">
|
||
<span class="market-price-tag-label">现价</span>
|
||
<span id="market-price-tag-value" class="market-price-tag-value"></span>
|
||
</div>
|
||
<div id="market-price-tag-time" class="market-price-tag-time"></div>
|
||
</div>
|
||
<button type="button" id="market-price-auto" class="market-price-auto is-on" title="开启:价格轴与视口随刷新自动调整;关闭:后台静默更新,保留当前缩放">自动</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-archive" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">IN</span> 内照明心</h1>
|
||
<p class="page-desc">永续 / 期权交易记录 · 交易日历 · 图表概览 · 复盘语录</p>
|
||
</div>
|
||
<div class="archive-product-tabs" id="archive-product-tabs" role="tablist" aria-label="品种">
|
||
<button type="button" class="archive-product-tab is-active" role="tab" aria-selected="true" data-archive-product="perp">永续</button>
|
||
<button type="button" class="archive-product-tab" role="tab" aria-selected="false" data-archive-product="options">期权</button>
|
||
</div>
|
||
<div class="archive-toolbar toolbar">
|
||
<label class="chk-label archive-toolbar-desktop"><input type="checkbox" id="archive-filter-profit" /> 盈利单</label>
|
||
<label class="chk-label archive-toolbar-desktop"><input type="checkbox" id="archive-filter-loss" /> 亏损单</label>
|
||
<label class="chk-label archive-toolbar-desktop"><input type="checkbox" id="archive-filter-sick" /> 犯病</label>
|
||
<div class="archive-period-bar archive-field">
|
||
<span>日期</span>
|
||
<div class="archive-period-tabs" id="archive-period-tabs" role="tablist">
|
||
<button type="button" class="archive-period-btn is-active" data-period="today">本日</button>
|
||
<button type="button" class="archive-period-btn" data-period="week">本周</button>
|
||
<button type="button" class="archive-period-btn" data-period="month">本月</button>
|
||
<button type="button" class="archive-period-btn" data-period="range">区间</button>
|
||
</div>
|
||
<input id="archive-trading-day" type="date" class="archive-period-day-input" title="本日交易日" />
|
||
<span id="archive-period-range-wrap" class="archive-period-range hidden">
|
||
<input id="archive-date-from" type="date" title="起始日" />
|
||
<span class="archive-period-sep">~</span>
|
||
<input id="archive-date-to" type="date" title="结束日" />
|
||
</span>
|
||
</div>
|
||
<button type="button" id="archive-btn-chart-toggle" class="ghost archive-toolbar-desktop">图表</button>
|
||
<label class="archive-field archive-search-field archive-toolbar-desktop">
|
||
<span>搜索</span>
|
||
<input id="archive-search" type="search" placeholder="合约 / 交易所 / 备注" autocomplete="off" />
|
||
</label>
|
||
<label class="archive-field archive-toolbar-desktop">
|
||
<span>交易所</span>
|
||
<select id="archive-exchange"><option value="">全部</option></select>
|
||
</label>
|
||
<button type="button" id="archive-btn-refresh" class="primary">刷新</button>
|
||
<button type="button" id="archive-btn-sync" class="ghost">同步</button>
|
||
<span id="archive-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<section class="archive-stats-card card">
|
||
<div class="archive-stats-card-head">
|
||
<h2>统计分析</h2>
|
||
</div>
|
||
<div id="archive-stats" class="archive-stats-bar"></div>
|
||
</section>
|
||
<div class="archive-layout">
|
||
<div class="archive-content-tabs" id="archive-content-tabs" role="tablist" aria-label="内照明心分区">
|
||
<button type="button" class="archive-content-tab is-active" role="tab" aria-selected="true" data-archive-tab="trades" id="archive-tab-trades">交易记录</button>
|
||
<button type="button" class="archive-content-tab" role="tab" aria-selected="false" data-archive-tab="calendar" id="archive-tab-calendar">交易日历</button>
|
||
<button type="button" class="archive-content-tab" role="tab" aria-selected="false" data-archive-tab="viz" id="archive-tab-viz">图表概览</button>
|
||
<button type="button" class="archive-content-tab" role="tab" aria-selected="false" data-archive-tab="quotes" id="archive-tab-quotes">复盘语录</button>
|
||
</div>
|
||
<main class="archive-main-panel archive-tab-panel is-active" id="archive-panel-trades" role="tabpanel" aria-labelledby="archive-tab-trades">
|
||
<div id="archive-chart-section" class="archive-acc-section archive-chart-section" hidden>
|
||
<div class="archive-chart-toolbar toolbar">
|
||
<div class="archive-tf-tabs" id="archive-tf-tabs" role="tablist">
|
||
<button type="button" class="archive-tf-btn" data-tf="5m">5m</button>
|
||
<button type="button" class="archive-tf-btn is-active" data-tf="15m">15m</button>
|
||
<button type="button" class="archive-tf-btn" data-tf="1h">1h</button>
|
||
<button type="button" class="archive-tf-btn" data-tf="4h">4h</button>
|
||
</div>
|
||
<label class="archive-field">
|
||
<span>视窗</span>
|
||
<select id="archive-view-mode">
|
||
<option value="hold">持仓过程(锚平仓)</option>
|
||
<option value="entry">进场决策(锚开仓)</option>
|
||
</select>
|
||
</label>
|
||
<label class="archive-field">
|
||
<span>跳转时间</span>
|
||
<input id="archive-jump-at" type="text" placeholder="2026-06-07 14:30" autocomplete="off" />
|
||
</label>
|
||
<button type="button" id="archive-btn-jump" class="ghost">跳转</button>
|
||
<button type="button" id="archive-btn-reload-chart" class="primary">重载图表</button>
|
||
<button type="button" id="archive-btn-chart-close" class="ghost">关闭图表</button>
|
||
</div>
|
||
<div class="archive-chart-wrap">
|
||
<div id="archive-chart" class="archive-chart-host"></div>
|
||
<button type="button" id="archive-mark-auto" class="archive-mark-auto is-on" title="开启:该币种全部交易均标注开/平;关闭:仅当前选中一笔">自动</button>
|
||
</div>
|
||
<div class="archive-chart-title-row">
|
||
<span id="archive-chart-title" class="archive-acc-sub">—</span>
|
||
</div>
|
||
</div>
|
||
<div id="archive-trades-section" class="archive-acc-section archive-trades-section">
|
||
<div class="archive-panel-head">
|
||
<h2>交易记录</h2>
|
||
</div>
|
||
<div id="archive-trades" class="archive-trades"></div>
|
||
<div class="archive-trades-pager" id="archive-trades-pager" hidden>
|
||
<button type="button" class="ghost" id="archive-trades-prev">上一页</button>
|
||
<span class="muted" id="archive-trades-page-label">第 1 / 1 页</span>
|
||
<button type="button" class="ghost" id="archive-trades-next">下一页</button>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
<section class="archive-calendar-panel archive-tab-panel" id="archive-panel-calendar" role="tabpanel" aria-labelledby="archive-tab-calendar" hidden>
|
||
<div class="archive-panel-head">
|
||
<h2>交易日历</h2>
|
||
<span id="archive-cal-summary-sub" class="archive-panel-meta">—</span>
|
||
</div>
|
||
<div id="archive-calendar-wrap" class="trade-cal-wrap">
|
||
<div class="trade-cal-head">
|
||
<button type="button" id="archive-cal-prev" class="ghost" title="上一月">‹</button>
|
||
<span id="archive-cal-title" class="trade-cal-title"></span>
|
||
<button type="button" id="archive-cal-next" class="ghost" title="下一月">›</button>
|
||
</div>
|
||
<div id="archive-calendar" class="trade-cal-grid-host" role="grid" aria-label="交易日历"></div>
|
||
</div>
|
||
<div class="archive-calendar-day-trades" id="archive-calendar-day-trades">
|
||
<div class="archive-panel-head">
|
||
<h3>当日交易</h3>
|
||
<span id="archive-calendar-day-trades-meta" class="archive-panel-meta"></span>
|
||
</div>
|
||
<div id="archive-calendar-day-trades-body" class="archive-calendar-day-trades-body">
|
||
<p class="archive-empty">点击日历中的日期,在下方查看当日交易记录.</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="archive-viz-panel archive-tab-panel" id="archive-panel-viz" role="tabpanel" aria-labelledby="archive-tab-viz" hidden>
|
||
<div class="archive-panel-head">
|
||
<h2>图表概览</h2>
|
||
<span id="archive-stats-viz-sub" class="archive-panel-meta"></span>
|
||
</div>
|
||
<div id="archive-stats-charts" class="archive-stats-charts"></div>
|
||
</section>
|
||
<aside class="archive-quotes-panel archive-tab-panel" id="archive-panel-quotes" role="tabpanel" aria-labelledby="archive-tab-quotes" hidden>
|
||
<div class="archive-panel-head">
|
||
<h2>复盘语录</h2>
|
||
<span id="archive-quotes-count" class="archive-panel-meta"></span>
|
||
</div>
|
||
<form id="archive-quote-form" class="archive-quote-form">
|
||
<input id="archive-quote-date" type="date" required />
|
||
<textarea id="archive-quote-content" rows="5" placeholder="今日复盘心得…" required></textarea>
|
||
<button type="submit" id="archive-quote-submit" class="primary">添加语录</button>
|
||
</form>
|
||
<div class="archive-quote-day-trades" id="archive-quote-day-trades">
|
||
<div class="archive-quote-day-trades-head">
|
||
<h3>当日已平仓</h3>
|
||
<span id="archive-quote-day-trades-meta" class="archive-panel-meta"></span>
|
||
</div>
|
||
<div id="archive-quote-day-trades-body" class="archive-quote-day-trades-body">
|
||
<p class="archive-empty">选择日期后自动带上该日已平仓记录.</p>
|
||
</div>
|
||
</div>
|
||
<div id="archive-quotes-list" class="archive-quotes-list"></div>
|
||
</aside>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-quotes" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">QT</span> 语录</h1>
|
||
<p class="page-desc">复盘语录博客流 · 按交易日分组 · 可展开全文</p>
|
||
</div>
|
||
<div class="quotes-toolbar toolbar">
|
||
<button type="button" id="quotes-btn-refresh" class="primary">刷新</button>
|
||
<a href="/archive" class="ghost quotes-link-archive" id="quotes-link-archive">去内照明心写语录</a>
|
||
<span id="quotes-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<div id="quotes-feed" class="quotes-feed" aria-live="polite"></div>
|
||
</div>
|
||
|
||
<div id="page-dashboard" class="page hidden">
|
||
<div class="dash-bg-grid" aria-hidden="true"></div>
|
||
<div class="dash-wrap">
|
||
<div class="dash-head">
|
||
<div>
|
||
<h1><span class="dash-head-tag">DASH</span>数据看板</h1>
|
||
<p class="page-desc">三户当日总览 · 有仓持仓表 · 平仓流水 · SSE 推送更新</p>
|
||
</div>
|
||
<div class="dash-head-meta">
|
||
<div><span class="dash-pulse-dot" aria-hidden="true"></span><strong>LIVE</strong> · 交易日 <span id="dash-trading-day">—</span></div>
|
||
<div>更新 <span id="dash-updated-at">—</span></div>
|
||
<button type="button" id="dash-btn-refresh" class="ghost" style="margin-top:8px">立即刷新</button>
|
||
</div>
|
||
</div>
|
||
<div id="dash-alert-banner" class="dash-alert-banner" role="alert">
|
||
<strong>⚠ 风险预警</strong>
|
||
<span id="dash-alert-banner-text"></span>
|
||
</div>
|
||
<div id="dash-kpi-row" class="dash-kpi-row"></div>
|
||
<section class="dash-section">
|
||
<div class="dash-section-head">持仓明细 · POSITIONS</div>
|
||
<div class="dash-section-body"><div id="dash-accounts" class="dash-ac-grid"></div></div>
|
||
</section>
|
||
<section class="dash-section">
|
||
<div class="dash-section-head">平仓明细 · CLOSED TRADES</div>
|
||
<div class="dash-section-body" id="dash-trades-body"></div>
|
||
</section>
|
||
<p id="dash-status" class="dash-status"></p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="instance-frame-shell" class="instance-frame-shell hidden" aria-hidden="true">
|
||
<div class="instance-frame-toolbar">
|
||
<button type="button" id="instance-frame-back" class="ghost">← 返回监控</button>
|
||
<span id="instance-frame-title" class="instance-frame-title"></span>
|
||
<div class="instance-frame-actions">
|
||
<button type="button" id="instance-frame-refresh" class="ghost">刷新</button>
|
||
<button type="button" id="instance-frame-newtab" class="ghost">新标签打开</button>
|
||
</div>
|
||
</div>
|
||
<div id="instance-frame-loading" class="instance-frame-loading" aria-hidden="true">
|
||
<div class="instance-frame-loading-inner">
|
||
<span class="instance-frame-spinner" aria-hidden="true"></span>
|
||
<span>加载中…</span>
|
||
</div>
|
||
</div>
|
||
<iframe id="instance-frame" class="instance-frame" title="交易所实例"></iframe>
|
||
</div>
|
||
|
||
<div id="exchange-fullscreen" class="exchange-fullscreen hidden" aria-hidden="true">
|
||
<button type="button" id="exchange-fullscreen-backdrop" class="exchange-fullscreen-backdrop" aria-label="关闭全屏"></button>
|
||
<div class="exchange-fullscreen-panel">
|
||
<div id="exchange-fullscreen-inner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-funds" class="page hidden">
|
||
<div class="funds-stage">
|
||
<div class="funds-stage-grid" aria-hidden="true"></div>
|
||
<div class="funds-stage-glow" aria-hidden="true"></div>
|
||
<div class="funds-stage-inner">
|
||
<div class="page-head funds-head">
|
||
<div class="funds-head-main">
|
||
<h1><span class="head-tag funds-tag">CAP</span> 资金概况</h1>
|
||
<details class="funds-desc-fold">
|
||
<summary class="funds-desc-toggle">统计说明</summary>
|
||
<p id="funds-desc-body" class="page-desc funds-desc">加载配置中…</p>
|
||
</details>
|
||
</div>
|
||
<div class="funds-live-pill" aria-hidden="true">
|
||
<span class="funds-live-dot"></span>
|
||
<span>EQUITY FEED</span>
|
||
</div>
|
||
</div>
|
||
<div class="funds-toolbar toolbar">
|
||
<button type="button" id="funds-btn-refresh" class="primary funds-btn-refresh">同步快照</button>
|
||
<span id="funds-status" class="toolbar-meta funds-status"></span>
|
||
</div>
|
||
<section class="funds-summary">
|
||
<div class="funds-stat-card funds-stat-card-primary">
|
||
<div class="funds-stat-label">总资金 · TOTAL</div>
|
||
<div id="funds-total-usdt" class="funds-stat-value">—</div>
|
||
</div>
|
||
<div class="funds-stat-card funds-stat-card-pnl">
|
||
<div class="funds-stat-label">累计盈亏 · SINCE START</div>
|
||
<div id="funds-total-period" class="funds-stat-val">—</div>
|
||
<div id="funds-total-period-sub" class="funds-stat-sub">相对统计起点</div>
|
||
</div>
|
||
<div class="funds-stat-card">
|
||
<div class="funds-stat-label">较昨日 · Δ24H</div>
|
||
<div id="funds-total-delta" class="funds-stat-val">—</div>
|
||
</div>
|
||
<div class="funds-stat-card">
|
||
<div class="funds-stat-label">最大回撤 · MDD</div>
|
||
<div class="funds-stat-value"><span id="funds-total-dd-u">—</span> <small id="funds-total-dd-pct" class="funds-dd-pct">—</small></div>
|
||
</div>
|
||
</section>
|
||
<p id="funds-meta" class="funds-meta"></p>
|
||
<div class="funds-chart-panel">
|
||
<div class="funds-chart-head">
|
||
<span class="funds-chart-tag">EQUITY CURVE</span>
|
||
<span id="funds-chart-sub" class="funds-chart-sub">— TRADING DAYS</span>
|
||
</div>
|
||
<div id="funds-chart-total" class="funds-chart-host"></div>
|
||
</div>
|
||
<div class="funds-section-head">
|
||
<h2 class="funds-section-title"><span class="funds-section-mark">//</span> 分户资金</h2>
|
||
<p class="funds-section-hint">点击卡片放大查看资金曲线与回撤</p>
|
||
</div>
|
||
<div id="funds-accounts" class="funds-accounts"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="funds-fullscreen" class="funds-fullscreen hidden" aria-hidden="true">
|
||
<button type="button" id="funds-fs-backdrop" class="funds-fs-backdrop" aria-label="关闭全屏"></button>
|
||
<div class="funds-fs-panel">
|
||
<div class="funds-fs-head">
|
||
<div>
|
||
<h2 id="funds-fs-title" class="funds-fs-title">—</h2>
|
||
<p id="funds-fs-sub" class="funds-fs-sub"></p>
|
||
</div>
|
||
<button type="button" id="funds-fs-close" class="ghost">关闭</button>
|
||
</div>
|
||
<section class="funds-fs-summary">
|
||
<div class="funds-fs-stat"><span class="k">总资金</span><span id="funds-fs-total" class="v">—</span></div>
|
||
<div class="funds-fs-stat"><span class="k">资金户</span><span id="funds-fs-funding" class="v">—</span></div>
|
||
<div class="funds-fs-stat"><span class="k">交易户</span><span id="funds-fs-trading" class="v">—</span></div>
|
||
<div class="funds-fs-stat"><span class="k">较昨日</span><span id="funds-fs-delta" class="v">—</span></div>
|
||
<div class="funds-fs-stat"><span class="k">最大回撤</span><span id="funds-fs-dd" class="v">—</span></div>
|
||
</section>
|
||
<div id="funds-fs-chart" class="funds-fs-chart-host"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-ai" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">AI</span> 教练</h1>
|
||
<p class="page-desc">交易教练 / 普通聊天 / 交易监管 · 右侧可回看历史会话</p>
|
||
</div>
|
||
<div class="ai-mobile-tabs" role="tablist" aria-label="AI 教练视图">
|
||
<button type="button" class="ai-mobile-tab is-active" data-ai-tab="trading" role="tab" aria-selected="true">交易教练</button>
|
||
<button type="button" class="ai-mobile-tab" data-ai-tab="general" role="tab" aria-selected="false">普通聊天</button>
|
||
<button type="button" class="ai-mobile-tab" data-ai-tab="supervisor" role="tab" aria-selected="false">交易监管</button>
|
||
<button type="button" class="ai-mobile-tab" data-ai-tab="history" role="tab" aria-selected="false">历史</button>
|
||
<button type="button" class="ai-mobile-tab ai-mobile-tab-action" data-ai-tab="new" role="tab" aria-selected="false" title="新开对话">新开</button>
|
||
</div>
|
||
<div class="ai-layout" data-ai-mobile-tab="trading">
|
||
<section class="ai-panel ai-chat-panel" data-ai-panel="chat">
|
||
<div class="ai-chat-topbar">
|
||
<div class="ai-bot-bar" role="tablist" aria-label="聊天机器人">
|
||
<button type="button" class="ai-bot-tab is-active" data-bot="trading" role="tab" aria-selected="true">交易教练</button>
|
||
<button type="button" class="ai-bot-tab" data-bot="general" role="tab" aria-selected="false">普通聊天</button>
|
||
<button type="button" class="ai-bot-tab" data-bot="supervisor" role="tab" aria-selected="false">交易监管</button>
|
||
</div>
|
||
<button type="button" id="btn-ai-chat-new" class="primary ai-chat-new-btn">新开对话</button>
|
||
</div>
|
||
<div class="ai-chat-split">
|
||
<div class="ai-chat-main">
|
||
<div class="ai-panel-head ai-chat-session-head">
|
||
<h2 id="ai-chat-title">聊天</h2>
|
||
</div>
|
||
<div id="ai-chat-messages" class="ai-panel-scroll ai-chat-messages" aria-live="polite"></div>
|
||
<form id="ai-chat-form" class="ai-chat-form">
|
||
<div class="ai-chat-compose">
|
||
<textarea id="ai-chat-input" rows="2" placeholder="聊聊行情,心态,纪律,执行…;可直接 Ctrl+V 粘贴截图" autocomplete="off"></textarea>
|
||
<div id="ai-chat-pending" class="ai-chat-pending-list" aria-live="polite"></div>
|
||
<div class="ai-chat-compose-actions">
|
||
<label class="ai-chat-upload-btn" title="上传图片或 txt/md/json 文档">
|
||
<input type="file" id="ai-chat-files" accept="image/*,.txt,.md,.markdown,.json" multiple hidden />
|
||
附件
|
||
</label>
|
||
<button type="submit" id="btn-ai-chat-send" class="primary">发送</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<aside class="ai-chat-history-panel" aria-label="聊天历史">
|
||
<div class="ai-chat-history-head">
|
||
<h3>聊天历史</h3>
|
||
</div>
|
||
<div id="ai-chat-history-list" class="ai-panel-scroll ai-chat-history-list" role="list"></div>
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-calculator" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">CAL</span> 策略计算器</h1>
|
||
<p class="page-desc">历史行情测算 · 以损定仓 · 价格均为手动输入</p>
|
||
</div>
|
||
<div class="toolbar">
|
||
<button type="button" id="calc-btn-refresh" class="primary">刷新</button>
|
||
<span id="calc-refresh-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<div class="calc-workspace">
|
||
<div class="calc-mobile-tabs" role="tablist" aria-label="计算器切换">
|
||
<button type="button" class="calc-m-tab is-active" data-calc-tab="trend" role="tab" aria-selected="true">
|
||
<span class="calc-tab-label-mobile">趋势回调</span><span class="calc-tab-label-desktop">趋势回调计算器</span>
|
||
</button>
|
||
<button type="button" class="calc-m-tab" data-calc-tab="roll" role="tab" aria-selected="false">
|
||
<span class="calc-tab-label-mobile">滚仓</span><span class="calc-tab-label-desktop">滚仓计算器</span>
|
||
</button>
|
||
<button type="button" class="calc-m-tab" data-calc-tab="po" role="tab" aria-selected="false">
|
||
<span class="calc-tab-label-mobile">永期对冲</span><span class="calc-tab-label-desktop">永期对冲计算器</span>
|
||
</button>
|
||
</div>
|
||
<div class="calc-layout" data-calc-tab="trend">
|
||
<section class="calc-card card" data-calc-pane="trend">
|
||
<div class="calc-pane-split">
|
||
<div class="calc-input-panel">
|
||
<h2>趋势回调计算器</h2>
|
||
<p class="calc-hint">逻辑与实例策略页一致:首仓 50% + 补仓网格;止损金额 = 资金 × 风险%.</p>
|
||
<form id="calc-trend-form" class="calc-form">
|
||
<div class="calc-form-grid">
|
||
<label class="calc-field">
|
||
<span>交易所</span>
|
||
<select id="calc-trend-exchange" required></select>
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>币种</span>
|
||
<input id="calc-trend-base" type="text" value="ETH" placeholder="如 ETH" required autocomplete="off" />
|
||
</label>
|
||
<div class="calc-field calc-field-span2">
|
||
<div id="calc-trend-market-info" class="calc-market-info">ETH/USDT · 加载合约信息…</div>
|
||
</div>
|
||
<label class="calc-field">
|
||
<span>交易资金 (U)</span>
|
||
<input id="calc-trend-capital" type="number" min="0.01" step="any" value="1000" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>风险 %</span>
|
||
<input id="calc-trend-risk" type="number" min="0.1" step="0.1" value="5" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>杠杆</span>
|
||
<input id="calc-trend-leverage" type="number" min="1" step="1" value="5" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>方向</span>
|
||
<select id="calc-trend-direction">
|
||
<option value="long">做多</option>
|
||
<option value="short">做空</option>
|
||
</select>
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>首仓入场价</span>
|
||
<input id="calc-trend-entry" type="number" min="0" step="any" placeholder="手动输入" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>止损价</span>
|
||
<input id="calc-trend-sl" type="number" min="0" step="any" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span id="calc-trend-add-label">补仓上沿价</span>
|
||
<input id="calc-trend-add-upper" type="number" min="0" step="any" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>止盈价</span>
|
||
<input id="calc-trend-tp" type="number" min="0" step="any" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>补仓档数</span>
|
||
<input id="calc-trend-dca-legs" type="number" min="1" max="20" step="1" value="5" />
|
||
</label>
|
||
</div>
|
||
<div class="calc-actions">
|
||
<button type="submit" class="primary">计算</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<aside class="calc-result-panel" aria-label="趋势回调结果推算">
|
||
<h3 class="calc-result-title">结果推算</h3>
|
||
<p class="calc-result-placeholder">填写左侧参数后点击「计算」</p>
|
||
<div id="calc-trend-result" class="calc-result hidden"></div>
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="calc-card card" data-calc-pane="roll">
|
||
<div class="calc-pane-split">
|
||
<div class="calc-input-panel">
|
||
<h2>滚仓计算器</h2>
|
||
<p class="calc-hint">首仓按「单次风险」以损定仓;每次滚仓后合并持仓打到新止损 ≈ 单次风险;止盈锁定首仓价不变.最多 3 次滚仓.</p>
|
||
<form id="calc-roll-form" class="calc-form">
|
||
<div class="calc-form-grid">
|
||
<label class="calc-field">
|
||
<span>交易所</span>
|
||
<select id="calc-roll-exchange" required></select>
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>币种</span>
|
||
<input id="calc-roll-base" type="text" value="ETH" placeholder="如 ETH" required autocomplete="off" />
|
||
</label>
|
||
<div class="calc-field calc-field-span2">
|
||
<div id="calc-roll-market-info" class="calc-market-info">ETH/USDT · 加载合约信息…</div>
|
||
</div>
|
||
<label class="calc-field">
|
||
<span>交易资金 (U)</span>
|
||
<input id="calc-roll-capital" type="number" min="0.01" step="any" value="1000" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>单次风险 %</span>
|
||
<input id="calc-roll-risk" type="number" min="0.1" step="0.1" value="5" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>方向</span>
|
||
<select id="calc-roll-direction">
|
||
<option value="long">做多</option>
|
||
<option value="short">做空</option>
|
||
</select>
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>首仓入场价</span>
|
||
<input id="calc-roll-entry" type="number" min="0" step="any" placeholder="手动输入" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>首仓止损价</span>
|
||
<input id="calc-roll-sl" type="number" min="0" step="any" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>止盈价(锁定)</span>
|
||
<input id="calc-roll-tp" type="number" min="0" step="any" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>已完成滚仓次数</span>
|
||
<input id="calc-roll-legs-done" type="number" min="0" max="3" step="1" value="0" />
|
||
</label>
|
||
</div>
|
||
<div class="calc-roll-legs-head">
|
||
<strong>滚仓加仓(最多 3 次)</strong>
|
||
<button type="button" id="calc-roll-add-leg" class="ghost">+ 添加滚仓</button>
|
||
</div>
|
||
<div id="calc-roll-legs-list" class="calc-roll-legs-list"></div>
|
||
<div class="calc-actions">
|
||
<button type="submit" class="primary">计算</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<aside class="calc-result-panel" aria-label="滚仓结果推算">
|
||
<h3 class="calc-result-title">结果推算</h3>
|
||
<p class="calc-result-placeholder">填写左侧参数后点击「计算」</p>
|
||
<div id="calc-roll-result" class="calc-result hidden"></div>
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="calc-card card" data-calc-pane="po">
|
||
<div class="calc-pane-split">
|
||
<div class="calc-input-panel">
|
||
<h2>永期对冲计算器</h2>
|
||
<p class="calc-hint">推点数模式:「永续币数/期权币数」按绝对仓位计算(填 2 与 4 → 永续 2 币 + 期权 4 币,不再归一成 1:2).单币权利金 = 现价 / 期权杠杆;权利金按全亏;只扣永续开平手续费(各 0.05%).「推仓位」仍固定永续 1 币、由波动反推期权数量.横盘最大亏损 = 权利金全亏 + 永续开平同价手续费.</p>
|
||
<form id="calc-po-form" class="calc-form">
|
||
<div class="calc-form-grid">
|
||
<label class="calc-field">
|
||
<span>测算模式</span>
|
||
<select id="calc-po-calc-mode">
|
||
<option value="size" selected>由波动推期权仓位</option>
|
||
<option value="points">由币数推波动点数</option>
|
||
</select>
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>币种</span>
|
||
<select id="calc-po-base">
|
||
<option value="ETH" selected>ETH</option>
|
||
<option value="BTC">BTC</option>
|
||
</select>
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>现价</span>
|
||
<input id="calc-po-spot" type="number" min="0" step="any" value="1800" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>交易资金 (U·参考)</span>
|
||
<input id="calc-po-capital" type="number" min="0.01" step="any" value="3000" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>目标盈利 (U)</span>
|
||
<input id="calc-po-target" type="number" min="0" step="any" value="15" required />
|
||
</label>
|
||
<label class="calc-field calc-po-size-only">
|
||
<span>波动模式</span>
|
||
<select id="calc-po-move-mode">
|
||
<option value="points" selected>波动点数</option>
|
||
<option value="pct">波动率 %</option>
|
||
</select>
|
||
</label>
|
||
<label class="calc-field calc-po-size-only">
|
||
<span id="calc-po-move-label">波动点数</span>
|
||
<input id="calc-po-move" type="number" min="0" step="any" value="50" />
|
||
</label>
|
||
<label class="calc-field calc-po-points-only hidden">
|
||
<span>永续币数</span>
|
||
<input id="calc-po-ratio-perp" type="number" min="0.01" step="any" value="1" />
|
||
</label>
|
||
<label class="calc-field calc-po-points-only hidden">
|
||
<span>期权币数</span>
|
||
<input id="calc-po-ratio-opt" type="number" min="0.01" step="any" value="2" />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>永续杠杆</span>
|
||
<input id="calc-po-perp-lev" type="number" min="0.01" step="any" value="10" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>期权杠杆</span>
|
||
<input id="calc-po-opt-lev" type="number" min="0.01" step="any" value="100" required />
|
||
</label>
|
||
<label class="calc-field">
|
||
<span>合约乘数 ct_mult</span>
|
||
<input id="calc-po-ct-mult" type="number" min="0.0001" step="any" value="0.01" required />
|
||
</label>
|
||
</div>
|
||
<div class="calc-actions">
|
||
<button type="submit" class="primary">计算</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<aside class="calc-result-panel" aria-label="永期对冲结果推算">
|
||
<h3 class="calc-result-title">结果推算</h3>
|
||
<p class="calc-result-placeholder">填写左侧参数后点击「计算」</p>
|
||
<div id="calc-po-result" class="calc-result hidden"></div>
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-compare" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">CMP</span> 策略对比</h1>
|
||
<p class="page-desc">同风险额下对比 · 单独合约 / 单独期权 / 期期对冲(7:3) · 看止盈谁强、谁更易踏空</p>
|
||
</div>
|
||
<div class="toolbar">
|
||
<button type="button" id="cmp-btn-run" class="primary">计算对比</button>
|
||
<span id="cmp-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<form id="cmp-form" class="cmp-form">
|
||
<section class="card cmp-common-card">
|
||
<h2>公共参数</h2>
|
||
<div class="cmp-form-grid">
|
||
<label class="cmp-field">
|
||
<span>标的</span>
|
||
<select id="cmp-base">
|
||
<option value="ETH" selected>ETH</option>
|
||
<option value="BTC">BTC</option>
|
||
</select>
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>方向</span>
|
||
<select id="cmp-direction">
|
||
<option value="long" selected>做多</option>
|
||
<option value="short">做空</option>
|
||
</select>
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>入场价</span>
|
||
<input id="cmp-entry" type="number" min="0" step="any" value="3500" required />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>统一风险 R (U)</span>
|
||
<input id="cmp-risk" type="number" min="0.01" step="any" value="10" required />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>统一止损价</span>
|
||
<input id="cmp-sl" type="number" min="0" step="any" value="3400" required />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>止盈价</span>
|
||
<input id="cmp-tp" type="number" min="0" step="any" value="3700" required />
|
||
</label>
|
||
</div>
|
||
</section>
|
||
<div class="cmp-input-cols">
|
||
<section class="card">
|
||
<h2>单独期权</h2>
|
||
<div class="cmp-form-grid">
|
||
<label class="cmp-field">
|
||
<span>类型</span>
|
||
<select id="cmp-opt-type">
|
||
<option value="C" selected>Call</option>
|
||
<option value="P">Put</option>
|
||
</select>
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>行权价</span>
|
||
<input id="cmp-opt-strike" type="number" min="0" step="any" value="3600" />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>卖一价(每币)</span>
|
||
<input id="cmp-opt-ask" type="number" min="0" step="any" value="50" />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>期权目标价(默认同止盈)</span>
|
||
<input id="cmp-tp-opt" type="number" min="0" step="any" placeholder="空=用止盈价" />
|
||
</label>
|
||
</div>
|
||
</section>
|
||
<section class="card">
|
||
<h2>期期对冲 · 主腿 70%</h2>
|
||
<div class="cmp-form-grid">
|
||
<label class="cmp-field">
|
||
<span>类型</span>
|
||
<select id="cmp-hedge-main-type">
|
||
<option value="C" selected>Call</option>
|
||
<option value="P">Put</option>
|
||
</select>
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>行权价</span>
|
||
<input id="cmp-hedge-main-strike" type="number" min="0" step="any" value="3600" />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>卖一价</span>
|
||
<input id="cmp-hedge-main-ask" type="number" min="0" step="any" value="50" />
|
||
</label>
|
||
</div>
|
||
<h2 class="cmp-subhead">次腿 30%</h2>
|
||
<div class="cmp-form-grid">
|
||
<label class="cmp-field">
|
||
<span>类型</span>
|
||
<select id="cmp-hedge-side-type">
|
||
<option value="C">Call</option>
|
||
<option value="P" selected>Put</option>
|
||
</select>
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>行权价</span>
|
||
<input id="cmp-hedge-side-strike" type="number" min="0" step="any" value="3400" />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>卖一价</span>
|
||
<input id="cmp-hedge-side-ask" type="number" min="0" step="any" value="30" />
|
||
</label>
|
||
<label class="cmp-field">
|
||
<span>对冲目标价(默认同止盈)</span>
|
||
<input id="cmp-tp-hedge" type="number" min="0" step="any" placeholder="空=用止盈价" />
|
||
</label>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</form>
|
||
<div id="cmp-summary" class="cmp-summary"></div>
|
||
<div id="cmp-table-wrap" class="cmp-table-wrap"></div>
|
||
<div id="cmp-recommend" class="cmp-recommend"></div>
|
||
</div>
|
||
|
||
<div id="page-strategy" class="page hidden">
|
||
<div class="page-head strategy-page-head">
|
||
<div>
|
||
<h1><span class="head-tag">STR</span> 策略说明</h1>
|
||
<p class="page-desc">执行手册v2(无对冲)· 行为准则 · 三所策略正文 · 执行清单</p>
|
||
</div>
|
||
<div class="strategy-page-actions no-print">
|
||
<button type="button" id="strategy-btn-download" class="ghost">下载 HTML</button>
|
||
<button type="button" id="strategy-btn-print-doc" class="ghost">打印正文</button>
|
||
<button type="button" id="strategy-btn-print-checklist" class="primary">打印清单</button>
|
||
</div>
|
||
</div>
|
||
<div class="strategy-toolbar no-print">
|
||
<div id="strategy-tabs" class="strategy-tabs" role="tablist" aria-label="交易所策略"></div>
|
||
<div id="strategy-view-tabs" class="strategy-view-tabs" role="tablist" aria-label="策略视图">
|
||
<button type="button" class="strategy-view-tab is-active" data-view="doc" role="tab" aria-selected="true">策略正文</button>
|
||
<button type="button" class="strategy-view-tab" data-view="checklist" role="tab" aria-selected="false">执行清单</button>
|
||
</div>
|
||
<span id="strategy-load-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<div id="strategy-print-root" class="strategy-print-root">
|
||
<section id="strategy-panel-doc" class="card strategy-doc-panel" data-strategy-view="doc">
|
||
<div class="strategy-blog-layout">
|
||
<div class="strategy-blog-main">
|
||
<div class="strategy-col-head">
|
||
<h3 class="strategy-col-title">策略正文</h3>
|
||
</div>
|
||
<div id="strategy-doc-body" class="strategy-doc-body prose"></div>
|
||
<p id="strategy-doc-source" class="strategy-doc-source"></p>
|
||
</div>
|
||
<aside class="strategy-blog-toc card strategy-toc-card no-print">
|
||
<h3 class="strategy-toc-title">目录</h3>
|
||
<nav id="strategy-doc-toc" class="strategy-toc-nav" aria-label="策略目录"></nav>
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
<section id="strategy-panel-checklist" class="card strategy-checklist-card hidden" data-strategy-view="checklist">
|
||
<div class="strategy-col-head">
|
||
<h3 id="strategy-checklist-title" class="strategy-col-title">开仓检查清单</h3>
|
||
<button type="button" id="strategy-btn-print-checklist-inline" class="ghost strategy-col-print">打印</button>
|
||
</div>
|
||
<div id="strategy-checklist-body" class="strategy-checklist-body"></div>
|
||
<ul id="strategy-checklist-footnotes" class="strategy-checklist-footnotes"></ul>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-amp-stats" class="page hidden">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1><span class="head-tag">AMP</span> 振幅统计</h1>
|
||
<p class="page-desc">OKX 指数 · 整点起点 → 固定 16:00 · 点数振幅档案(只读)</p>
|
||
</div>
|
||
</div>
|
||
<div class="amp-view-tabs" role="tablist" aria-label="振幅视图">
|
||
<button type="button" class="amp-view-tab is-active" data-view="stats" role="tab" aria-selected="true">统计</button>
|
||
<button type="button" class="amp-view-tab" data-view="history" role="tab" aria-selected="false">历史</button>
|
||
</div>
|
||
<section id="amp-panel-stats" class="card amp-panel">
|
||
<div class="amp-form">
|
||
<label class="amp-field">
|
||
<span>标的</span>
|
||
<select id="amp-symbol">
|
||
<option value="eth" selected>ETH</option>
|
||
<option value="btc">BTC</option>
|
||
</select>
|
||
</label>
|
||
<label class="amp-field">
|
||
<span>数据源</span>
|
||
<input type="text" value="OKX" disabled />
|
||
</label>
|
||
<label class="amp-field">
|
||
<span>起点整点</span>
|
||
<select id="amp-start-hour"></select>
|
||
</label>
|
||
<label class="amp-field">
|
||
<span>终点</span>
|
||
<input type="text" value="16:00" disabled />
|
||
</label>
|
||
<label class="amp-field">
|
||
<span>周期</span>
|
||
<select id="amp-period">
|
||
<option value="1m">1个月</option>
|
||
<option value="2m" selected>2个月</option>
|
||
<option value="3m">3个月</option>
|
||
<option value="6m">半年</option>
|
||
<option value="1y">1年</option>
|
||
<option value="custom">自定义</option>
|
||
</select>
|
||
</label>
|
||
<label class="amp-field hidden" id="amp-custom-wrap">
|
||
<span>自定义天数</span>
|
||
<input id="amp-custom-days" type="number" min="7" max="400" value="60" />
|
||
</label>
|
||
<label class="amp-field">
|
||
<span>周末</span>
|
||
<select id="amp-weekend-filter">
|
||
<option value="all" selected>全部</option>
|
||
<option value="exclude">排除周末</option>
|
||
<option value="only">仅周末</option>
|
||
</select>
|
||
</label>
|
||
<label class="amp-field">
|
||
<span>波动点数</span>
|
||
<input id="amp-move-points" type="number" min="0" step="any" placeholder="如 50" />
|
||
</label>
|
||
<div class="amp-actions">
|
||
<button type="button" id="amp-btn-compute" class="primary">计算</button>
|
||
<button type="button" id="amp-btn-save" class="ghost">保存到历史</button>
|
||
<button type="button" id="amp-btn-download" class="ghost">下载 CSV</button>
|
||
</div>
|
||
</div>
|
||
<p id="amp-status" class="toolbar-meta amp-status"></p>
|
||
<p class="amp-hint">口径:开→高=最高−开盘;开→低=开盘−最低;振幅=最高−最低.两日振幅=起点再往前推1天到当日16:00(例:25日16:00→27日16:00).填写波动点数后看振幅/两日振幅≥该点数的天数占比.周末按结算日标注/筛选.</p>
|
||
<h3 class="amp-block-title">汇总</h3>
|
||
<div id="amp-summary" class="amp-summary"></div>
|
||
<h3 class="amp-block-title">振幅占比</h3>
|
||
<div id="amp-move-stats" class="amp-summary amp-move-stats"></div>
|
||
<h3 class="amp-block-title">日表明细</h3>
|
||
<div class="amp-table-wrap">
|
||
<table class="amp-table">
|
||
<thead>
|
||
<tr>
|
||
<th>结算日</th><th>窗起点</th><th>开</th><th>高</th><th>低</th><th>收</th>
|
||
<th>开→高</th><th>开→低</th><th>振幅</th><th>两日振幅</th><th>涨跌</th><th>振幅达标</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="amp-table-body">
|
||
<tr><td colspan="12" class="amp-empty">点击「计算」加载</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div id="amp-pager" class="amp-pager"></div>
|
||
</section>
|
||
<section id="amp-panel-history" class="card amp-panel hidden">
|
||
<div id="amp-history-list" class="amp-history-list"></div>
|
||
</section>
|
||
</div>
|
||
|
||
<div id="page-help" class="page hidden">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1><span class="head-tag">HLP</span> 使用说明</h1>
|
||
<p class="page-desc">中控与实例 · 日常操作指南(不含部署说明)</p>
|
||
</div>
|
||
</div>
|
||
<div class="help-toolbar">
|
||
<span id="help-load-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<div class="help-layout">
|
||
<aside class="card help-toc-card">
|
||
<h3 class="help-toc-title">目录</h3>
|
||
<nav id="help-toc-nav" class="help-toc-nav" aria-label="使用说明目录"></nav>
|
||
</aside>
|
||
<section class="card help-doc-card">
|
||
<div id="help-doc-body" class="strategy-doc-body prose"></div>
|
||
<p id="help-doc-source" class="strategy-doc-source"></p>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-logs" class="page hidden">
|
||
<div class="page-head hub-logs-page-head">
|
||
<div>
|
||
<h1><span class="head-tag">LOG</span> 系统日志</h1>
|
||
<p class="page-desc">三所实例与中控 PM2 进程日志 · 实时输出与报错分离展示</p>
|
||
</div>
|
||
<div class="hub-logs-page-actions">
|
||
<button type="button" id="hub-logs-btn-refresh" class="ghost">立即刷新</button>
|
||
<button type="button" id="hub-logs-btn-pause" class="ghost">暂停刷新</button>
|
||
</div>
|
||
</div>
|
||
<div class="hub-logs-toolbar">
|
||
<div id="hub-logs-tabs" class="hub-logs-tabs" role="tablist" aria-label="日志来源"></div>
|
||
<span id="hub-logs-status" class="toolbar-meta"></span>
|
||
</div>
|
||
<div class="hub-logs-layout">
|
||
<section class="card hub-logs-card">
|
||
<div class="hub-logs-card-head">
|
||
<h3 class="hub-logs-card-title">实时日志</h3>
|
||
<span class="hub-logs-card-hint">stdout</span>
|
||
</div>
|
||
<pre id="hub-logs-out" class="hub-logs-pre">加载中…</pre>
|
||
</section>
|
||
<section class="card hub-logs-card">
|
||
<div class="hub-logs-card-head">
|
||
<h3 class="hub-logs-card-title">报错日志</h3>
|
||
<span class="hub-logs-card-hint">stderr</span>
|
||
</div>
|
||
<pre id="hub-logs-err" class="hub-logs-pre">加载中…</pre>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="page-settings" class="page hidden">
|
||
<div class="page-head">
|
||
<h1><span class="head-tag">CFG</span> 系统设置</h1>
|
||
<p class="page-desc">登录账号,导航显示,交易所地址与监控能力</p>
|
||
</div>
|
||
<details class="hint-box">
|
||
<summary>配置说明</summary>
|
||
<div class="hint-body">
|
||
交易所等配置保存后写入 <code>hub_settings.json</code>;登录账号密码写入 <code>manual_trading_hub/.env</code>.<br />
|
||
Flask / Agent 填本机地址即可;复盘链接可留空(由 Flask 地址自动生成).<br />
|
||
<code>HUB_DISABLED_IDS</code> 可强制关闭账户;<code>HUB_BRIDGE_TOKEN</code> 与实例一致,或实例 <code>APP_AUTH_DISABLED=true</code>.
|
||
</div>
|
||
</details>
|
||
<p id="settings-meta-line" class="settings-meta-line"></p>
|
||
|
||
<div class="hub-config-body card">
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-0" class="hub-tab-radio" checked>
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-1" class="hub-tab-radio">
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-2" class="hub-tab-radio">
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-3" class="hub-tab-radio">
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-4" class="hub-tab-radio">
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-5" class="hub-tab-radio">
|
||
<input type="radio" name="hub-settings-section" id="hub-sec-6" class="hub-tab-radio">
|
||
<div class="hub-config-tabs" role="tablist" aria-label="系统设置分类">
|
||
<label for="hub-sec-0" class="hub-tab-btn" role="tab">账户密码</label>
|
||
<label for="hub-sec-1" class="hub-tab-btn" role="tab">显示与导航</label>
|
||
<label for="hub-sec-2" class="hub-tab-btn" role="tab">宏观数据</label>
|
||
<label for="hub-sec-3" class="hub-tab-btn" role="tab">交易监管</label>
|
||
<label for="hub-sec-4" class="hub-tab-btn" role="tab">备份恢复</label>
|
||
<label for="hub-sec-5" class="hub-tab-btn" role="tab">交易所账户</label>
|
||
<label for="hub-sec-6" class="hub-tab-btn" role="tab">AI 配置</label>
|
||
</div>
|
||
<div class="hub-config-panels">
|
||
<section class="hub-panel hub-panel--0 hub-settings-tab-panel" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">账户密码</h3>
|
||
</div>
|
||
<p class="settings-display-hint">修改中控网页登录账号密码,写入 <code>manual_trading_hub/.env</code> 后需重启中控生效.当前用户:<code id="hub-pwd-current-user">—</code></p>
|
||
<div class="settings-grid hub-password-grid">
|
||
<div class="field" data-password-settings="1"><label>当前密码</label><input type="password" id="hub-pwd-old" autocomplete="current-password"></div>
|
||
<div class="field" data-password-settings="1"><label>新用户名(可选)</label><input type="text" id="hub-pwd-new-username" autocomplete="username"></div>
|
||
<div class="field" data-password-settings="1"><label>新密码</label><input type="password" id="hub-pwd-new" autocomplete="new-password"></div>
|
||
<div class="field" data-password-settings="1"><label>确认新密码</label><input type="password" id="hub-pwd-confirm" autocomplete="new-password"></div>
|
||
</div>
|
||
<div class="hub-settings-tab-actions">
|
||
<button type="button" class="primary" id="hub-pwd-save-btn">保存密码</button>
|
||
<span id="hub-pwd-save-status" class="settings-status-line"></span>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="hub-panel hub-panel--1 hub-settings-tab-panel settings-display-panel" data-settings-section="display" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">显示与导航</h3>
|
||
<button type="button" class="primary settings-section-save" data-settings-section="display">保存</button>
|
||
</div>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-account-pnl" checked />
|
||
监控区/数据看板显示资金账户、交易账户与浮动盈亏(关闭可隐藏期权盈亏与总浮盈)
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-funds" checked />
|
||
顶栏显示「资金概况」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-dashboard" checked />
|
||
顶栏显示「数据看板」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-plan" checked />
|
||
顶栏显示「开仓计划」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-archive" checked />
|
||
顶栏显示「内照明心」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-quotes" checked />
|
||
顶栏显示「语录」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-ai" checked />
|
||
顶栏显示「AI 教练」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-calculator" checked />
|
||
顶栏显示「计算器」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-compare" checked />
|
||
顶栏显示「策略对比」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-strategy" checked />
|
||
顶栏显示「策略说明」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-amp-stats" checked />
|
||
顶栏显示「振幅统计」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-help" checked />
|
||
顶栏显示「使用说明」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-nav-logs" checked />
|
||
顶栏显示「系统日志」
|
||
</label>
|
||
<p class="settings-display-subtitle">监控区卡片</p>
|
||
<p class="settings-display-hint">仅隐藏监控区界面卡片,不关闭账户与后台拉取.例:只做 OKX 期权与 Gate 时可关掉币安与 OKX 永续.</p>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-monitor-binance" checked />
|
||
监控区显示「币安」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-monitor-okx-perp" checked />
|
||
监控区显示「OKX 永续」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-monitor-okx-options" checked />
|
||
监控区显示「OKX 期权」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-monitor-gate" checked />
|
||
监控区显示「Gate」
|
||
</label>
|
||
<p class="settings-display-subtitle">策略说明页签</p>
|
||
<p class="settings-display-hint">关闭后该页签从策略说明中消失;顶栏「策略说明」入口仍由上方导航开关控制.</p>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-strategy-playbook-v2" checked />
|
||
策略说明显示「执行手册v2」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-strategy-playbook" checked />
|
||
策略说明显示「执行手册v1」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-strategy-behavior" checked />
|
||
策略说明显示「行为准则」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-strategy-binance" checked />
|
||
策略说明显示「币安」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-strategy-okx" checked />
|
||
策略说明显示「OKX」
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="pref-show-strategy-gate" checked />
|
||
策略说明显示「Gate」
|
||
</label>
|
||
<p class="settings-display-hint">保存至 hub_settings.json,换浏览器同样生效.关闭导航后对应页面将不可从顶栏进入,直接访问 URL 会跳回监控区.</p>
|
||
</section>
|
||
|
||
<section class="hub-panel hub-panel--2 hub-settings-tab-panel settings-macro-panel" data-settings-section="macro" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">宏观关键数据(风控前置)</h3>
|
||
<button type="button" class="ghost settings-section-save" data-settings-section="macro">保存表单</button>
|
||
</div>
|
||
<p class="settings-display-hint">
|
||
手动录入 FOMC / CPI / 就业数据发布时间(北京时间).监控区在发布前后各 1 小时提示风险:有仓注意仓位,无仓建议等待.仅提醒,不拦截下单.
|
||
</p>
|
||
<form id="macro-event-form" class="macro-event-form">
|
||
<label class="macro-event-field">
|
||
<span>数据名称</span>
|
||
<select id="macro-event-type" required>
|
||
<option value="fomc">FOMC 联邦基金利率</option>
|
||
<option value="cpi">美国 CPI 通胀</option>
|
||
<option value="employment">就业与劳工数据</option>
|
||
</select>
|
||
</label>
|
||
<label class="macro-event-field">
|
||
<span>发布时间(北京)</span>
|
||
<input id="macro-event-at" type="datetime-local" required />
|
||
</label>
|
||
<label class="macro-event-field macro-event-field-wide">
|
||
<span>备注(可选)</span>
|
||
<input id="macro-event-note" type="text" maxlength="500" placeholder="如:仅关注核心 CPI" autocomplete="off" />
|
||
</label>
|
||
<div class="macro-event-actions">
|
||
<button type="submit" id="macro-event-submit" class="primary">添加</button>
|
||
<button type="button" id="macro-event-cancel" class="ghost hidden">取消编辑</button>
|
||
</div>
|
||
</form>
|
||
<div id="macro-event-list" class="macro-event-list"></div>
|
||
</section>
|
||
|
||
<section class="hub-panel hub-panel--3 hub-settings-tab-panel settings-supervisor-panel" data-settings-section="supervisor" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">交易监管 · 企业微信</h3>
|
||
<button type="button" class="primary settings-section-save" data-settings-section="supervisor">保存</button>
|
||
</div>
|
||
<p class="settings-display-hint">
|
||
与三所实例策略通知独立;手动/中控开平仓与新开仓会推送至此 Webhook.链接可在下方单独修改.
|
||
</p>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="supervisor-enabled" checked />
|
||
启用交易监管推送
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="supervisor-wechat-program" checked />
|
||
程序止盈/止损也发微信(鼓励向)
|
||
</label>
|
||
<div class="settings-grid supervisor-settings-grid">
|
||
<div class="field field-wide">
|
||
<label>企业微信 Webhook</label>
|
||
<input id="supervisor-wechat-webhook" type="text" placeholder="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=..." autocomplete="off" />
|
||
</div>
|
||
<div class="field field-wide">
|
||
<label>微信消息跳转链接(可改)</label>
|
||
<input id="supervisor-wechat-link" type="text" placeholder="https://你的域名/ai?mode=supervisor" autocomplete="off" />
|
||
</div>
|
||
<div class="field">
|
||
<label>消息前缀</label>
|
||
<input id="supervisor-wechat-prefix" type="text" value="【交易监管】" autocomplete="off" />
|
||
</div>
|
||
<div class="field">
|
||
<label>日手动平警告阈值</label>
|
||
<input id="supervisor-daily-warn" type="number" min="1" step="1" value="2" />
|
||
</div>
|
||
<div class="field">
|
||
<label>最短两笔间隔(分钟)</label>
|
||
<input id="supervisor-interval-warn" type="number" min="1" step="1" value="15" />
|
||
</div>
|
||
<div class="field">
|
||
<label>30 分钟内笔数阈值</label>
|
||
<input id="supervisor-freq-30m" type="number" min="1" step="1" value="2" />
|
||
</div>
|
||
<div class="field">
|
||
<label>平仓后再开仓(分钟)</label>
|
||
<input id="supervisor-reopen-min" type="number" min="1" step="1" value="30" />
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="hub-panel hub-panel--4 hub-settings-tab-panel settings-backup-panel" data-settings-section="backup" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">备份与恢复</h3>
|
||
<button type="button" class="primary settings-section-save" data-settings-section="backup">保存</button>
|
||
</div>
|
||
<p class="settings-display-hint">
|
||
打包三所 <code>crypto.db</code>,中控 K 线/归档等 SQLite,<code>hub_settings.json</code> 与 <code>.env</code>(可选).
|
||
恢复前会自动做一次 pre-restore 快照,并尝试 <code>pm2 restart all</code>.
|
||
</p>
|
||
<div class="settings-grid backup-settings-grid">
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="backup-auto-enabled" checked />
|
||
每日自动备份(北京时间)
|
||
</label>
|
||
<div class="field">
|
||
<label>自动备份时刻(时,0–23)</label>
|
||
<input id="backup-auto-hour" type="number" min="0" max="23" step="1" value="0" />
|
||
</div>
|
||
<div class="field">
|
||
<label>保留天数</label>
|
||
<input id="backup-retention-days" type="number" min="1" max="365" step="1" value="30" />
|
||
</div>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="backup-include-env" checked />
|
||
包含 .env 配置文件
|
||
</label>
|
||
<label class="chk-label settings-display-chk">
|
||
<input type="checkbox" id="backup-include-images" />
|
||
包含三所 static/images 截图
|
||
</label>
|
||
<div class="field field-wide">
|
||
<label>备份目录(留空默认 /root/backups/crypto_monitor_portal)</label>
|
||
<input id="backup-root" type="text" placeholder="/root/backups/crypto_monitor_portal" autocomplete="off" />
|
||
</div>
|
||
</div>
|
||
<div class="backup-actions">
|
||
<button type="button" id="backup-run-now" class="primary">立即备份</button>
|
||
<span id="backup-status-line" class="backup-status-line"></span>
|
||
</div>
|
||
<div class="backup-restore-upload">
|
||
<label class="backup-upload-label">
|
||
<span>上传备份包恢复(.zip)</span>
|
||
<input id="backup-restore-file" type="file" accept=".zip,application/zip" />
|
||
</label>
|
||
<button type="button" id="backup-restore-upload-btn" class="danger">上传并恢复</button>
|
||
</div>
|
||
<div id="backup-list" class="backup-list"></div>
|
||
</section>
|
||
|
||
<section class="hub-panel hub-panel--5 hub-settings-tab-panel" data-settings-section="exchanges" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">交易所账户</h3>
|
||
<div class="hub-settings-tab-head-actions">
|
||
<button type="button" id="btn-settings-add" class="ghost">添加交易所</button>
|
||
<button type="button" class="primary settings-section-save" data-settings-section="exchanges">全部保存</button>
|
||
</div>
|
||
</div>
|
||
<div id="settings-list" class="settings-grid-wrap"></div>
|
||
</section>
|
||
|
||
<section class="hub-panel hub-panel--6 hub-settings-tab-panel settings-ai-env-panel" data-settings-section="ai-env" role="tabpanel">
|
||
<div class="hub-settings-tab-head">
|
||
<h3 class="hub-settings-tab-title">AI 复盘(统一配置)</h3>
|
||
<button type="button" class="primary" id="hub-ai-env-save-btn">保存并同步</button>
|
||
</div>
|
||
<p class="settings-display-hint">
|
||
保存后写入 <code>manual_trading_hub/.env</code>,并<strong>强制同步</strong>至三所实例 <code>.env</code>(OKX / Binance / Gate).
|
||
实例 env 配置页已不再提供 AI 项,请仅在此修改.密钥留空表示不修改原值.
|
||
</p>
|
||
<p id="hub-ai-sync-status" class="settings-meta-line"></p>
|
||
<div id="hub-ai-env-fields" class="settings-grid hub-ai-env-grid"></div>
|
||
<div class="hub-settings-tab-actions">
|
||
<span id="hub-ai-env-save-status" class="settings-status-line"></span>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 手机端主导航(≤720px);桌面/平板不显示 -->
|
||
<nav id="hub-mobile-tabbar" class="hub-mobile-tabbar" aria-label="手机主导航">
|
||
<a href="/monitor" class="hub-m-tab" data-hub-tab="monitor" id="m-tab-monitor">监控</a>
|
||
<a href="/market" class="hub-m-tab" data-hub-tab="market" id="m-tab-market">行情</a>
|
||
<a href="/calculator" class="hub-m-tab" data-hub-tab="calculator" id="m-tab-calculator">计算</a>
|
||
<a href="/ai" class="hub-m-tab" data-hub-tab="ai" id="m-tab-ai">AI</a>
|
||
<button type="button" class="hub-m-tab" data-hub-tab="more" id="m-tab-more" aria-haspopup="dialog" aria-expanded="false">更多</button>
|
||
</nav>
|
||
<div id="hub-mobile-more" class="hub-mobile-more" aria-hidden="true">
|
||
<div class="hub-mobile-more-backdrop" id="hub-mobile-more-backdrop"></div>
|
||
<div class="hub-mobile-more-sheet" role="dialog" aria-modal="true" aria-labelledby="hub-mobile-more-title">
|
||
<div class="hub-mobile-more-handle" aria-hidden="true"></div>
|
||
<h2 id="hub-mobile-more-title" class="hub-mobile-more-title">更多</h2>
|
||
<p class="hub-mobile-more-hint">次要功能 · 完整界面请用电脑/平板</p>
|
||
<nav class="hub-mobile-more-nav" aria-label="更多页面">
|
||
<a href="/funds" id="m-nav-funds">资金概况</a>
|
||
<a href="/plan" id="m-nav-plan">开仓计划</a>
|
||
<a href="/archive" id="m-nav-archive">内照明心</a>
|
||
<a href="/quotes" id="m-nav-quotes">语录</a>
|
||
<a href="/dashboard" id="m-nav-dashboard">数据看板</a>
|
||
<a href="/strategy" id="m-nav-strategy">策略说明</a>
|
||
<a href="/amp-stats" id="m-nav-amp-stats">振幅统计</a>
|
||
<a href="/compare" id="m-nav-compare">策略对比</a>
|
||
<a href="/help" id="m-nav-help">使用说明</a>
|
||
<a href="/logs" id="m-nav-logs">系统日志</a>
|
||
<a href="/settings" id="m-nav-settings">系统设置</a>
|
||
</nav>
|
||
<button type="button" class="ghost hub-mobile-more-close" id="hub-mobile-more-close">关闭</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="tpsl-modal" class="modal hidden" aria-hidden="true">
|
||
<div class="modal-backdrop" id="tpsl-modal-backdrop"></div>
|
||
<div class="modal-panel" role="dialog" aria-labelledby="tpsl-modal-title">
|
||
<h3 id="tpsl-modal-title">挂止盈 / 止损</h3>
|
||
<p id="tpsl-modal-meta" class="modal-meta"></p>
|
||
<div class="modal-field">
|
||
<label for="tpsl-sl">止损价</label>
|
||
<input id="tpsl-sl" type="number" step="any" autocomplete="off" />
|
||
</div>
|
||
<div class="modal-field">
|
||
<label for="tpsl-tp">止盈价</label>
|
||
<input id="tpsl-tp" type="number" step="any" autocomplete="off" />
|
||
</div>
|
||
<p class="modal-hint">先撤销该合约全部条件单,再挂新止盈与止损(三所统一).</p>
|
||
<div class="modal-actions">
|
||
<button type="button" id="tpsl-cancel" class="ghost">取消</button>
|
||
<button type="button" id="tpsl-submit" class="primary">确认挂单</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="plan-detail-modal" class="modal hidden" aria-hidden="true">
|
||
<div class="modal-backdrop" data-plan-modal-close></div>
|
||
<div class="modal-card plan-detail-card">
|
||
<div class="modal-head">
|
||
<h3 id="plan-detail-title">计划详情</h3>
|
||
<button type="button" class="ghost plan-modal-close" data-plan-modal-close aria-label="关闭">×</button>
|
||
</div>
|
||
<div id="plan-detail-body" class="plan-detail-body"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="plan-edit-modal" class="modal hidden" aria-hidden="true">
|
||
<div class="modal-backdrop" data-plan-edit-close></div>
|
||
<div class="modal-card plan-edit-card">
|
||
<div class="modal-head">
|
||
<h3>修改计划</h3>
|
||
<button type="button" class="ghost plan-modal-close" data-plan-edit-close aria-label="关闭">×</button>
|
||
</div>
|
||
<form id="plan-edit-form" class="plan-form plan-edit-form"></form>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="toast"></div>
|
||
<script src="https://unpkg.com/lightweight-charts@4.2.0/dist/lightweight-charts.standalone.production.js"></script>
|
||
<script src="/assets/chart_draw.js?v=20260720-option-day-1600"></script>
|
||
<script src="/assets/chart.js?v=20260720-option-day-1600"></script>
|
||
<script src="/assets/plan.js?v=20260720-autofill"></script>
|
||
<script src="/assets/calculator.js?v=20260729-po-abs-coins"></script>
|
||
<script src="/assets/compare.js?v=20260723-compare"></script>
|
||
<script src="/assets/trade_stats_calendar.js?v=3"></script>
|
||
<script src="/assets/archive.js?v=20260724-opt-archive"></script>
|
||
<script src="/assets/quotes.js?v=20260717-quotes-feed"></script>
|
||
<script src="/assets/funds.js?v=20260717-funds-scroll-fix"></script>
|
||
<script src="/assets/dashboard.js?v=20260723-hide-pnl"></script>
|
||
<script src="/assets/strategy.js?v=11"></script>
|
||
<script src="/assets/amp_stats.js?v=20260728-hedge"></script>
|
||
<script src="/assets/help.js?v=1"></script>
|
||
<script src="/assets/logs.js?v=1"></script>
|
||
<script src="/assets/ai_review_render.js?v=3"></script>
|
||
<script src="/assets/time_close_ui.js?v=3"></script>
|
||
<script src="/assets/options_expiry_countdown.js?v=1"></script>
|
||
<script src="/assets/options_position_cards.js?v=3"></script>
|
||
<script src="/assets/backup.js?v=1"></script>
|
||
<script src="/assets/app.js?v=20260805-intraday-close"></script>
|
||
</body>
|
||
</html>
|