dsh-etf-monitor:一個盯國家隊 ETF 的 DSH 側邊欄面板

前言

做 A 股盤中監測,常見的做法是盯指數。但指數是加權結果,權重股的漲跌會蓋住 ETF 自己的成交行爲;「國家隊 / 匯金是不是在買寬基 ETF」這件事,信息量主要在 ETF 份額本身的成交結構裏:成交額有沒有異常放大、是不是脈衝式護盤、有沒有申購資金頂着溢價接。

下面介紹 lacrimosa-da/dsh-etf-monitor,一個 DeepSeek Harness(DSH)側邊欄面板,把上面三件事做成一屏讀數,交易時段內每 60 秒重算一次。純 Node 直取公開行情接口,零第三方依賴、不讀本地文件、不需要任何 API Key。

這是什麼

由 lacrimosa-da 維護的客戶端插件,分類爲客戶端,MIT 協議,倉庫裏帶 dsh-plugin topic,未發佈 npm(收錄 PR 合併後可在插件市場搜到)。核心是 lib/snapshot.js 這個純 Node 數據層,直接取東財 push2.eastmoney.com、騰訊 qt.gtimg.cn 的公開行情,產出一個 snap 對象,前端負責渲染。

它只回答一個問題:盤中寬基 / 行業 ETF 的成交結構是否顯示有主動資金在護盤。

面板與讀數

左側圖標欄 sidebar.panellist 上有個圖標叫「國家隊ETF」(order 30,排在「靈樞/上下文」與「夢境」之間)。點開是 main 槽位的整頁看板,四個區塊:

  1. 四項判讀 — 510300(滬深300ETF)量比推定、護盤脈衝次數、溢價率、漲跌家數
  2. 15 只 ETF 籃子 — 現價、漲跌幅、成交額、量比推定、主力淨額、超額、溢價率
  3. 510300 分時結構 — 半小時一桶,成交額柱 + 價位點
  4. 市場寬度 — 主要指數 / 海外市場 / 行業與概念漲跌前列 / 全市場 ETF 主力淨流入流出 TOP

四項判讀怎麼讀

讀數 定義 判斷口徑
量比推定 當前成交額 ÷ 按已過交易分鐘線性外推的全天成交額 > 1.5× 纔算真放量;< 0.7× 是縮量
護盤脈衝 單分鐘成交額 ≥ 當日已過均量的 4 倍 連續出現是主動買;只出現一兩次且價格被吞是試盤
溢價率 ETF 市價相對 IOPV 持續正溢價說明有申購資金在頂;負溢價說明折價沒人接
超額 ETF 漲跌幅 − 跟蹤指數漲跌幅 只看同一只的時間序列,不跨標的橫比

README 裏給了一條最有用的組合判據:成交額放大 且 溢價率轉正 且 分時桶價格重心上移,三條同時成立纔算真護盤;只有第一條放大,往往只是「換手不是承接」。

15 只籃子的範圍

窄基覆蓋 滬深300(510300 / 510330 / 159919 / 510310)、上證50(510050)、中證500(510500)、中證1000(512100 / 159845)、科創50(588000 / 588080)、創業板(159915);行業覆蓋券商(512880)、半導體(512480 / 588200)、醫藥(512010)。籃子固定在 lib/snapshot.js 的 ETF_LIST 裏,README 的 FAQ 說明可以自行加一條,但要注意異步補齊規則。

分時結構怎麼用

柱高是半小時成交額,線上是期末價格,虛線是昨收。柱高逐段衰減、價格走平或下移,說明承接力遞減。每 60 秒重算,不是逐筆。

安裝與啓用

插件市場裏搜 dsh-etf-monitor(收錄 PR 合併後可用)。未發佈 npm,市場安裝走 GitHub 源。

GitHub 源的安裝方式(來自 README):調 plugin_manager → install_bundle,target 填倉庫地址,按 commit 鎖定。源碼目錄開發則用本地路徑:

link:C:/path/to/plugins/dsh-etf-monitor

本地 tgz 快照:先 npm pack 出 dsh-etf-monitor-0.2.0.tgz,再把路徑交給 install_bundle,升級要重裝。

宿主半側熱裝配,裝完通常不用重啓;客戶端 bundle 是頁面加載時取的,裝完 / 升級完需要刷新一次頁面。改 client.js 同樣要刷新頁面,改 lib/index.js / lib/snapshot.js 走宿主半側熱裝配,不生效就 disable 再 enable 一次。

接口與獨立使用

插件註冊 /dsh-etf-monitor 前綴的四個路由:

GET /dsh-etf-monitor/api            取快照,45 秒進程內緩存
GET /dsh-etf-monitor/api?fresh=1    強制重算
GET /dsh-etf-monitor/health         引擎、版本、最近一輪耗時、最近一次失敗原因
GET /dsh-etf-monitor/debug          逐接口探活(排障用)

數據層可以脫離 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億

口徑侷限

  1. 量比是推定值,用已過交易分鐘線性外推估全天,開盤初期波動大,只看方向不看絕對值。
  2. 超額含昨日溢價殘留,是代理指標,不跨標的橫比。
  3. 溢價率取騰訊 IOPV 字段(qt.gtimg.cn 第 78 項);東財的 f71 是均價不是 IOPV,早期版本在這裏算錯過。

安全性方面,lib/index.js 只對公開行情接口發 GET,不攜帶個人數據,不讀寫本地文件,進程內 45 秒緩存避免重複打上游。

適用場景與注意

適合想在交易時段內看寬基 ETF 成交結構、判斷護盤力度的開發者,也適合拿 snapshot 數據層做二次加工。兼容性要求:DSH 需支持 dsh.bundle.patch(本包同時聲明 dsh.bundle 與 dsh.client),Node ≥ 18.17,平臺是 web 客戶端。

插件以當前 DSH 進程的權限運行,安裝前應先讀一遍源碼、確認 MIT 許可證。行情數據有 1–3 秒延遲,面板 60 秒刷新,僅供個人盤中觀測,不構成投資建議。

測試可以不開瀏覽器跑一遍 React 樹:

node test/test_client.cjs test/fixture.json

或從正在運行的插件裏取一份實時快照當 fixture:

curl -s http://127.0.0.1:<port>/dsh-etf-monitor/api -o fixture.json
node test/test_client.cjs fixture.json

小結

把「國家隊是不是在買 ETF」從搜索引擎和手工看盤,變成一個 DSH 側邊欄裏的自動重算面板,代價是幾個口徑上的侷限。目錄頁在 https://www.skillhub.cn/plugins/lacrimosa-da/dsh-etf-monitor,源碼和 README 在 https://github.com/lacrimosa-da/dsh-etf-monitor。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜