- Home
- Plugins
- Tools & Capabilities
- dsh-etf-monitor
dsh-etf-monitor
lacrimosa-da/dsh-etf-monitor
Side panel for DeepSeek Harness that tracks a 15-ETF national-team basket intraday from Eastmoney and Tencent quotes (pure Node, zero dependencies): capital flow, minute-level support pulses and a composite read.
Install
dsh plugin --profile web add github:lacrimosa-da/dsh-etf-monitorREADME
dsh-etf-monitor
DeepSeek Harness 侧边栏面板:盯住国家队最可能出手的 15 只宽基 / 行业 ETF, 盘中每 60 秒重算量比、护盘脉冲、溢价率与超额。 纯 Node 直取公开行情,零第三方依赖、不读本地文件、不需要任何 API Key。
它回答一个问题
盘中想知道「国家队/汇金是不是在买宽基 ETF」,看指数没用——指数会被权重股掩盖。 真正有信息量的是 ETF 自己的成交数据:成交额有没有异常放大、是不是脉冲式护盘、 有没有一级申购资金顶着溢价买。
面板把这三件事做成一屏读数,交易时段内自动重算。
| 你原本要问 | 面板给的读数 |
|---|---|
| 今天量放大了吗? | 510300 量比推定 + 近 8 日成交额柱 |
| 是护盘还是换手? | 护盘脉冲次数与明细(单分钟 ≥ 当日均量 4 倍) |
| 资金是在承接还是在出? | 溢价率(对 IOPV)+ 主力净额 |
| 宽基和行业谁在动? | 15 只篮子 + 行业/概念涨跌前列 + ETF 主力净流入流出 TOP |
装
| 入口 | 怎么做 | 说明 |
|---|---|---|
| 插件市场 | DSH 设置里的「插件市场」搜 dsh-etf-monitor | 收录 PR 合并后可用,见下方「上架状态」 |
| GitHub 源 | 让我调 plugin_manager → install_bundle,target 填仓库地址 | 按 commit 锁定,不受 npm 影响 |
| 本地 tgz | npm pack 出 dsh-etf-monitor-0.2.0.tgz,把路径交给 install_bundle | 快照安装,升级要重装 |
| 源码目录 | target 填 link:C:/path/to/plugins/dsh-etf-monitor | 改代码即时生效,开发时用 |
宿主半侧热装配,装完通常不用重启;客户端 bundle 是页面加载时取的,装完/升级完要刷新一次页面。
上架状态
- 已开源:https://github.com/lacrimosa-da/dsh-etf-monitor(MIT,
dsh-plugintopic) - 已向
awesome-dsh-plugin提交收录 PR #12451,合并后 CI 重建目录,市场即可搜到 - 未发布 npm:市场安装走 GitHub 源,不发 npm 也能装;发 npm 只影响市场里的下载量统计
截图
整页看板(2026-11-05 收盘后实拍,点开放大):

510300 分时结构 —— 柱=半小时成交额,线=期末价格,虚线=昨收。柱高逐段衰减 + 价格走平或下移 = 承接力递减:

近 8 日成交额 + 护盘脉冲 + 涨跌家数 + 指数 / 海外市场 —— 深色柱是今日,成交额放大到均量 2 倍以上通常对应集中申购:

侧边栏入口(图标名「国家队ETF」,排在「灵枢/上下文」与「梦境」之间):
![]()
面板长什么样
左侧图标栏(sidebar.panellist,order 30,排在「灵枢/上下文」与「梦境」之间),
图标名 国家队ETF。点开是 main 槽位的整页看板,四个区块:
- 四项判读 — 510300 量比推定 / 护盘脉冲次数 / 溢价率 / 涨跌家数
- 15 只 ETF 篮子 — 现价、涨跌幅、成交额、量比推定、主力净额、超额、溢价率
- 510300 分时结构 — 半小时一桶,成交额柱 + 价位点,一眼看出是否脉冲式护盘
- 市场宽度 — 主要指数 / 海外市场 / 行业与概念涨跌前列 / 全市场 ETF 主力净流入流出 TOP
读数怎么读
| 读数 | 定义 | 怎么判断 |
|---|---|---|
| 量比推定 | 当前成交额 ÷ 按已过交易分钟线性外推的全天成交额 | > 1.5× 才算真放量;< 0.7× 是缩量 |
| 护盘脉冲 | 单分钟成交额 ≥ 当日已过均量的 4 倍 | 连续出现 = 主动买;只出现一两次且价格被吞 = 试盘 |
| 溢价率 | ETF 市价相对 IOPV | 持续正溢价 = 有申购资金在顶;负溢价 = 折价没人接 |
| 超额 | ETF 涨跌幅 − 跟踪指数涨跌幅 | 只看同一只的时间序列,不要跨标的横比 |
最有用的一条组合判据:成交额放大 且 溢价率转正 且 分时桶价格重心上移 ——三条同时成立才是真护盘;只有第一条放大,往往只是「换手不是承接」。
真实数据样例
2026-11-05 收盘的篮子(插件实际返回,未做任何修饰):
| 代码 | 名称 | 现价 | 涨跌 | 成交额 | 超额 | 溢价 | 分组 |
|---|---|---|---|---|---|---|---|
| 510300 | 沪深300ETF | 4.195 | +0.48% | 75.23 亿 | +0.19% | +0.04% | 宽基·沪深300 |
| 510330 | 300ETF华夏 | 4.364 | +0.23% | 11.23 亿 | -0.06% | -0.16% | 宽基·沪深300 |
| 159919 | 300ETF嘉实 | 4.373 | +0.21% | 14.60 亿 | -0.08% | -0.04% | 宽基·沪深300 |
| 510310 | 300ETF易方达 | 4.072 | +0.22% | 14.18 亿 | -0.07% | +0.02% | 宽基·沪深300 |
| 510050 | 上证50ETF | 2.930 | +0.24% | 19.91 亿 | +0.15% | -0.08% | 宽基·上证50 |
| 510500 | 中证500ETF | 6.784 | +1.85% | 55.48 亿 | +0.05% | +0.16% | 宽基·中证500 |
| 512100 | 中证1000ETF | 2.711 | +2.22% | 62.26 亿 | +0.10% | +0.06% | 宽基·中证1000 |
| 159845 | 1000ETF | 2.775 | +1.98% | 36.24 亿 | -0.14% | +0.01% | 宽基·中证1000 |
| 588000 | 科创50ETF | 1.358 | +1.34% | 189.11 亿 | -0.34% | -0.34% | 宽基·科创50 |
| 588080 | 科创板50 | 1.317 | +1.15% | 46.60 亿 | -0.53% | -0.09% | 宽基·科创50 |
| 159915 | 创业板ETF | 2.584 | +0.90% | 163.95 亿 | +0.03% | +0.05% | 宽基·创业板 |
| 512880 | 证券ETF | 1.022 | +0.00% | 12.42 亿 | +0.19% | +0.00% | 行业·券商 |
| 512480 | 半导体ETF | 0.799 | +3.50% | 19.56 亿 | -0.17% | -0.08% | 行业·半导体 |
| 588200 | 科创芯片ETF | 0.863 | +0.82% | 44.70 亿 | -0.83% | -0.15% | 行业·半导体 |
| 512010 | 医药ETF | 0.398 | +2.31% | 5.35 亿 | +0.15% | -0.03% | 行业·医药 |
同日 510300 的分时桶(半小时一桶)与护盘脉冲:
09:30 16.32 亿 @ 4.184 脉冲 09:31 3.85 亿 @ 4.155 (12.2× 均量)
10:00 12.82 亿 @ 4.208 近 8 日成交额:58.5 / 45.6 / 89.1 / 86.1 / 120.7 / 190.1 / 125.6 / 75.2 亿
10:30 9.54 亿 @ 4.196
安全与隐私
- 零第三方依赖:只用 Node ≥ 18.17 内置的
fetch/TextDecoder/AbortSignal.timeout - 不读本地任何文件、不写任何文件
- 不需要 API Key、不需要账号
- 只对
push2.eastmoney.com、qt.gtimg.cn等公开行情接口发 GET,不携带任何个人数据 - 进程内 45 秒缓存,避免重复打上游
兼容性
| 项 | 要求 |
|---|---|
| DSH | 支持 dsh.bundle.patch 的版本(本包同时声明 dsh.bundle 与 dsh.client) |
| Node | ≥ 18.17(宿主自带 Node 即可) |
| 平台 | web 客户端(dsh.client.platform: web) |
接口
| 路径 | 说明 |
|---|---|
GET /dsh-etf-monitor/api | 取快照,45 秒进程内缓存 |
GET /dsh-etf-monitor/api?fresh=1 | 强制重算 |
GET /dsh-etf-monitor/health | 引擎、版本、最近一轮耗时、最近一次失败原因 |
GET /dsh-etf-monitor/debug | 逐接口探活(排障用) |
也可以单独 import 数据层,不需要 DSH 运行时:
import { takeSnapshot, summarize } from 'dsh-etf-monitor/snapshot'
const snap = await takeSnapshot()
console.log(summarize(snap)) // 状态=交易中 已过分钟=190 510300=4.18 (+2.2%) 成交额=113.0亿
结构
package.json dsh.bundle.patch + dsh.client 两处声明
cordis.patch.yml 往配置树插入 id=dsh-etf-monitor 一行
lib/index.js 宿主半侧:注册 /dsh-etf-monitor 前缀路由 + 45 秒缓存 + 串行化
lib/snapshot.js 纯 Node 数据层:直取东财/腾讯,产出与前端约定的 snap 对象
client.js 浏览器半侧:main + sidebar.panellist 两个槽位
test/test_client.cjs 不开浏览器也能把 React 树跑一遍的冒烟测试
口径局限(页脚也写了)
- 量比是推定值:用「已过交易分钟线性外推」估全天,开盘初期波动大,只看方向不看绝对值。
- 超额含昨日溢价残留:
ETF 涨跌幅 − 跟踪指数涨跌幅是代理指标,不可跨标的横比,只看同一只的时间序列。 - 溢价率取腾讯 IOPV 字段(
qt.gtimg.cn第 78 项)。东财的f71是均价不是 IOPV,早期版本在这里算错过。
数据源踩过的坑(改代码前先看)
- 东财
ulist.np并发十几条会整批返回空(HTTP 200 但data.diff缺失)。现按 20 个一批切块,缺失的再逐个单发补齐,最多补两轮。 - 涨停池的总数在
data.tc,不是data.total;不带dpt=wz.ztzt会返回rc:102。 - 日线接口必须带
end=20500101,否则rc:102。 - 涨跌家数只能走
ulist.np的f104/f105/f106;stock/get对指数返回"-"。 - ETF 跟踪指数的 secid 必须和 ETF 自己的 secid 一起请求,否则超额列全空。
- 腾讯接口返回 GBK,用
new TextDecoder('gbk')解,不要引 iconv。
改完怎么生效
- 改
client.js:刷新一次页面(客户端 bundle 是页面加载时取的,光切面板不重读)。 - 改
lib/index.js/lib/snapshot.js:宿主半侧热装配;不生效就把插件 disable 再 enable 一次。
测试
# 仓库自带一份真实快照当 fixture
node test/test_client.cjs test/fixture.json
# 想用最新数据:从正在跑的插件里取一份
curl -s http://127.0.0.1:<port>/dsh-etf-monitor/api -o fixture.json
node test/test_client.cjs fixture.json
测试做的事:用假的 window.__ModuleLoader__ 接住自注册描述符,再用假的 React 把
main 与 sidebar.panellist 两个槽位的 React 树整棵展开执行一遍(约 1440 个节点),
断言关键读数真的落到了文案里。不开浏览器也能抓到 undefined.toFixed 这类运行时错误。
FAQ
非交易时段显示什么? 显示 盘前 / 已收盘,数据停在最后一个交易日的收盘值,不会报错也不会装成实时。
数据延迟多少? 东财与腾讯的免费行情普遍有 1–3 秒延迟,面板 60 秒刷新一次,不是逐笔。
为什么不直接读指数? 指数是加权结果,权重股的涨跌会盖住 ETF 自己的资金行为;护盘往往只体现在宽基 ETF 的成交结构和溢价上。
能加自己的 ETF 吗? 能,lib/snapshot.js 里的 ETF_LIST 加一条即可,注意异步补齐规则见「数据源踩过的坑」。
许可
MIT。仅供个人盘中观测,不构成投资建议。
Related plugins
archify (deepseek-harness)
tt-a1i/archify
next-ai-draw-io (dsh-plugin)
dayuanjiang/next-ai-draw-io
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora