更新时间:2025-06-23 – 适配 最新
fetch_kline.py
版本。
名称 | 功能简介 |
---|---|
fetch_kline.py |
按市值筛选 A 股股票,并抓取其历史 K 线保存为 CSV。支持 AkShare / Tushare / Mootdx 三大数据源,自动增量更新、多线程下载。本版本不再保存市值快照,每次运行实时拉取。 |
select_stock.py |
读取本地 CSV 行情,依据 configs.json 中的 Selector 定义批量选股,结果输出到 select_results.log 与控制台。 |
内置策略(见 Selector.py
):BBIKDJSelector(少妇战法)、BBIShortLongSelector(补票战法)、BreakoutVolumeKDJSelector(TePu 战法)。
# 建议 Python 3.10+,并使用虚拟环境
pip install -r requirements.txt
主要依赖:
akshare
、tushare
、mootdx
、pandas
、tqdm
等。
若选择 Tushare 作为数据源,请按以下步骤操作:
-
注册账号 点击专属注册链接 https://tushare.pro/register?reg=820660 完成注册。通过该链接注册,我将获得 50 积分 – 感谢支持!
-
开通基础权限 登录后进入「平台介绍 → 社区捐助」,按提示捐赠 200 元/年 可解锁 Tushare 基础接口。
-
获取 Token 打开个人主页,点击 「接口 Token」,复制生成的 Token。
-
填入代码 在
fetch_kline.py
约 第 307 行:ts_token = "***" # ← 替换为你的 Token
使用 Mootdx 数据源前,需先探测最快行情服务器一次:
python -m mootdx bestip -vv
脚本将保存最佳 IP,后续抓取更稳定。
python fetch_kline.py \
--datasource mootdx # mootdx / akshare / tushare
--frequency 4 # K 线频率编码(4 = 日线)
--exclude-gem # 排除创业板 / 科创板 / 北交所
--min-mktcap 5e9 # 最小总市值(元)
--max-mktcap +inf # 最大总市值(元)
--start 20200101 # 起始日期(YYYYMMDD 或 today)
--end today # 结束日期
--out ./data # 输出目录
--workers 10 # 并发线程数
首跑 下载完整历史;之后脚本会 增量更新。
python select_stock.py \
--data-dir ./data # CSV 行情目录
--config ./configs.json # Selector 配置
--date 2025-06-21 # 交易日(缺省 = 最新)
示例输出:
============== 选股结果 [TePu 战法] ===============
交易日: 2025-06-21
符合条件股票数: 1
600690
参数 | 默认值 | 说明 |
---|---|---|
--datasource |
mootdx |
数据源:tushare / akshare / mootdx |
--frequency |
4 |
K 线频率编码(下表) |
--exclude-gem |
flag | 排除创业板/科创板/北交所 |
--min-mktcap |
5e9 |
最小总市值(元) |
--max-mktcap |
+inf |
最大总市值(元) |
--start / --end |
today |
日期范围,YYYYMMDD 或 today |
--out |
./data |
输出目录 |
--workers |
10 |
并发线程数 |
编码 | 周期 | Mootdx 关键字 | 用途 |
---|---|---|---|
0 | 5 分 | 5m |
高频 |
1 | 15 分 | 15m |
高频 |
2 | 30 分 | 30m |
高频 |
3 | 60 分 | 1h |
波段 |
4 | 日线 | day |
★ 常用 |
5 | 周线 | week |
中长线 |
6 | 月线 | mon |
中长线 |
7 | 1 分 | 1m |
Tick |
8 | 1 分 | 1m |
Tick |
9 | 日线 | day |
备用 |
10 | 季线 | 3mon |
长周期 |
11 | 年线 | year |
长周期 |
参数 | 默认值 | 说明 |
---|---|---|
--data-dir |
./data |
CSV 行情目录 |
--config |
./configs.json |
Selector 配置文件 |
--date |
最新交易日 | 选股日期 |
--tickers |
all |
股票池(逗号分隔列表) |
其他参数请执行 python select_stock.py --help
查看。
参数位于
configs.json
,以下仅列常用项。
参数 | 默认 | 说明 |
---|---|---|
threshold |
-6 |
当日 J 值上限 |
bbi_min_window |
17 |
BBI 上升最短天数 |
bbi_offset_n |
2 |
锚点偏移 |
max_window |
60 |
最大窗口 |
price_range_pct |
100 |
价格波动过滤 (%) |
参数 | 默认 | 说明 |
---|---|---|
n_short |
3 |
短 RSV |
n_long |
21 |
长 RSV |
m |
3 |
判别窗口 |
bbi_min_window |
5 |
BBI 窗口 |
bbi_offset_n |
0 |
锚点偏移 |
max_window |
60 |
最大窗口 |
参数 | 默认 | 说明 |
---|---|---|
j_threshold |
1 |
当日 J 值上限 |
up_threshold |
3.0 |
放量涨幅 (%) |
volume_threshold |
0.6667 |
缩量比例 |
offset |
15 |
放量窗口 (日) |
max_window |
60 |
最大窗口 |
price_range_pct |
100 |
价格波动 (%) |
.
├── appendix.json # 附加股票池
├── configs.json # Selector 配置
├── fetch_kline.py # 行情抓取脚本
├── select_stock.py # 批量选股脚本
├── Selector.py # 策略实现
├── data/ # CSV 数据输出目录
├── fetch.log # 抓取日志
└── select_results.log # 选股日志
- 本仓库仅供学习与技术研究之用,不构成任何投资建议。股市有风险,入市需审慎。
- 致谢 @Zettaranc 在 Bilibili 的无私分享:https://b23.tv/JxIOaNE