前言¶
做 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 槽位的整頁看板,四個區塊:
- 四項判讀 — 510300(滬深300ETF)量比推定、護盤脈衝次數、溢價率、漲跌家數
- 15 只 ETF 籃子 — 現價、漲跌幅、成交額、量比推定、主力淨額、超額、溢價率
- 510300 分時結構 — 半小時一桶,成交額柱 + 價位點
- 市場寬度 — 主要指數 / 海外市場 / 行業與概念漲跌前列 / 全市場 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億
口徑侷限¶
- 量比是推定值,用已過交易分鐘線性外推估全天,開盤初期波動大,只看方向不看絕對值。
- 超額含昨日溢價殘留,是代理指標,不跨標的橫比。
- 溢價率取騰訊 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。