Skip to main content

dragon-quant 🐉

龙头战法量化筛选系统 — A 股涨停板龙头识别工具

基于同花顺、雪球、腾讯三大公开数据源,对涨停候选股进行多维量化评分,自动识别市场龙头;同时提供日志查询、SQLite 持久化、龙头回测与 Web UI 可视化能力。

当前主流程使用五维「识别真龙」评分体系:带动性 30% / 领涨性 25% / 抗跌性 15% / 流动性 20% / 资金承接 10%,采用门槛 + 加权两段式聚合(四大特征任一低于门槛即一票否决,资金承接不否决仅加权贡献)。设计哲学:龙头不是预判出来的,是「识别」出来的。详见仓库内《评分器Refactor.md》。

为兼容历史数据,SQLite 物理表继续沿用 *_v2(如 dragons_v2 / scans_v2),scan_v2 命令保留为隐藏兼容别名,行为等同 scan。旧 *_v1 表不再由主流程写入,仅可通过显式 --source v1 查询历史记录。

板块口径采用同花顺行业板块thshy/hyzjl,约 90 个真实行业,code 为 881xxx)。

📊 龙头回测成绩单(历史样本)

入选后第一个非一字板日以最低价买入;最大收益按收益观察窗口统计,最大回撤按「买入日至最大收益出现日」窗口统计。

排名 代码 名称 入选日 综合分 买入日 买入价 最大收益% 最大回撤%
1 002552 宝鼎科技 2026-05-22 77.8 2026-05-25 41.02 +51.37 +0.00
2 000636 风华高科 2026-05-22 83.0 2026-05-26 40.18 +50.72 +0.00
3 600172 黄河旋风 2026-05-22 75.1 2026-05-25 11.16 +43.91 +0.00
4 000725 京东方A 2026-05-21 77.5 2026-05-22 4.47 +36.24 +0.00
5 603989 艾华集团 2026-05-22 81.1 2026-05-25 29.00 +32.48 +0.00
6 002579 中京电子 2026-05-26 62.2 2026-05-27 15.99 +29.83 +0.00
7 002585 双星新材 2026-05-22 72.4 2026-05-25 9.62 +22.66 +0.00
8 002975 博杰股份 2026-05-25 79.4 2026-05-26 125.00 +21.55 -5.60
9 600707 彩虹股份 2026-05-21 82.8 2026-05-22 10.57 +21.38 +0.00
10 002952 亚世光电 2026-05-21 78.5 2026-05-22 28.80 +17.15 +0.00

安装

pip install dragon-quant
# 或从源码
git clone https://github.com/gitBingxu/dragon-quant.git
cd dragon-quant && pip install -e .

# Playwright(雪球 Cookie 自动获取所需)
playwright install chromium

快速开始

# 查看 Linux 风格帮助提示
dragon-quant -h
dragon-quant scan -h

# 五维「识别真龙」扫榜 — 找 top5 龙头
dragon-quant scan --top 5

# 强制执行(跳过交易时段拦截 + DB 缓存)
dragon-quant scan --force

# 龙头回测 + Web UI
dragon-quant review --ui
# 查看龙头回测面板(默认读取 dragons_v2)
dragon-quant review --ui-only

前置条件

板块数据用同花顺无需 Cookie(curl + GBK 直取)。个股数据依赖雪球 Cookie:

# 查看状态
dragon-quant data cookie-status

# 手动设置雪球 Cookie(推荐)
python3 -m dragon_quant.providers.cookie set --source xq --cookie 'xq_a_token=...; xq_is_login=1; u=...'

# 自动获取(需要 playwright)
dragon-quant data cookie-fetch          # 默认仅刷新雪球

Cookie 文件位置:~/Library/Application Support/dragon-quant/cookies/{xueqiu,eastmoney}

CLI 命令大全

scan — 扫榜

dragon-quant scan [--top 25] [--candidates 5] [--workers 2] [--force]
参数 默认 说明
--top 25 最终输出的候选股数量
--candidates 5 兼容参数;当前五维路径按每个领涨行业当日全部涨停股入池
--workers 2 并发线程数
--force - 跳过交易时段拦截与 DB 缓存

scan 走五维「识别真龙」体系。输出包含:板块排行(领涨/领跌明细)、候选股列表、评分表格、自然语言详细报告,并自动持久化到 ~/Library/Application Support/dragon-quant/*_v2 表。scan_v2 仍可用于旧脚本兼容,但帮助文档不再展示。

blacklist — 概念板块黑名单

拉取领涨/领跌板块时按子串过滤(行业板块切换后默认种子为空,按需维护)。

dragon-quant blacklist list
dragon-quant blacklist add "次新股"
dragon-quant blacklist remove "次新股"

review — 龙头回测

dragon-quant review                       # 自动筛 5~20 交易日内 pending 票全回测
dragon-quant review --date 20260519 --top 5
dragon-quant review --date 20260519
dragon-quant review --force --date 20260519
dragon-quant review --ui                  # 回测后启动 Web UI(默认展示 dragons_v2)
dragon-quant review --ui-only --port 8765 # 仅看结果(默认 dragons_v2)

review 默认读取/写回 dragons_v2--source v1 仅用于查询和回测历史旧表。回测流程:从对应 dragons_* 表读 pending 龙头 → 找入选后第一个非一字板日(high != low)以最低价买入 → 算 max_return_5d / max_return_hold_days → 按买入日至峰值窗口算 max_drawdown_5d → 写回对应 DB 表。回测时对每只 pending 个股追加一段量价分析,结论写入独立的 vpa_analysis 表。

vpa — 量价分析

dragon-quant vpa --code 600519 [--source xueqiu] [--days 60] [--no-save]

独立于评分体系的量价健康度验证模块,基于「多空博弈 + 量能验证」,内置 4 个插件式因子:量额灵敏度 / 趋势量价验证 / 突破放量验证 / 量价背离。输出健康度(0-100)+ 偏多/中性/偏空信号 + 判断依据,定位「验证器」而非买卖指令。

data — 原子数据查询

dragon-quant data sector [--asc]                       # 行业板块涨/跌幅榜
dragon-quant data components --sector 881167           # 行业成分股(同花顺 6 位代码)
dragon-quant data kline --code 600172 [--days 20]      # 个股日 K
dragon-quant data minute --code 600172                 # 个股 1 分 K(分时)
dragon-quant data quote --code 600172                  # 实时行情
dragon-quant data batch-quote --codes 600172,000001    # 批量行情
dragon-quant data cookie-status                        # Cookie 状态

logs / storage — 日志与数据管理

dragon-quant logs tail [-n 20]
dragon-quant logs --source v2 query [--date 20260513] [--category scorer:drive] [--level error] [--code 600172]
dragon-quant logs --source v2 summary
dragon-quant logs clear --days 7

dragon-quant storage status      # 存储状态
dragon-quant storage size        # 磁盘占用
dragon-quant storage clear --all # 清理全部

Programmatic API

import dragon_quant

result = dragon_quant.scan(top_n=5, candidates_n=5, workers=2)

# 返回 dict:
# {
#   "timestamp": "...", "elapsed_s": 38.2,
#   "sectors": {"up": [...], "down": [...]},
#   "ranking": [
#     {"code": "...", "name": "...", "concepts": [...], "board_count": 3,
#      "composite_score": 73.5,
#      "is_true_dragon": true, "reject_reason": null,
#      "dimensions": {"drive": {...}, "leadership": {...}, "anti_drop": {...},
#                     "liquidity": {...}, "absorption": {...}}}
#   ],
#   "report_text": "..."
# }

原子数据查询:

from dragon_quant.data import (
    get_sector_ranking, get_sector_components,
    get_kline, get_minute_kline, get_quote, batch_get_quotes,
    cookie_status, fetch_cookies,
)

sectors = get_sector_ranking(asc=False)        # 行业涨幅榜
stocks = get_sector_components("881167")       # 行业成分股
kline = get_kline("600172", days=30)
quote = get_quote("600172")

评分体系

五维「识别真龙」

维度 权重 门槛 衡量(仅当日盘面,资金承接回看10日)
带动性 30% 40 封板最早 + 带动板块(脉冲-跟随因果检测)+ 板块共鸣
领涨性 25% 40 连板最多 + 5日涨幅在板块内分位
抗跌性 15% 35 大盘 + 板块双基准横盘稳住 + 率先起飞
流动性 20% 35 换手充沛度 + 封板质量(封单/开板次数,一字不罚)
资金承接 10% 跨板块虹吸(出逃规模越大 + 拉升越高 → 分越高)

聚合:四大特征任一 < 门槛 → 一票否决(非真龙);通过者按综合分降序排名。资金承接不否决,仅加权贡献。阈值/权重集中在 scorers/registry.py,便于回测调参。

数据源

数据源 用途 Cookie
同花顺 行业板块排行 / 成分股 / 板块当日1分K / 历史5分K 无需
雪球 个股日 K / 当日 1 分 K 需要
腾讯 批量实时行情 + 收盘盘口(买一封单量) 无需

东财 provider 仍保留但默认不参与扫描,可作回退。封单数据走腾讯 gtimg 收盘盘口(盘后仍保留收盘瞬间状态)。

目录结构

dragon_quant/
├── cli.py                # CLI(scan/logs/data/review/vpa/storage/blacklist)
├── orchestrator.py       # 编排器(Phase A→F,固定五维评分)
├── data.py               # 原子数据查询 API
├── rate_limit.py         # 并发限流器
├── providers/            # 数据源适配(ths/eastmoney/xueqiu/tencent/browser/cookie)
├── scorers/           # 五维评分器 + registry + aggregator
├── vpa/                  # 量价分析(插件式因子)
├── cache/                # 内存+本地双缓存
├── logging/              # ScanLogger + ReportBuilder + query
├── storage/              # paths / db(SQLite)/ manager
├── utils/trading.py     # 交易日历工具
├── review.py             # 龙头回测
├── web_ui/               # 回测 Web UI(Vite+React+TS / stdlib HTTPServer)
└── models/types.py      # 数据模型

设计原则

  1. Provider 抽象:所有数据源实现 StockProvider 接口,评分器只依赖接口,可无缝切换/新增数据源。
  2. 评分器是 cache 消费者:统一签名 score(code, cache, **kwargs) -> ScoreResult,只读缓存不发请求;编排器 Phase A→D 预填,Phase E 打分。
  3. 并发与限流RateLimiter 按 provider 串行排队 + 随机延迟,不同 provider 并发。
  4. 结构化日志ScanLogger 全链路打点,支持按类别/级别/代码查询。
  5. 历史兼容:主流程固定写 *_v2 表;旧 *_v1 表保留显式查询能力,不参与新扫描。

持久化

SQLite 表分为三类:

  • 当前主流程:scans_v2 / scan_stocks_v2 / scan_logs_v2 / dragons_v2
  • 历史旧表:scans_v1 / scan_stocks_v1 / scan_logs_v1 / dragons_v1(仅显式 --source v1 查询)
  • 共享表:vpa_analysis / sector_blacklist

运行时不创建旧无后缀 scans / scan_stocks / scan_logs / dragons 表;新扫描固定写 source="v2"*_v2 表,以兼容已存在的 v2 历史数据。

dragons_v2 表关键字段:

  • source:固定为 v2;旧 dragons_v1 仅用于历史记录。
  • version:入库时的包版本号。
  • review 字段:buy_date / buy_price / max_return_5d / max_drawdown_5d / max_return_hold_days / review_status,按 source 独立维护。

scan_stocks_v2 填充 dim_liquidity / is_true_dragon / reject_reason 等五维识别字段。

License

MIT

Release files for dragon-quant 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dragon-quant 0.4.2
File Size Uploaded
dragon_quant-0.4.2.tar.gz 288.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dragon-quant 0.4.2
File Interpreter ABI Platform
dragon_quant-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 574.6 kB

Release files / dragon_quant-0.4.2.tar.gz

Download URL dragon_quant-0.4.2.tar.gz
Size 288.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5712d603b033efcfe8315c9d88c3031ed2ef8441a94f2e10db81b09000ae5ef9
BLAKE2b-256 checksum
How to use checksums
d249f51a74e068a743ce15a42cdf63772f3dd5419af843a8412cf447311b2bed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / dragon_quant-0.4.2-py3-none-any.whl

Download URL dragon_quant-0.4.2-py3-none-any.whl
Size 286.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9e0391b9fc286b248bd9a7c822a9248606186ba13e9a2d98353c348764ef026
BLAKE2b-256 checksum
How to use checksums
fc2114b1cca2375a5156c7a45da8c44ef294839b6603fc53dc28566f9d471483
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

0.5.1

2 release files

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page