Skip to content

ling-0729/KHunter

KHunter - 专注技术形态识别的量化选股工具

一个完整的A股量化选股解决方案,集数据获取、策略分析、选股执行、五维评分、选股择时、策略回测等于一体。支持多种(可扩展)选股策略,可灵活组合使用,帮助投资者快速发现投资机会。

✨ 核心优势

🎯 多维度选股

  • 11种选股策略 - 覆盖底部反转、趋势加速、形态突破等多个维度
  • 策略灵活组合 - 支持多策略组合,精准捕捉投资机会

📊 完整的数据支持

  • 5000+只A股数据 - 覆盖全市场股票,支持最多三年历史数据回溯
  • 智能数据更新 - 自动判断更新时机,避免不必要的网络请求
  • 多层降级机制 - 确保数据获取的稳定性和可用性

🌐 可视化管理界面

  • Web管理系统 - 实时查看股票数据、执行选股、分析结果
  • K线图可视化 - 为每只入选股票生成K线图,直观展示技术形态
  • 策略参数配置 - 在线修改策略参数

📈 股票评分系统

KHunter采用五维度综合评分模型,从多个角度全面评估股票投资价值。

五维度评分体系

维度 权重 评分范围 说明
技术面 35% 不限 策略命中情况,权重累加
资金面 35% -100~100 资金流向分析,最重要指标
基本面 10% -60~+60 财务指标分析,排雷为主
板块强度 10% -100~+200 所属板块表现,顺势而为
事件驱动 10% -100~+100 重大事件催化,短期机会

狩猎场使用流程

  1. 执行选股 - 运行选股策略,获得初步候选股票
  2. 排名评分 - 对选股结果进行五维评分和排名
  3. 筛选过滤 - 按评分等级、支撑位等条件筛选
  4. 狩猎场展示 - 查看符合条件的优质股票
  5. 追踪管理 - 对狩猎场股票进行追踪和管理
### 🔒 风险过滤
- **自动风险过滤** - 自动排除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 文件:

  1. 复制配置模板

    cp config/config.yaml.template config/config.yaml
  2. 编辑配置文件 (config/config.yaml)

    • data_dir - 数据存储目录(默认:data)
    • dingtalk.webhook_url - 钉钉机器人webhook URL(可选)
    • dingtalk.secret - 钉钉机器人加签密钥(可选)
    • schedule.time - 定时任务执行时间(默认:17:00)
    • update.lookback_days - 数据回看天数(默认:10)
    • filters.* - 股票过滤条件(市值、流通股本等)
  3. 注意事项

    • config.yaml 包含敏感信息,已加入 .gitignore,不会被提交到仓库
    • 钉钉配置为可选项,不配置不影响系统使用
    • 首次运行需要初始化数据,请在Web界面执行"数据初始化"

🌐 Web界面功能

访问 http://localhost:5001 可使用以下功能:

  • 系统概览 - 股票数量、最新数据日期、系统状态
  • 股票列表 - 所有股票基本信息,支持搜索和分页
  • 选股执行 - 执行选股并查看详细结果,支持多策略组合
  • 策略配置 - 在线查看和修改策略参数
  • 策略回测 - 配置和执行策略回测,查看回测结果
  • 狩猎场 - 查看多维度评分的股票筛选结果
  • 数据管理 - 查看数据更新状态,执行数据初始化和更新
  • 看板功能 - 展示金股、热门行业和板块分布
  • 行业分析 - 展示指定行业的股票列表和表现
  • 板块分析 - 展示指定板块的股票列表和表现

初次使用必须执行的功能: 初始化数据,数据更新 日常每天收盘后执行数据更新,增量更新最新k线数据 通过查询基础数据和首页的数据最新日期,股票数量等信息可以验证数据准备情况 数据准备好了以后,可以通过执行选股功能,按策略选股,并保存选股结果 选股完成后,可以通过选股排名功能,对选股结果进行五维分析,并对结果排名 对于选股结果,通过分数阈值和跟踪天数过滤,对当前价格和支撑位价格比较分析,对于符合条件的股票筛选到狩猎场 可以对排名靠前的股票,狩猎场股票进行跟踪,便于调整策略参数,迭代优化策略,有一定开发基础的朋友可以自己扩展策略 可以对策略进行历史数据回测,便于进一步优化策略

*****注意,由于免费数据源的稳定性问题,经过测试,策略选股功能可以稳定使用,但是由于选股排名和狩猎场等功能依赖于除k线以外的如资金面,基本面,板块,事件等数据,可能存在数据无法稳定获取的情况,对功能有一定影响。一方面开发者积极探索稳定数据源,另一方面可以通过注册tushare获取api token解决数据稳定性问题,带来的困扰请理解。

📊 11种选股策略

# 策略名称 核心逻辑 适用场景
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) - 策略权重设置

详细配置说明请参考各配置文件中的注释。

🔄 智能数据更新

系统采用智能更新策略:

  1. 3点前 - 不更新,使用本地已有数据
  2. 3点后 - 检查每只股票是否有当天数据
  3. 100%有当天数据 - 跳过更新,直接使用
  4. 否则 - 执行增量更新

这样既能保证数据的及时性,又能避免不必要的网络请求。

🔧 扩展新策略

创建新策略

  1. strategy/ 目录创建新文件,继承 BaseStrategy
  2. 实现 calculate_indicators()select_stocks() 方法
  3. config/strategy_params.yaml 添加参数
  4. 系统自动识别并执行

示例:

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

⚠️ 免责声明

  1. 本项目仅供学习和研究使用,不构成任何投资建议。
  2. 筛选结果仅为技术指标计算结果,不代表对任何股票的推荐或预测。
  3. 过往表现不代表未来收益,股市有风险,投资需谨慎。
  4. 使用者应基于独立判断进行投资决策,因使用本项目产生的任何投资损失,作者不承担任何责任。
  5. 本项目按“原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性、特定用途适用性的保证。

📄 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/ 目录

About

一个完整的A股量化选股解决方案,集数据获取、策略分析、选股执行、五维评分、选股择时、策略回测等于一体。支持多种(可扩展)选股策略,可灵活组合使用,帮助投资者快速发现投资机会。

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors