# HunterQuant **Repository Path**: GhunterX/HunterQuant ## Basic Information - **Project Name**: HunterQuant - **Description**: 个人使用的量化交易系统 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2018-07-26 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #HunterQuant 一个功能完整的个人量化交易系统,专注于中国A股市场的数据获取、因子计算、策略回测和实盘交易。 ## 项目概述 HunterQuant是一个端到端的量化交易平台,包含以下核心功能: - **数据管理**:支持从通达信(TDX)数据源获取日线数据、基础数据、财报数据 - **因子计算**:10+种技术和基本面因子,包括相对强度、移动平均、成交量比率等 - **股票池筛选**:8种选股策略,包括趋势跟踪、低PE价值投资、形态识别等 - **策略回测**:完整的回测引擎,支持止损/止盈、仓位管理、基准对比 - **信号生成**:多种买卖信号类型,包括布林带突破、MA突破等 - **实时监控**:市场动量、板块表现、趋势风险等多维度监控 - **深度学习**:基于EfficientNet的K线形态识别模型 ## 技术栈 - **语言**: Python 3.13 - **数据库**: MongoDB - **数据源**: 通达信(TDX) 本地数据文件 - **深度学习**: PyTorch + torchvision (EfficientNet-B3) - **数据分析**: Pandas, NumPy, scipy, scikit-learn - **可视化**: Matplotlib, mplfinance ## 系统架构 ``` HunterQuant/ ├── data/ # 数据管理子系统 ├── factor/ # 因子管理子系统 ├── strategy/ # 策略管理子系统 ├── trading/ # 交易决策子系统 ├── monitor/ # 市场监控子系统 ├── DL/ # 深度学习模块 ├── util/ # 工具类 └── visual/ # 可视化工具 ``` ### 核心模块说明 #### 1. 数据管理子系统 (`data/`) | 文件 | 功能 | |------|------| | `data_module.py` | 核心数据访问层,提供K线数据检索 | | `daily_crawler.py` | 日K线数据爬虫 | | `basic_crawler.py` | 基础股票信息爬虫 | | `finance_report_crawler.py` | 财报数据爬虫 | | `fixing/daily_fixing.py` | 数据质量修复(缺失K线、复权因子) | **数据库集合**: - `daily` - 日K线数据(未复权) - `daily_qfq` - 前复权数据 - `daily_hfq` - 后复权数据 - `basic` - 每日基础信息(PE、市值等) - `stable` - 静态股票信息 - `index_cons` - 指数成分股 #### 2. 因子管理子系统 (`factor/`) | 因子 | 文件 | 描述 | |------|------|------| | 价格变化率 | `change_rate_factor.py` | 不同周期的涨跌幅 | | 移动平均 | `hfq_ma_factor.py` | MA5/10/20/60/120/250 | | 成交量比率 | `vol_ratio_factor.py` | 量比指标 | | 相对强度 | `rs_factor.py` | 5/10/20/60/120/250日RS | | 主指数因子 | `main_index_factor.py` | 指数相关因子 | | 新高因子 | `new_high_factor.py` | 价格新高检测 | | 中位数因子 | `median_factor.py` | 价格中位数 | | PE因子 | `pe_factor.py` | 市盈率相关 | #### 3. 策略管理子系统 (`strategy/`) **股票池实现**: - `trending_stock_pool.py` - 趋势跟踪(A-B-C-D形态识别) - `trending_speedup_stock_pool.py` - 趋势加速检测 - `low_pe_stock_pool.py` - 低PE价值筛选 - `short_strength_stock_pool.py` - 短期强度筛选 - `pattern_stock_pool.py` - 形态选股 - `perfect_pattern_stock_pool.py` - 完美形态检测 - `manual_stock_pool.py` - 手动选股 **策略配置格式** (`strategy/strategies/*.conf`): ```ini name=trending stock_pool=trending_stock_pool interval=1 begin_date=None end_date=None capital=10000000 single_position=1000000 stop_loss=tracking||fixed_ma20_3||keep_dates max_loss=5 ``` #### 4. 交易决策子系统 (`trading/`) **回测引擎** (`backtest.py`): - 完整的日级别模拟交易 - 仓位管理(单个仓位上限) - 止损/止盈策略 - 基准对比(沪深300) - 绩效指标:夏普比率、最大回撤、年化收益 - 交易记录存储到MongoDB **止损策略**: - `tracking_stop_loss.py` - 跟踪止损 - `fix_ma20_3_stop_loss.py` - MA20固定止损 - `keep_dates_stop_loss.py` - 时间止损 **止盈策略**: - `tracking_stop_profit.py` - 跟踪止盈 - `fix_stop_profit.py` - 固定止盈目标 **信号类型**: - 布林带突破(向上/向下) - MA10突破 - 自定义买卖信号 #### 5. 市场监控子系统 (`monitor/`) - `momentum_monitor.py` - 市场动量跟踪 - `main_index_monitor.py` - 指数监控 - `best_block_monitor.py` - 最佳板块表现 - `trade_fit_monitor.py` - 交易适配度分析 - `trending_risk_monitor.py` - 趋势风险评估 #### 6. 深度学习模块 (`DL/`) 基于EfficientNet-B3的K线形态识别: - `kline_train_model.py` - PyTorch训练流水线(360行) - `kline2img.py` - K线转图像 - 支持GPU/CPU/MPS - 4类形态分类(双底等) - 实时形态扫描器 - 预训练模型:`kline_pattern_model.pth` (46MB) ## 安装与配置 ### 1. 环境要求 ```bash pip install pymongo pandas numpy matplotlib scipy scikit-learn pip install torch torchvision mplfinance ``` ### 2. 数据库配置 修改 `util/database.py`: ```python # MongoDB配置 client = MongoClient('mongodb://127.0.0.1:27017/') db = client['my_quant'] ``` ### 3. 数据源配置 修改 `full_task.py` 中的路径: ```python # 通达信数据路径 tdx_data_path = '/path/to/tdx_data' ``` ## 使用指南 ### 完整工作流 运行 `full_task.py` 执行完整流程: ```python python full_task.py ``` 执行步骤: 1. `crawl_data()` - 数据抓取 2. `fixing_data()` - 数据修复 3. `compute_factor()` - 因子计算 4. `compute_signal()` - 信号计算 5. `monitor()` - 市场监控 6. `get_today_candidates()` - 获取今日备选股 ### 单独模块使用 #### 数据抓取 ```python from data.daily_crawler import DailyCrawler from data.basic_crawler import BasicCrawler dc = DailyCrawler() dc.crawl_index(begin_date="2000-01-01", end_date="2025-01-01") dc.multi_crawl_codes(begin_date, end_date) bc = BasicCrawler() bc.crawl_stable_data() bc.crawl_index_cons() ``` #### 因子计算 ```python from factor.factor_module import FactorModule fm = FactorModule() fm.compute(begin_date="2020-01-01", end_date="2025-01-01") ``` #### 策略回测 ```python from strategy.strategy_module import Strategy # 使用预定义策略 strategy = Strategy('trending_strategy') strategy.backtest() # 或创建自定义策略配置文件后运行 strategy = Strategy('your_strategy') strategy.backtest() ``` #### 深度学习形态识别 ```python from DL.kline_train_model import PatternScanner scanner = PatternScanner('kline_pattern_model.pth', code, begin, end) pattern, confidence = scanner.detect() print(f"检测到形态: {pattern}, 置信度: {confidence}") ``` ## 数据库Schema ### 主要集合 | 集合名 | 描述 | |--------|------| | `daily` | K线数据 (OHLCV, is_trading) | | `daily_qfq` | 前复权K线 | | `daily_hfq` | 后复权K线 | | `basic` | 每日基础数据 (PE、市值等) | | `stable` | 静态信息 (名称、行业、上市日期) | | `index_cons` | 指数成分股 | | `change_rate` | 价格变化率 | | `rs` | 相对强度因子 | | `hfq_ma` | 后复权移动平均 | | `vol_ratio` | 成交量比率 | | `_backtest` | 策略回测结果 | | `_option_stocks` | 每期选中的股票 | | `_feature` | 机器学习特征数据 | ## 项目特性 1. **多进程数据处理**:使用16进程并行计算因子 2. **完整回测引擎**:支持涨停/跌停限制、滑点、手续费 3. **风险管控**:多种止损止盈策略 4. **数据质量保障**:自动填充缺失K线、计算复权因子 5. **形态识别**:深度学习模型辅助K线形态判断 ## 开发说明 - 代码使用MongoDB聚合和批量写入优化性能 - 多进程处理CPU密集型因子计算 - 自定义QuantLogger日志记录 - 中英文混合注释 ## 许可证 本项目为个人使用项目。 ## 贡献 欢迎提交Issue和Pull Request。