基于通达信20因子组合策略的Python量化选股系统。集成数据获取、因子计算、信号生成和选股输出功能。
- 科学的数据管理: 批量获取并持久化存储股票数据,避免重复API调用
- 精准的策略复现: 完整实现通达信20因子组合策略
- 智能的信号生成: 多维度评分系统(趋势+动量+成交量)
- 便捷的命令行工具: 一键初始化、数据更新、选股分析
基于以下12个严格的AND组合条件:
- 价格反转模式: 前期连续下跌后今日上涨
- 均线趋势确认: 5日、13日、132日均线都上涨
- 价格位置: 收盘价高于中长期均线
- 突破模式: 开盘在5日均线下但收盘突破均线
- 量价配合: 成交量连续放大
- 风险控制: 限制单日最大跌幅
威廉指标作为优先排序因子,避免高位买入:
- WR1 (14日) 和 WR2 (9日) 双周期计算
- 负值刻度: 取值范围0到-100,标准威廉指标公式
- 超买区间: -20到0,警惕顶部风险
- 超卖区间: -100到-80,关注底部机会
- 优先排序: 威廉指标越接近-100,排名越靠前
- 基础信号(40%): 通达信策略信号
- 趋势强度(30%): 多周期均线趋势一致性
- 动量强度(20%): 价格变化幅度和方向
- 成交量强度(10%): 量价配合程度
- 威廉排序: WR指标用于优先级排序,底部优先
Python 3.8+
pip install -r requirements.txt
# 初始化系统
python main.py init
# 更新股票列表
python main.py update-data --list
# 更新历史数据(全量)
python main.py update-data --daily --all
# 查看系统状态
python main.py status
# 执行今日选股
python main.py select
# 分析单只股票
python main.py analyze 000001.SZ
StockMarket/
├── main.py # 主程序入口
├── src/
│ ├── config.py # 项目配置
│ ├── data/ # 数据模块
│ │ ├── tushare_client.py # Tushare数据客户端
│ │ ├── data_manager.py # 数据管理器
│ │ └── data_utils.py # 数据处理工具
│ ├── factors/ # 因子库
│ │ ├── tdx_factors.py # 通达信因子实现
│ │ └── 通达信策略因子.py # 框架集成版本
│ ├── signals/ # 信号库
│ │ └── tdx_signal.py # 信号生成器
│ ├── engine/ # 选股引擎
│ │ └── stock_selector.py # 选股引擎主程序
│ └── cli/ # 命令行工具
│ ├── data_cli.py # 数据管理CLI
│ └── stock_cli.py # 选股CLI
├── tests/ # 测试模块
├── data/ # 数据存储目录
│ ├── cache/ # 缓存目录
│ └── output/ # 输出目录
└── requirements.txt # 依赖包列表
在 src/config.py
中配置您的Tushare token:
TUSHARE_TOKEN = "your_tushare_token_here"
系统使用SQLite数据库存储数据,默认路径: data/stock_market.db
# 更新股票列表(约5000只A股)
python main.py update-data --list
# 更新全部股票历史数据(建议分批更新)
python main.py update-data --daily --all
# 增量更新特定股票
python main.py update-data --daily --stocks "000001.SZ,000002.SZ"
# 执行完整选股流程
python main.py select
# 输出示例:
📊 通达信策略今日选股结果(威廉指标优化版)
====================================================================================================
🕐 分析时间: 2025-07-01 15:30:00
📈 推荐股票: 5只
🔍 策略说明: 通达信主策略信号 + 威廉指标优先排序,避免买在高位
|排名|股票代码|股票名称|最新价|信号强度|行业|地区|强买入|威廉指标|
|--|--|--|--|--|--|--|--|--|
|1|603669.SH|灵康药业|5.40|0.816|化学制药|西藏|是|WR1:-17.4/WR2:-0.0|
|2|603444.SH|吉比特|316.71|0.758|互联网|福建|是|WR1:-0.0/WR2:-0.0|
📊 威廉指标说明:
- WR1/WR2: 14日/9日威廉指标值 (取值范围:0到-100)
- 接近0(如-10,-20):超买区间,顶部风险
- 接近-100(如-80,-90):超卖区间,底部机会
# 分析特定股票的信号详情
python main.py analyze 000001.SZ
# 检查数据状态
python main.py status
# 强制更新数据
python main.py update-data --daily --force
# 指定日期范围
python main.py update-data --daily --start-date 20240101 --end-date 20240630
选股结果自动保存为CSV文件,表头格式:
排名,股票代码,股票名称,最新价,信号强度,行业,地区,强买入,威廉指标
1,603669.SH,灵康药业,5.40,0.816,化学制药,西藏,1,WR1:-17.4/WR2:-0.0
在 src/config.py
中可以调整:
- 数据存储路径
- 选股参数
- API调用频率
- 威廉指标阈值
- 数据获取: 首次运行需要较长时间获取全量数据
- API限制: Tushare API有调用频率限制,建议分批更新
- 投资风险: 策略结果仅供参考,投资有风险
- 数据质量: 建议定期更新数据保持时效性
- ✅ 修正威廉指标为标准负值刻度(-100到0)
- ✅ 威廉指标改为优先排序因子,不强制过滤
- ✅ 统一输出表格格式,去除无用空格
- ✅ CSV文件表头与显示表格完全一致
- ✅ 完善项目知识文档和环境配置
- ✅ 新增威廉指标(Williams %R)择时功能
- ✅ 优化数据下载性能,支持5100积分高频API
- ✅ 创建无限制速度测试器验证API容量
- ✅ 完善信号增强算法,提升选股精准度
- ✅ 完成通达信20因子策略实现
- ✅ 集成数据获取和持久化存储
- ✅ 实现多维度信号生成系统
- ✅ 提供完整的命令行工具
欢迎提交Issue和Pull Request!
本项目仅供学习研究使用,请勿用于商业用途。