From f522b4110eed04bc5ccdb52e826a22a198ca8b53 Mon Sep 17 00:00:00 2001 From: zlt Date: Wed, 26 Aug 2026 14:29:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=89=8D=E7=AB=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UI_COPY_AUDIT.md | 164 ++ UI_TRADER_V2_PLAN.md | 219 ++ app/web/static/index.html | 1783 ++++++++++------ app/web/static/index.html.bak-20260826 | 2670 ++++++++++++++++++++++++ docs/.write_test | 0 docs/ui_mockup_trader_v2.html | 747 +++++++ 6 files changed, 4912 insertions(+), 671 deletions(-) create mode 100644 UI_COPY_AUDIT.md create mode 100644 UI_TRADER_V2_PLAN.md create mode 100644 app/web/static/index.html.bak-20260826 create mode 100644 docs/.write_test create mode 100644 docs/ui_mockup_trader_v2.html diff --git a/UI_COPY_AUDIT.md b/UI_COPY_AUDIT.md new file mode 100644 index 0000000..570c2c9 --- /dev/null +++ b/UI_COPY_AUDIT.md @@ -0,0 +1,164 @@ +# 页面文案普查与白话对照表 + +配套样张:`docs/ui_mockup_trader_v2.html`(已按本表改过一遍文案)。 +本表列的是**正式代码里还没改**的地方,是下一步动 `index.html` 时的清单。 + +对象:`app/web/static/index.html` 的**交易员视图**全部可见文字。 +判据来自项目输出风格 `.claude/output-styles/readable-chinese.md` 的第三、四条: +不自造缩写和代号,术语第一次出现先用一句白话解释它是什么。 + +处理方式分三种: + +- **换掉**:这个词没有保留价值,直接换成白话。 +- **保留加解释**:它是项目里的正式概念,换了反而对不上文档,保留原词但挂一个「?」气泡。 +- **留待议**:运维视图专用,交易员看不到,这轮不动。 + +--- + +## 一、必须换掉的词(共 24 处) + +| 原文 | 出现在 | 换成 | 为什么 | +|---|---|---|---| +| 策略买开腿 / 买入腿 | 顶部宏观提示、宏观告警条 | 策略里的买入动作 | 「腿」是期权和对冲交易的说法,这里只是买和卖两个方向,用不上 | +| 平回 | 策略状态、恢复买入确认框 | 把当天买的那部分卖回去 | 「平回」要读者自己补全语境 | +| 规则闸 | 评审账本、提议说明 | 合规检查 | 页面别处已经把 `rule` 译成「合规检查」,两处不一致 | +| 研判闸 | 提示、降级说明 | 决策系统复核 | 「闸」是内部叫法,「复核」是它实际做的事 | +| 偏热闸 | 宏观告警条 | 大盘偏热时的买入限制 | 同上 | +| 闸门通过 | 自主档位气泡 | 各项检查通过 | 同上 | +| 置信 0.72 | 风控卖出、择时入场 | 把握 0.72(满分 1) | 「置信」是统计术语,且没写满分是多少 | +| 陈旧 | 告警条、信号行 | 已过时 | 「陈旧」像在说数据坏了,实际只是超过时效 | +| 摊薄成本 | 持仓表、账本 | 平均成本 | 就是各批买入价的加权平均 | +| 日QRS对称 | 信号面板、信号速览 | 日线形态 | QRS 是上游内部代号,页面上没有任何地方解释过 | +| mtf 资金异动 | 信号面板 | 盘中资金异动 | mtf 是决策系统的模块名,交易员不需要知道 | +| mtf 实况分 | 信号面板 | 盘中实况评分 | 同上 | +| 多源升级 | 信号面板、告警分类 | 多源同时报警 | 「升级」指的是级别自动提高,字面看不出来 | +| 横截面异动 z_dd | 资金异动说明 | 这只票今天的资金进出,比全市场同期偏离多少 | 统计术语加变量名,双重不可读 | +| 出手 / 分日出手 | 提议说明、组合操作 | 下单 / 分几天下单 | 「出手」在别处又指执行一轮,一词两义 | +| 收口 / 窗口收口 | 运维按钮、择时说明 | 窗口到点收尾 | 生造词 | +| 兜底 | 停牌提示、网格说明 | 用……代替 / 保底拦一道 | 每处含义不同,要分别改写 | +| 降级 | 决策系统不可用提示 | 退回到需要你确认 | 「降级」看不出退到哪 | +| 留痕 | 操作日志说明 | 留下记录 | 生造词 | +| 落表 / 落库 | 提议说明、运维 | 记进数据库 | 内部黑话 | +| 口径 | 多处注释与提示 | 算法 / 统计方式 | 行业黑话 | +| 传导档 | 候选表列名 | 受益层级 | 「传导」指主题传导,字面读不出 | +| 一手 | 网格与建仓说明 | 一手(100 股) | 加个括号就够 | +| 熔断 | 做T方案说明 | 亏到设定线就当天停手 | 「熔断」是交易所机制,这里是内部风控 | + +--- + +## 二、保留原词,加一句白话解释(共 8 个) + +这些是项目设计文档里的正式概念,换掉会让页面和文档对不上。做法是保留词, +在它第一次出现的地方挂一个「?」气泡。 + +| 词 | 气泡里的话 | +|---|---| +| 安全垫 | 现在的浮盈够不够厚,够不够扛一次回撤。厚垫=赚得多,可以考虑加仓;薄垫=刚开始赚;浮亏无垫=还在亏,不加仓。 | +| 自主档位 | 系统能自己做主到什么程度。全自动=各项检查通过就直接下单;只提议=先在「等我拍板」问过你;暂停=系统不自己动。 | +| 做T | 当天买、当天卖同一只票,赚中间的差价,收盘时持仓数量回到原样。 | +| 网格 | 在一个价格区间里,每跌一档买一份、每涨一档卖一份。 | +| 跟踪止盈 | 股价创新高就把止盈线往上抬,从高点回落到设定比例就卖。只卖不买。 | +| 择时 | 挑时间点下单。系统每天有允许下单的时间段,不是随到随下。 | +| 日线形态 | 决策系统的日线形态指标(内部代号 QRS),看多方和空方的力量是否对称。 | +| 大盘冷热 | 看整个市场是偏热还是偏冷,用来决定要不要整体加仓或减仓。偏热时系统会自己停掉新买入。 | + +--- + +## 三、批次名与动作名,改成能读懂的说法 + +这两组词在持仓展开、账本、消息栏里到处出现,值得统一。 + +| 代码里的名字 | 现在显示 | 改成 | +|---|---|---| +| BASE | 底仓 | 首批 | +| FILL | 回踩补足 | 回落补足 | +| ADD | 盈利加仓 | 盈利加仓(不改,本来就通顺) | +| DCA | 浮亏补仓 / 补仓 | 浮亏补仓(不改) | +| TRIM | 保垫减仓 | 保盈减仓 | +| T0 | 做T仓 | 做T仓(保留,挂气泡) | +| RECON | 对账调整 | 对账修正 | +| realized_pnl | 已实现 | 已落袋 | + +--- + +## 四、几句整段重写 + +原句和改后的句子放在一起,方便你判断改得对不对。 + +**顶部宏观提示** + +- 原:宏观偏热闸生效中 —— 系统自主买入与策略买开腿已暂停(你的命令不受影响) +- 改:大盘偏热,系统已经暂停两件事:它自己发起的买入,以及策略里的买入动作。卖出不受影响,你自己下的命令也不受影响。 + +**策略被风控停买** + +- 原:决策系统风控:资金异动(卖出/平回不受影响;确认无碍点右侧「恢复买入」) +- 改:决策系统发现资金异动,已经把这个策略的买入停掉。卖出照常,当天做T买的那部分也照常卖回去。确认没问题就点「恢复买入」。 + +**持仓下一步 · 浮亏中** + +- 原:浮亏中,跌到评估档会考虑补仓(深档需你确认) +- 改:还在亏。跌到设定的补仓线会考虑补仓;亏得更深的那一档要你点头才补。 + +**自动挂载执行状态** + +- 原:今日自动挂载已于 11:51 执行:查 0 只 · 挂载 0 · 接力 0 · 停买 0 · 被挡 0 · 跳过 1 +- 改:自动挂方案今天 11:51 跑过一轮:检查 0 只,新挂 0,换方案 0,停买 0,被挡 0,跳过 1。 + +**做T方案说明** + +- 原:回落近支撑→买、按目标价差高卖(正T);近压力或滞涨→卖存量、低买回(反T)。当日 ≤ 3 次,14:50 强制平回,单票 / 全局当日T亏熔断。 +- 改:两种做法。一是先买后卖:股价回落到支撑位附近买入,涨到目标价差再卖掉。二是先卖后买:股价冲到压力位或者涨不动了,先卖掉一部分,跌下来再买回来。每天最多做 3 次,14:50 之前一定把当天买卖的部分平掉。单只票或者全天做T亏到设定线,当天就不再做了。 + +**暂停买入** + +- 原:停止一切新增买入并撤销在途买入指令;卖出与止损不受影响。 +- 改:停掉所有新的买入,并撤掉已经挂出去、还没成交的买单。卖出和止损照常。 + +**一键清仓** + +- 原:全部持仓按最快节奏卖出、不做择时优化。紧急离场用,需二次确认。 +- 改:紧急离场用:全部持仓按最快速度卖出,不再挑时间点。要确认两次。 + +**告警时效** + +- 原:超过告警时间窗, 已置灰标注为陈旧 +- 改:超过设定的时效还没有新的同类信号盖过它,已置灰标为已过时。不隐藏,只是提醒你别再当新消息看。 + +--- + +## 五、留待议:运维视图 + +运维视图(页面右上角切到「运维」)里还有一批更深的词:水位、序号倒挂、 +出手一跳、榜尾噪音闸、名册指纹、白名单档位、核销均价、在途指令、终态、 +资金敞口。它们面向的是维护这套系统的人,不是交易员,而且大多和 +`QMT_WS_PROTOCOL.md` 里的名字一一对应,改了反而对不上文档。 + +建议这轮不动,等交易员视图定稿之后单独再看。你要是也想一起改,说一声。 + +--- + +## 六、怎么验证(在你的 Mac 上跑) + +改完之后,这条命令会把交易员视图里还剩下的可疑词列出来,行数应为 0: + +``` +cd /Users/baobao/Documents/work/project/tradingSystem && \ +sed -n '285,990p' app/web/static/index.html | \ +grep -c "买开腿\|买入腿\|平回\|规则闸\|研判闸\|偏热闸\|置信\|陈旧\|摊薄\|QRS\|mtf\|多源升级\|z_dd\|出手\|收口\|留痕\|落表\|落库\|口径\|传导档\|熔断" +``` + +预期读数:`0`。 + +我刚在你的机器上跑过这条命令,改之前的读数是 **19**。改完之后应该变成 0。 + +保留下来的词(安全垫、自主档位、做T、网格、跟踪止盈、择时、日线形态、大盘冷热) +不在这条命令的清单里,它们该留着,只是每个都得配一句解释。检查解释配齐了没有, +用这条: + +``` +cd /Users/baobao/Documents/work/project/tradingSystem && \ +sed -n '285,990p' app/web/static/index.html | grep -c 'class="help"' +``` + +预期读数:**不少于 8**。 diff --git a/UI_TRADER_V2_PLAN.md b/UI_TRADER_V2_PLAN.md new file mode 100644 index 0000000..265ce3e --- /dev/null +++ b/UI_TRADER_V2_PLAN.md @@ -0,0 +1,219 @@ +# 交易员页面改版方案 V2 + +状态:**已落地**(2026-08-26)。改的是 `app/web/static/index.html`,备份在同目录 `index.html.bak-20260826`。 + +--- + +## 一、这次改版要买什么 + +一句话:**让交易员在盘中不用滚动页面就能完成一轮判断和出手。** + +现在的页面把所有东西竖着排成一长条。信号在持仓下面,策略在信号下面,候选在最底下。 +盘中要做一次判断,眼睛得上下跑好几趟。点「完整信号中心」还会把页面滚到底, +再想回持仓表又得滚回来。这就是你说的「非常啰嗦」。 + +改完之后要达到三条: + +1. 一屏之内同时看得见信号、持仓、待办三样东西,不用滚动。 +2. 系统自己做了什么(比如刚刚建了一笔仓),在页面最上面一条消息栏里能第一时间看到。 +3. 持仓行里的操作按钮永远完整可见,不会被表格挤掉。 + +--- + +## 二、要做哪几件事 + +### 第 1 件:页面骨架改成三栏 + +中间主区的宽度**保持不变**,左右两栏落在现在空着的留白里。 + +- 左栏放**信号流**,宽 302 像素。 +- 中间放**主工作区**,最宽 1160 像素,和现在差不多。 +- 右栏放**待办与操作**,宽 334 像素。 + +左右两栏各有两个开关: + +- **折叠**:缩成一条 42 像素的窄条,只剩竖排的标题和一个未读数字。再点一下拉回来。 +- **拉出**:变成一块浮层盖在主区上面,宽 620 像素,后面压一层半透明遮罩。 + 点遮罩就收回去。窄屏时拉出就是纯弹窗。 + +屏幕不够宽的时候,不换行、不堆叠,改成三段式。临界值是按「主区要放得下持仓表」 +倒推出来的,不是拍脑袋定的:持仓表最小 940 像素,加面板内边距是 972 像素。 + +| 窗口宽度 | 左栏 | 右栏 | 由来 | +|---|---|---|---| +| 1660 像素以上 | 常驻 302 | 常驻 334 | 972 加 302 加 334 加栏间距 26 加页面留白 32 等于 1666 | +| 1380 到 1659 | 常驻 302 | 窄条 40 | 972 加 302 加 40 加 26 加 32 等于 1372 | +| 1380 以下 | 窄条 40 | 窄条 40 | 主区拿走剩下全部宽度 | + +再窄到主区放不下持仓表时,是表格在自己的框里横向滚动,操作列照样钉住, +页面本身不会出现横向滚动条。 + +这样「宽度不动」和「左右折叠拉出」两件事同时成立:主区永远是那个宽度, +两栏要么在留白里,要么浮在上面,都不会把主区挤变形。 + +### 第 2 件:顶部换成融合消息栏 + +现在顶部那条叫「最新告警」,只播上游告警。改成一条**消息栏**,收四类消息, +按时间倒序混在一条流里: + +| 类型 | 收什么 | 数据从哪来 | +|---|---|---| +| 告警 | 资金流强度、资金分布、日QRS对称、股价异动、多源升级 | 现有的 `/api/upstream-signals` | +| 下单 | 系统建仓、回踩补足、盈利加仓、浮亏补仓、保垫减仓、清仓,以及成交回报 | 现有的 `/api/instructions`,按状态变化取 | +| 提议 | 自主档位是「只提议」时新生成的待拍板条目 | 现有的 `/api/proposals` | +| 策略风控 | 自动挂载执行结果、网格换跟踪止盈、决策系统把某只票停买、命令被规则闸拦下 | 现有的 `/api/op-log` 与 `/api/ledger` | + +栏子本身一行,显示最新一条。左边五个小胶囊按类型筛(全部 / 告警 / 下单 / 提议 / 策略风控), +右边「展开全部」**就地向下拉出一块面板**,不跳转、不滚动。面板里每行右侧有个「去处理 ›」, +点了才跳到对应位置。 + +这条栏子接管现在「最新告警」的位置,原来那条删掉。 + +### 第 3 件:信号搬进左栏,取消滚动跳转 + +左栏顶上两个页签: + +- **速览**:一行一条。持仓票的信号置顶,标一个「持仓」小标签;下面才是非持仓的重要与警告级。 + 上方一排筛选胶囊:只看持仓 / 重要 / 警告 / 提示 / 普通。 +- **按来源**:就是现在的「完整信号中心」。七个来源做成可折叠的分组 + (mtf 资金异动、mtf 实况分、决策系统买卖、日QRS对称、资金分布、股价异动、事件信号), + 点标题就地展开。 + +页面底部原来那个「上游信号」大区**整块删掉**。「完整信号中心」这个按钮不再做滚动, +改成切到左栏的「按来源」页签。 + +### 第 4 件:右栏收待办与操作 + +从中间搬四块过去,每块可以单独收起: + +- 等我拍板 +- 我的策略(含自动挂载状态与预演) +- 系统在盯的候选 +- 组合操作 +- 设置 + +搬走之后,中间主区只剩四块:今日一览、需要注意、我的持仓、今日在办。 + +### 第 5 件:文案里的行话全换成白话 + +页面上「策略买入腿已暂停」这类词,交易员读不出是什么意思。已经做了一次全面普查, +24 个词要换掉,8 个项目术语保留但每个配一句白话解释,批次名和动作名统一改写。 +清单在 `UI_COPY_AUDIT.md`,样张已经按那份清单改过一遍。 + +### 第 6 件:修持仓表的操作列 + +问题是操作列宽度不够,三个按钮被切掉。改法有三处: + +1. 操作列用 `position: sticky` 钉在表格右边,左侧加一道浅投影做分隔。表格再窄, + 这一列也在。 +2. 「状态」和「下一步」两列合成一列,省出 84 像素给操作列。 +3. 常用的「减仓」「清仓」留在外面,其余五个(设止损价、设目标价、冻结、 + 加入黑名单、挂交易方案)收进一个「⋯」下拉。 + +--- + +## 三、改哪些文件 + +只动一个文件:`app/web/static/index.html`。 + +后端接口一个都不用改——四类消息用的都是页面已经在拉的接口, +只是在前端多做一次合并和排序。 + +改动分四段: + +1. 样式段(第 11 到 196 行):加三栏骨架、消息栏、左右栏、粘性操作列的样式。 +2. 交易员视图段(第 285 到 990 行):重排结构,删掉底部「上游信号」大区。 +3. Vue 逻辑段(第 1658 行往后):新增一个把四类消息合并排序的计算属性, + 新增左右栏折叠与拉出的状态,删掉 `openSigCenter` 里的滚动。 +4. 折叠状态记在浏览器里(`sessionStorage`),刷新页面不丢。 + +--- + +## 四、怎么验证(在你的 Mac 上跑) + +### 1. 先确认文件对不对 + +``` +cd /Users/baobao/Documents/work/project/tradingSystem +wc -l app/web/static/index.html +ls -la app/web/static/index.html.bak-20260826 +``` + +预期:新文件 **3111 行**;备份文件在,大小 184617 字节。 + +### 2. 交易员视图里不该再有行话 + +``` +cd /Users/baobao/Documents/work/project/tradingSystem && python3 - <<'EOF' +import io +s = io.open('app/web/static/index.html', encoding='utf-8').read() +a = s.index(' +
- -
- 最新告警 - - · 读取失败:{{ usrc('alerts').error }} - · 暂无告警 -
- 完整信号中心 ▾ + +
+ 消息 +
+ {{ k.label }}{{ msgCounts[k.key] }} +
+ +
+ + 读取失败:{{ usrc('alerts').error }} + 今天还没有消息 +
+
- - - -
-
账户总资产
{{ money(ov.total_asset) }}
-
可用资金 (估算)
-
{{ money(ov.cash_source==='ws' ? ov.cash_avail : ov.cash_est) }}
-
持仓市值
{{ money(ov.portfolio_mv) }}
-
仓位
{{ pct(ov.portfolio_pct) }} / {{ pct(ov.portfolio_cap) }}
-
浮动盈亏
-
{{ money(ov.float_pnl) }} {{ ov.float_pnl_pct==null?'':pct(ov.float_pnl_pct) }}
-
持仓数
{{ ov.names_count }} / {{ ov.max_names }}
-
等我拍板
-
{{ proposals.length }} 条
-
自主档位
{{ tx('autonomy', ov.autonomy) }}
-
-
颜色约定?
- -
-

需要注意

-
· {{ a }}
-
- - -
-

等我拍板 · {{ proposals.length }} 条

-
暂无需要你确认的提议。
-
-
-
{{ nm(p.ts_code) }} {{ p.ts_code }} - {{ tx('action', p.action) }}
-
{{ p.expire_at }} 前有效
+
+
+ {{ k.label }}{{ msgCounts[k.key] }} +
+
这一类今天还没有消息。
+
+ {{ m.time || '—' }} + {{ kindLabel(m.kind) }} +
+ {{ nm(m.ts_code) }} + {{ m.ts_code }} + {{ m.dir }} + {{ m.cat }} + {{ lvLabel(m.level) }} +
{{ m.why }}
-
决策系统:{{ p.judge_reason }}
-
{{ propWhy(p) }}
-
- 约 {{ p.qty }} 股 · 参考价 {{ (p.hard_numbers||{}).price==null ? '—' : (p.hard_numbers||{}).price }} - · 约需 {{ money(((p.hard_numbers||{}).price||0)*(p.qty||0)) }} -
- 采纳 - 驳回 -
-
采纳=记一笔待执行指令,由择时在窗口内择机下单;驳回=今日不再提这只。
+ {{ m.goLabel }} ›
- -
-

我的持仓 · {{ heldPositions.length }} 只

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-

信号速览 · {{ sigBrief.length }} 条,持仓相关 {{ sigBriefHeldCount }} 条 - 完整信号中心 ▾

-
持仓票今日暂无信号,全场暂无重要或警告级信号。
-
-
- {{ g.time || '—' }} - 持仓 - {{ nm(g.ts_code) }}{{ g.ts_code }} - {{ g.cat }} - {{ g.direction || '' }} - {{ lvLabel(g.level) }} - 陈旧 -
+ + +
+
我的策略 + · {{ strategies.length }} 个{{ sectClosed.strat?'▸':'▾' }}
+
+
+ {{ stratEnabled ? '策略功能已开启' : '策略功能没开(参数 PMS_STRATEGY_ENABLED)' }} + + +
+ + +
+ 显示已撤下和已完成 + 试算一遍 + ? +
+ +
+
试算结果(没有执行)· 检查 {{ autoScanRes.checked }} 只持仓
+
+ {{ x.stage }} + {{ nm(x.ts_code) }} + {{ x.why }} + + + + +
+
+ 想挂上 + {{ nm(x.ts_code) }} {{ tx('stype', x.type) }} —— {{ x.why }}
+
+ 想换方案 + {{ nm(x.ts_code) }} 网格换成跟踪止盈 —— {{ x.why }}
+
+ 想停买入 + {{ nm(x.ts_code) }} —— {{ x.why }}
+
+ 想恢复买入 + {{ nm(x.ts_code) }}
+
+ 被挡下 + {{ nm(x.ts_code) }} —— {{ x.why }}
+
+ · {{ x.why }}
+
✗ {{ e }}
+
+ {{ autoScanRes.unknown_states.length }} 只票的形态判断超出约定的词表(已按没有标志处理), + 例如:{{ autoScanRes.unknown_states.slice(0,3).map(u=>u.state).join('、') }}。需要和决策系统核对。
+
+ 这一轮不会做任何事:没有票符合触发条件。
+
+ +
还没有挂过交易方案。在「我的持仓」行里点「⋯ → 挂交易方案」创建。
+
+
{{ nm(s.ts_code) }} + {{ tx('stype', s.type) }} + {{ s.autonomy==='auto'?'自动执行':'待我拍板' }} + + {{ tx('stratStatus', s.status) }}
+
{{ stratStateText(s) }}
+
+ 这只票现在只卖不买。决策系统提示{{ s.buy_paused.reason || '资金异动' }},已经停掉买入; + 卖出、以及把当天做T买的那部分卖回去,都不受影响。
+
+ 暂停 + 恢复 + 恢复买入 + 撤下 + 移除 + 恢复显示 +
+
+
没有正在跑的策略。勾上「显示已撤下和已完成」看全部。
+
+
+ + +
+
系统在盯的候选 + · {{ watchCandidates.length }} 只{{ sectClosed.pool?'▸':'▾' }}
+
+
今天选股计划里、系统还盯着、可能会建仓的票。计划日 {{ planStatus.date || '—' }}。 + 已经下单的、等你拍板的、被否决的,分别在「今日在办」和「等我拍板」。
+
+ {{ n }}
+
上游的选股计划现在读不到。
+
今天没有还在盯着待建仓的候选,都已经处理过了。
+
+ 第{{ r.rank }} + {{ r.name || nm(r.ts_code) }} + {{ r.theme }} + + {{ dispOf(r.ts_code).label }} +
+
+ 受益层级? + 和完整明细,在「上游计划」按钮里。
+
+
+ + +
+
整个组合的操作{{ sectClosed.ops?'▸':'▾' }}
+
+
数值都按当前实际持仓算好并预览影响金额,不用盲填;危险动作要确认两次。
+
+ {{ ov.buy_halt?'恢复买入':'暂停买入' }} + 停掉所有新的买入,并撤掉已经挂出去、还没成交的买单。卖出和止损照常。现在:{{ ov.buy_halt?'已暂停买入':'买入正常' }}。 +
+
+ {{ ov.exec_halt?'结束休假':'休假模式' }} + 系统的自动动作全部停下,只保留每天的对账和日报。现在:{{ ov.exec_halt?'休假中':'正常运行' }}。 +
+
+ 调整仓位 + + 现在仓位 {{ pct(ov.portfolio_pct) }}(市值 {{ money(ov.portfolio_mv) }} / 总规模 {{ money(ov.scale) }}),可用资金 {{ money(ov.cash_source==='ws'?ov.cash_avail:ov.cash_est) }}。 +
目标 + {{ posMovePreview }} +
+
+
+ 清仓某行业 + + 把某个行业的持仓全部卖掉,从下拉里选,不用手打。 +
+ + + {{ ov.sector_ready===false?'行业数据还没就绪':'现在没有带行业的持仓' }} +
+
+
+ 一键清仓 + 紧急离场用:全部持仓({{ heldPositions.length }} 只,市值 {{ money(ov.portfolio_mv) }})按最快速度卖出,不再挑时间点。要确认两次。 +
+
+
+ + +
+
设置{{ sectClosed.set?'▸':'▾' }}
+
+
每组先给一句「现在是什么状态」,再让你改其中的项。改完点保存就生效。
+
+
资金与仓位纪律:{{ sumPosition }}
+
+ 总操作规模 + 总仓上限 + 单股上限 + 最多持仓 + 预留现金 +
+
+
+
浮亏之后要不要补仓:{{ sumDca }}
+
+ 要不要补 + +
+
+
+
自主档位:{{ sumAutonomy }}
+
+ + + + + +
+
+
+ 保存修改({{ dirtyCount }}) + 放弃 +
+
+ 不想补仓就把「最多补到首批的」设成 0;调低总仓上限可能会让系统提议降仓。
+
+
+ +
+
- -
-

我的策略 · {{ strategies.length }} 个 - - {{ stratEnabled ? '策略层已启用' : '策略层总开关未开(PMS_STRATEGY_ENABLED)' }} - 显示已撤下/已完成 - - {{ autoInfo.enabled ? '自动挂载已开' : '自动挂载总开关未开' }} - - 预演 - ? -

- -
- - -
- - -
-
- 预演结果(未执行)· 查 {{ autoScanRes.checked }} 只持仓 -
- -
- {{ x.stage }} - {{ nm(x.ts_code) }} - {{ x.why }} - - - - -
- -
- 想挂 - {{ nm(x.ts_code) }} {{ tx('stype', x.type) }} —— {{ x.why }}
-
- 想换挂 - {{ nm(x.ts_code) }} 网格换跟踪止盈 —— {{ x.why }}
-
- 想停买入 - {{ nm(x.ts_code) }} —— {{ x.why }}
-
- 想恢复买入 - {{ nm(x.ts_code) }}
-
- 被挡 - {{ nm(x.ts_code) }} —— {{ x.why }}
-
- · {{ x.why }}
-
✗ {{ e }}
-
- {{ autoScanRes.unknown_states.length }} 只票的吸筹定性超出约定词表(已按无标志处理), - 样本:{{ autoScanRes.unknown_states.slice(0,3).map(u=>u.state).join('、') }}。需与决策系统核对 -
-
- 本轮无动作:无符合触发条件的信号 -
-
-
尚未挂载交易方案。可在「我的持仓」行内「更多 ▾ → 挂交易方案」创建。
- - - - - - - - -

操作日志 · {{ opLog.length }} 条 {{ showOpLog?'▲ 收起':'▼ 展开' }}

- -
- - -
-

今日在办

-
今天下出去的买卖单,按状态分三档:还在跑的、已成交的、已经结束的。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
今天考察过、但没建仓的票,连原因一起摆出来。
- - - - -
-
-

今天发生了什么 · {{ ledger.length }} 条 {{ showLedger?'▲ 收起':'▼ 展开' }}

- -
- - -
-

上游信号 · 只读参考,不进下单逻辑 {{ showUpstream?'▲ 收起':'▼ 展开' }}

- -
- - - +
- 现价 {{ stratDlg.price }} · 持仓 {{ stratDlg.total_qty }} 股(T+1 可卖 {{ stratDlg.avail_qty }})· 浮盈 {{ pct(stratDlg.cushion_pct) }}。参数按这些现值给了默认,不用盲填。 + 现价 {{ stratDlg.price }} · 持仓 {{ stratDlg.total_qty }} 股(明天才能卖的不算,现在能卖 {{ stratDlg.avail_qty }})· 浮盈 {{ pct(stratDlg.cushion_pct) }}。 + 下面的参数已经按这些现值给了默认值,不用盲填。
@@ -797,12 +1154,15 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: @@ -816,45 +1176,45 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: 默认取现价 - + - 0.02=每 2% 一档 + 0.02 就是每 2% 一档 - + - + - 须落在单股上限内(合规检查兜底) + 要落在单只股票的持仓上限之内,合规检查会再拦一道 - 跌破未买档→买一份,涨破已买档→卖一份(从 T+1 可卖存量);跌破下界=继续持有、不再买。 + 跌破一个还没买过的档就买一份,涨破一个已经买过的档就卖一份(从现在能卖的存量里卖)。跌破下界就只拿着,不再买。 - + 自动执行 待我拍板 @@ -863,116 +1223,19 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: + title="挂不上,下面这些限制不允许被打破:" style="margin-top:6px">
· {{ r }}
- -
-

组合操作

-
对整个组合的手动动作。数值都基于当前实际持仓算出、并预览影响金额,不用盲填;危险动作要二次确认。
-
- {{ ov.buy_halt?'恢复买入':'暂停买入' }} - 停止一切新增买入并撤销在途买入指令;卖出与止损不受影响。当前:{{ ov.buy_halt?'已暂停买入':'买入正常' }}。 -
-
- {{ ov.exec_halt?'结束休假':'休假模式' }} - 所有自动动作暂停,只保留对账与日报。当前:{{ ov.exec_halt?'休假中':'正常运行' }}。 -
-
- 调整仓位 - - 当前总仓位 {{ pct(ov.portfolio_pct) }}(市值 {{ money(ov.portfolio_mv) }} / 规模 {{ money(ov.scale) }}),可用资金 {{ money(ov.cash_source==='ws'?ov.cash_avail:ov.cash_est) }}。 - 目标 - {{ posMovePreview }} - -
-
- 清仓行业 - - 卖光某个行业的全部持仓,从下面选(不用手打): - - - - —— {{ ov.sector_ready===false?'行业数据未就绪':'当前无带行业的持仓' }} - -
-
- 一键清仓(紧急) - 全部持仓({{ heldPositions.length }} 只,市值 {{ money(ov.portfolio_mv) }})按最快节奏卖出、不做择时优化。紧急离场用,需二次确认。 -
-
-
-

设置 {{ showSettings?'▲ 收起':'▼ 展开' }}

- -
- - -
-

系统在盯的候选 · 今日选股计划 · 计划日 {{ planStatus.date || '—' }}

-
系统还在盯、可能建仓的票。已下单 / 待你确认 / 被否决的,见上方「今日在办」与「等我拍板」。
-
{{ n }}
-
上游计划暂不可用。
- - - - - - - -
-
-
+
总规模
{{ money(ov.scale) }}
组合市值
{{ money(ov.portfolio_mv) }}
@@ -1077,7 +1340,7 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: - +