---
name: hectorlee-volume-price-screener
slug: hectorlee-volume-price-screener
version: 3.7.1
displayName: 量价选股
description: 纯量价关系A股选股系统 V3.7.1。6种量价形态(D/E/C/B/A/R)+多因子+多周期+行业共振+关注度追踪，130分制评分(+多周期确认-5~+10)，全A股覆盖(含科创板/北交所TDX数据源)，7×日定时扫描(09:00~15:05)，硬过滤ST/退市/次新/一字板/连板/跌势反弹。触发词：放量拉升、缩量调整、量价选股、量价形态、突破延续、蓄力突破、回踩确认、高位平台、底部反转、板块共振、盘中监控。
agent_created: true
---

# 纯量价选股系统 V3.7.1

## 概述

**6 种量价形态 + 多因子融合 + 多周期确认 + 行业共振 + 关注池曝光度追踪**，纯量价、零基本面依赖。覆盖 A 股 5,191 只（沪主板+深主板+创业板+科创板），含 7×全日定时扫描。

### 六种形态

| 变体 | 标签 | 强度 | 描述 |
|:----:|:-----|:----:|:-----|
| D | 🔥 突破延续 | ★★★★★ | 放量后持续上涨≥5%，拒绝回调，不强制缩量 |
| E | 💜 蓄力突破 | ★★★★★ | 放量前连续≥5日阳线蓄力，标准缩量整理 |
| C | ✅ 回踩确认 | ★★★★☆ | 缩量回踩放量日高点不破，反弹站稳 |
| B | 📈 高位平台 | ★★★☆☆ | 缩量后价格在放量日区间上方窄幅运行 |
| A | 📦 标准横盘 | ★★☆☆☆ | 缩量后价格在放量日区间内横盘（原有） |
| R | 🔄 底部反转 | ★★★★★ | 暴跌>15%+地量+首阳放量≥2倍，独立形态 |

### 板块差异化阈值

| 板块 | 涨幅阈值 | 量比下限 | 数据源 |
|:-----|:-------:|:-------:|:-----|
| 主板大票(>100万手) | 3% | 2.0 | 腾讯 |
| 主板中票(>30万手) | 4% | 1.8 | 腾讯 |
| 主板小票 | 5% | 1.5 | 腾讯 |
| 创业板(300/301) | 6% | 2.0 | 腾讯 |
| 科创板(688) | 4% | 2.0 | 通达信 |
| 北交所(4/8/920) | 5% | 3.0 | 通达信 |

### 系统版本演进

| 版本 | 核心变化 |
|:-----|:---------|
| V1.0 | 基准：放量→缩量→横盘 三阶段 |
| V3.0 | 阶段3 扩展为 D/C/B/A 四种变体 |
| V3.1 | 连阳蓄力、前高突破、板块共振三大增强 |
| V3.2 | 市值分档降阈值、一字板过滤器修复 |
| V3.3 | 科创板 TDX 数据源接入、北交所阈值配置 |
| V3.4 | 创业板 8%→6%、末日晚信号延展、盘中监控模块 |
| V3.5 | 变体E蓄力突破、多因子融合、多周期确认、行业精确分类、关注池曝光度、7×定时扫描 |
| V3.6 | 自适应进攻型振幅阈值（趋势斜率陡峭时放宽至15%） |
| V3.7 | 背离预警扣分（横盘期放量滞涨=出货嫌疑） |

---

## 使用场景

- **全市场扫描**：收盘后扫描全 A 股，输出 Top50 + 板块分析 + 操作建议
- **盘中监控**：7 个时点（09:00/10:00/11:00/11:35/13:30/14:45/15:05）自动扫描
- **单股诊断**：给定代码，判断形态 + 评分明细
- **持仓诊断**：输入持仓文件，批量诊断每只票的形态和风险
- **信号追踪**：对比两日信号，追踪 NEW/GONE/UPGRADE/DOWNGRADE

## 快速开始

```bash
cd <skill_dir>/scripts

# 全市场扫描
python screener.py --all --top 30 --detail

# 盘中监控（今日放量突破）
python intraday.py --today --top 20

# 单股诊断
python screener.py 600406 --detail

# 持仓诊断
python position_diagnosis.py positions.json --detail

# 信号追踪
python signal_tracker.py --today data/signals_20260803.json

# 参数覆盖 / 北交所
python screener.py --all --params '{"vol_ratio_min":2.0}' --include-bj
```

---

## 评分体系（130 分制 + 多周期确认 -5~+10）

| 模块 | 分值 | 核心因子 |
|:-----|:----:|:---------|
| 放量质量 | 30 | 放量倍数 + 拉升幅度 + 60日新高 |
| 缩量质量 | 20 | 缩量深度 + 缩量天数 |
| 变体质量 | 25 | 变体感知：振幅/位置/回调/精准度/延续性 |
| 趋势量能 | 15 | 60日新高 + MA10/MA20支撑 + 量能多头 |
| 加分信号 | 15 | 3日量价齐升 + 3日量缩价跌 + 连阳蓄力 |
| 多因子融合 | 20 | 市值流动性 + 波动率(ATR) + 趋势强度 |
| 关注池曝光度 | 5 | 近50日历史命中次数（≥8次→+5, ≥3→+3） |
| 多周期确认 | -5~+10 | 周线MACD金叉/MA10验证 |

**总分构成**：七维定值合计 130 分 + 多周期确认 -5~+10（理论满分约 135）；V3.7 背离预警（横盘期放量滞涨）额外 -10。

**分层**：≥100 强势形态 | 75~99 标准形态 | <75 关注形态
**权重校准**：A/B 变体质量×0.85，R 放量质量×1.15（回测验证）

---

## 盘中监控模式（intraday.py）

| 时点 | 名称 | 行为 |
|:---:|:-----|:-----|
| 09:00 | 盘前扫描 | 昨日信号 Top15 + 今日关注提示 |
| 10:00 | 盘中监控 | 开盘30分钟盘中放量突破检测 |
| 11:00 | 二次确认 | 昨日 Top5 盘中验证（持有/减仓） |
| 11:35 | 午间小结 | 上午最强板块 + 异动 + 下午建议 |
| 13:30 | 午后监控 | 午后新放量信号 + 上午强势延续性 |
| 14:45 | 尾盘突击 | 尾盘放量突破 + 跳水预警 + 明日方向 |
| 16:05 | 收盘全量 | 全扫描 + 板块分析 + 操作建议（16:00 后 hithink 库已同步当日数据） |

### 防污染设计
- 盘中 6 次扫描写入 `intraday_log`，**不干扰关注池曝光度**
- 仅 16:05 收盘扫描写入 `signals_YYYYMMDD.json`
- 曝光度读取同日去重（同一天同一股票只计 1 次）

> **收盘扫描时间说明**：收盘全量扫描从 15:05 推迟到 **16:05**，等待 hithink 本地库 16:00 自动同步当日数据（否则 15:00–16:00 之间运行拿到的日K是 T-1，会漏当日形态信号）。已配置为 WorkBuddy automation「VPS 收盘全量扫描」（工作日 16:05）。

---

## 风险硬过滤（7 项）

| 规则 | 判定 | 优先级 |
|:-----|:-----|:------:|
| ST/*ST | 名称含 ST | 最高 |
| 退市风险 | 财务信号（akshare，未安装降级） | 最高 |
| 次新股 | K线不足 60 根（北交所 90 根） | 高 |
| 一字板 | high==low 且涨停且无量比（≥2.0 放行） | 高 |
| 连板股 | 放量日前连续 ≥2 日涨停 | 高 |
| 跌势反弹 | 放量日前 10 日累计跌幅 < -10% | 高 |
| 换手率 | 放量日换手 < 3%（仅当日启用） | 中 |

---

## 数据源

> **V3.7 修复（2026-08-24）**：腾讯 K 线公开接口（`ifzq.gtimg.cn`）有腾讯云 WAF 反爬，高频抓取（全市场 5000+ 只）会触发 501 拦截；东财列表接口需系统 Clash 代理且不稳定。现改为 **hithink 本地 DuckDB 库优先**（官方同花顺前复权日K，本地文件读取，无网络/无 WAF/无限流），腾讯接口仅作 fallback。详见 `scripts/hithink_provider.py`。

| 数据 | 来源（优先级） | 说明 |
|:-----|:-----|:-----|
| 全市场列表 | **hithink 本地库** → 腾讯排行 `proxy.finance.qq.com` → 东财 | ~5211 只（默认不含北交所）；`--include-bj` 时含北交所 338 只（920 新代码段） |
| 日 K 线 | **hithink 本地库**（`v_daily_qfq` 前复权）→ 腾讯 `web.ifzq.gtimg.cn` → TDX | 90 根，前复权 |
| 实时行情 | 腾讯 `qt.gtimg.cn`（逗号批量，每批 60 只） | 换手率/名称/ST，支持 920 北交所 |
| 周线 K 线 | **hithink 本地库日线 ISO 周聚合** → TDX | 多周期确认（替代原 TDX 周线） |
| 5 分钟 K 线 | 通达信 MCP `period="0"` | 盘中监控（仍依赖 TDX） |

**北交所说明**：北交所代码为 920 新段（`_normalize_code` 已修复「920 误判为沪B股」的 bug），K 线/行情/周线均由 hithink 本地库+腾讯行情覆盖，无需 TDX。北交所形态阈值 5% 涨幅 + 3.0 量比（高量过滤噪声）。

**hithink 本地库依赖**：需安装 `duckdb`（`pip install duckdb`）且本地库存在（`~/Library/Application Support/hithink-finance/data/market.duckdb`，由 hithink-finance 每日 16:00 自动同步）。库不可用时自动降级到腾讯接口。

**网络代理说明**：腾讯系接口（qt/ifzq/proxy.finance/smartbox）一律显式直连（`proxies={http:None,https:None}`），绕开环境注入的本地代理（如 `127.0.0.1:59272`），因该代理对腾讯接口不稳定；东财接口需走系统 Clash 代理 `127.0.0.1:7890`。

---

## 资源文件

### scripts/
| 文件 | 说明 |
|:-----|:-----|
| `screener.py` | 主入口：全市场/单股/搜索/参数覆盖/自适应/ML，V3.5 含行业精确共振 |
| `pattern_detect.py` | 形态识别引擎（6种形态 + 多周期周线确认） |
| `scoring.py` | 130分制评分引擎（变体感知+多因子+曝光度+多周期确认+权重校准） |
| `risk_filter.py` | 风险硬过滤（7 项规则） |
| `data_provider.py` | 数据管道（腾讯+东财+TDX fallback，12并发） |
| `tdx_data_provider.py` | TDX 适配器（共享 McpClient） |
| `intraday.py` | 盘中监控（5分钟K线实时放量检测） |
| `position_diagnosis.py` | 持仓诊断（批量形态+评分+风控+建议） |
| `signal_tracker.py` | 信号追踪（NEW/GONE/UPGRADE/DOWNGRADE） |
| `signal_history.py` | 曝光度统计（近50日关注池上榜次数） |
| `colors.py` | 统一 ANSI 颜色常量 |
| `mcp_utils.py` | 共享 MCP 客户端（握手+SSE解析+工具调用） |
| `backtest.py` | 历史回测引擎 |
| `adaptive.py` | 参数自适应 |
| `ml_model.py` | ML 概率模型 |
| `portfolio_backtest.py` | 每日精选组合回测 |

### tests/（59 个用例）
| 文件 | 说明 |
|:-----|:-----|
| `conftest.py` | 合成 K 线生成器 |
| `test_pattern_detect.py` | 形态识别（含 V3.5 变体E） |
| `test_risk_scoring.py` | 风险过滤 + 评分（含多因子/多周期/曝光度） |
| `test_v2_modules.py` | 回测/ML/自适应测试 |

---

## 分享

```bash
cd ~/.workbuddy/skills
tar -czf volume-price-screener.tar.gz volume-price-screener/
# 对方: tar -xzf volume-price-screener.tar.gz -C ~/.workbuddy/skills/
```

依赖：`pip install requests numpy`（可选：`scikit-learn pytest`）

---

## 注意事项

- 颜色约定：涨=红、跌=绿（A 股惯例）
- 纯量价信号，不构成投资建议；高评分≠必涨
- 全市场扫描约 2~5 分钟（5191 只 × 90 根 K 线，12 并发）
- TDX 适配器需 WorkBuddy MCP 代理（`127.0.0.1:57400`），否则科创/北交所自动跳过
- 定时扫描每工作日 7 次自动执行，结果写入 `data/intraday_log_*.txt` 和 `data/signals_*.json`
