一个完整的A股量化选股解决方案,集数据获取、策略分析、选股执行、五维评分、选股择时、策略回测等于一体。支持多种(可扩展)选股策略,可灵活组合使用,帮助投资者快速发现投资机会。
- 11种选股策略 - 覆盖底部反转、趋势加速、形态突破等多个维度
- 策略灵活组合 - 支持多策略组合,精准捕捉投资机会
- 5000+只A股数据 - 覆盖全市场股票,支持最多三年历史数据回溯
- 智能数据更新 - 自动判断更新时机,避免不必要的网络请求
- 多层降级机制 - 确保数据获取的稳定性和可用性
- Web管理系统 - 实时查看股票数据、执行选股、分析结果
- K线图可视化 - 为每只入选股票生成K线图,直观展示技术形态
- 策略参数配置 - 在线修改策略参数
KHunter采用五维度综合评分模型,从多个角度全面评估股票投资价值。
| 维度 | 权重 | 评分范围 | 说明 |
|---|---|---|---|
| 技术面 | 35% | 不限 | 策略命中情况,权重累加 |
| 资金面 | 35% | -100~100 | 资金流向分析,最重要指标 |
| 基本面 | 10% | -60~+60 | 财务指标分析,排雷为主 |
| 板块强度 | 10% | -100~+200 | 所属板块表现,顺势而为 |
| 事件驱动 | 10% | -100~+100 | 重大事件催化,短期机会 |
- 执行选股 - 运行选股策略,获得初步候选股票
- 排名评分 - 对选股结果进行五维评分和排名
- 筛选过滤 - 按评分等级、支撑位等条件筛选
- 狩猎场展示 - 查看符合条件的优质股票
- 追踪管理 - 对狩猎场股票进行追踪和管理
### 🔒 风险过滤
- **自动风险过滤** - 自动排除ST股、退市股、市值过低股票、近期涨幅过高等高风险标的
### � 策略回测功能
- **回测配置** - 配置回测参数,包括策略选择、回测时间范围、资金管理等
- **回测执行** - 执行策略回测,模拟真实交易环境
- **结果分析** - 展示回测结果,包括收益率、胜率、最大回撤等指标
- **交易记录** - 查看详细的交易记录,了解策略表现
- **收益曲线** - 展示资金曲线,直观展示策略效果
### 🚀 开箱即用
- **一键启动** - 快速开始选股
- **完善的文档** - 详细的策略说明和使用指南
### 环境要求
- Python 3.8+
- pip 或 conda
### 安装步骤
```bash
# 1. 克隆项目
git clone https://github.com/ling-0729/KHunter.git
cd KHunter
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置系统
# 复制配置模板文件为实际配置文件
cp config/config.yaml.template config/config.yaml
# 编辑 config/config.yaml,填入你的钉钉机器人配置(可选)
# 4. 启动Web界面
python main.py web
windows下直接双击根目录下start.bat文件启动web服务
首次使用需要配置 config/config.yaml 文件:
-
复制配置模板
cp config/config.yaml.template config/config.yaml
-
编辑配置文件 (
config/config.yaml)data_dir- 数据存储目录(默认:data)dingtalk.webhook_url- 钉钉机器人webhook URL(可选)dingtalk.secret- 钉钉机器人加签密钥(可选)schedule.time- 定时任务执行时间(默认:17:00)update.lookback_days- 数据回看天数(默认:10)filters.*- 股票过滤条件(市值、流通股本等)
-
注意事项
config.yaml包含敏感信息,已加入.gitignore,不会被提交到仓库- 钉钉配置为可选项,不配置不影响系统使用
- 首次运行需要初始化数据,请在Web界面执行"数据初始化"
访问 http://localhost:5001 可使用以下功能:
- 系统概览 - 股票数量、最新数据日期、系统状态
- 股票列表 - 所有股票基本信息,支持搜索和分页
- 选股执行 - 执行选股并查看详细结果,支持多策略组合
- 策略配置 - 在线查看和修改策略参数
- 策略回测 - 配置和执行策略回测,查看回测结果
- 狩猎场 - 查看多维度评分的股票筛选结果
- 数据管理 - 查看数据更新状态,执行数据初始化和更新
- 看板功能 - 展示金股、热门行业和板块分布
- 行业分析 - 展示指定行业的股票列表和表现
- 板块分析 - 展示指定板块的股票列表和表现
初次使用必须执行的功能: 初始化数据,数据更新 日常每天收盘后执行数据更新,增量更新最新k线数据 通过查询基础数据和首页的数据最新日期,股票数量等信息可以验证数据准备情况 数据准备好了以后,可以通过执行选股功能,按策略选股,并保存选股结果 选股完成后,可以通过选股排名功能,对选股结果进行五维分析,并对结果排名 对于选股结果,通过分数阈值和跟踪天数过滤,对当前价格和支撑位价格比较分析,对于符合条件的股票筛选到狩猎场 可以对排名靠前的股票,狩猎场股票进行跟踪,便于调整策略参数,迭代优化策略,有一定开发基础的朋友可以自己扩展策略 可以对策略进行历史数据回测,便于进一步优化策略
*****注意,由于免费数据源的稳定性问题,经过测试,策略选股功能可以稳定使用,但是由于选股排名和狩猎场等功能依赖于除k线以外的如资金面,基本面,板块,事件等数据,可能存在数据无法稳定获取的情况,对功能有一定影响。一方面开发者积极探索稳定数据源,另一方面可以通过注册tushare获取api token解决数据稳定性问题,带来的困扰请理解。
| # | 策略名称 | 核心逻辑 | 适用场景 |
|---|---|---|---|
| 1 | 底部趋势拐点 | 深度下跌后的反转拐点 | 极端底部 |
| 2 | 涨停回马枪策略 | 涨停后回调再次启动 | 短期强势 |
| 3 | 涨停横盘策略 | 涨停后横盘整理突破 | 突破选股 |
| 4 | 启明星策略 | 三根K线底部反转形态 | 底部反转 |
| 5 | 多金叉共振 | 均线/KDJ/MACD金叉共振 | 多头共振 |
| 6 | 多方炮策略 | 两阳夹一阴K线组合 | 短期反弹 |
| 7 | 阻力位突破策略 | 股价突破关键阻力位 | 突破选股 |
| 8 | 强势洗盘弱转强 | 强势股洗盘后转强 | 趋势反转 |
| 9 | 趋势加速拐点 | 上升趋势中的加速拐点 | 趋势加速 |
| 10 | 趋势共振反转策略 | 多指标共振的趋势反转 | 趋势反转 |
| 11 | W底策略 | W底双底反转形态 | 双底反转 |
编辑 config/strategy_params.yaml 调整策略参数。每个策略都有独立的参数配置,支持在线修改。
- Python 3.8+ - 核心语言
- akshare - A股实时/历史数据获取
- pandas/numpy - 数据处理与技术指标计算
- matplotlib - K线图生成
- Flask - Web管理界面
- SQLite - 数据存储
├── main.py # 主程序入口
├── web_server.py # Web服务器
├── stock_analyzer.py # 股票分析器
├── technical.py # 技术指标计算
├── strategy/ # 策略模块
│ ├── __init__.py # 初始化文件
│ ├── base_strategy.py # 策略基类
│ ├── bottom_trend_inflection.py # 底部趋势拐点
│ ├── limit_up_pullback_strategy.py # 涨停回马枪策略
│ ├── limit_up_sideways_strategy.py # 涨停横盘策略
│ ├── morning_star.py # 启明星策略
│ ├── multi_golden_cross.py # 多金叉共振
│ ├── multi_party_cannon.py # 多方炮策略
│ ├── resistance_breakout.py # 阻力位突破策略
│ ├── strong_wash_weak_to_strong.py # 强势洗盘弱转强
│ ├── trend_acceleration_inflection.py # 趋势加速拐点
│ ├── trend_resonance_reversal.py # 趋势共振反转策略
│ ├── w_bottom_strategy.py # W底策略
│ ├── parallel_strategy_executor.py # 并行策略执行器
│ ├── strategy_registry.py # 策略注册表
│ └── ... # 其他策略相关文件
├── utils/ # 工具模块
│ ├── akshare_fetcher.py # 数据获取
│ ├── csv_manager.py # CSV数据管理
│ ├── technical.py # 技术指标
│ ├── kline_chart.py # K线图生成
│ └── ...
├── trading/ # 回测和评分模块
│ ├── __init__.py # 初始化文件
│ ├── backtest_engine.py # 回测引擎
│ ├── backtest_dao.py # 回测数据访问
│ ├── routes.py # 回测API路由
│ ├── khunter_api.py # 狩猎场API
│ ├── khunter_dao.py # 狩猎场数据访问
│ ├── khunter_data_processor.py # 狩猎场数据处理
│ ├── khunter_support_calculator.py # 狩猎场支撑位计算
│ ├── khunter_buy_point_judge.py # 狩猎场买点判断
│ ├── stock_score_calculator.py # 股票评分计算
│ ├── stock_score_dao.py # 股票评分数据访问
│ ├── stock_score_api.py # 股票评分API
│ ├── vectorbt_backtest_engine.py # VectorBT回测引擎
│ └── ...
├── config/ # 配置文件
│ ├── config.yaml # 主配置
│ ├── strategy_params.yaml # 策略参数
│ ├── strategy_order.yaml # 策略顺序
│ ├── strategy_weights.json # 策略权重
│ └── ...
├── web/ # Web前端
│ ├── templates/ # HTML模板
│ └── static/ # 静态资源
├── data/ # 数据库
│
├── doc/ # 文档
- 主配置文件 (
config/config.yaml) - 系统级配置,包括数据获取、选股和Web服务设置 - 策略参数配置 (
config/strategy_params.yaml) - 各策略的参数配置 - 策略顺序配置 (
config/strategy_order.yaml) - 策略执行顺序 - 策略权重配置 (
config/strategy_weights.json) - 策略权重设置
详细配置说明请参考各配置文件中的注释。
系统采用智能更新策略:
- 3点前 - 不更新,使用本地已有数据
- 3点后 - 检查每只股票是否有当天数据
- 100%有当天数据 - 跳过更新,直接使用
- 否则 - 执行增量更新
这样既能保证数据的及时性,又能避免不必要的网络请求。
- 在
strategy/目录创建新文件,继承BaseStrategy - 实现
calculate_indicators()和select_stocks()方法 - 在
config/strategy_params.yaml添加参数 - 系统自动识别并执行
示例:
from strategy.base_strategy import BaseStrategy
class MyStrategy(BaseStrategy):
def __init__(self, params=None):
super().__init__("我的策略", params)
def calculate_indicators(self, df):
# 计算指标
return df
def select_stocks(self, df, stock_name=''):
# 选股逻辑
return signals- 本项目仅供学习和研究使用,不构成任何投资建议。
- 筛选结果仅为技术指标计算结果,不代表对任何股票的推荐或预测。
- 过往表现不代表未来收益,股市有风险,投资需谨慎。
- 使用者应基于独立判断进行投资决策,因使用本项目产生的任何投资损失,作者不承担任何责任。
- 本项目按“原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性、特定用途适用性的保证。
📄 License 本项目基于 MIT 许可证开源,详见 LICENSE 文件。 特别致谢原项目 a-share-quant-selector 的作者 Dzy-HW-XD,本项目在其优秀的基础架构上扩展开发。
🙏 致谢 感谢以下开源项目:
a-share-quant-selector - 原项目基础架构
akshare - A股数据获取库
pandas - 数据处理库
Flask - Web框架
GitHub: https://github.com/ling-0729/khunter 文档: 详见 doc/ 目录