# qai **Repository Path**: pengzhimou/qai ## Basic Information - **Project Name**: qai - **Description**: 没什么好说没什么好说没什么好说 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-02 - **Last Updated**: 2026-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Backtrader A股回测 + 缠论分析系统 直接用原生 [Backtrader](https://www.backtrader.com/),无任何封装。 集成完整的**缠论(Chan Theory)**技术分析系统,基于 [chan.py](https://github.com/Vespa314/chan.py) 实现。 ## 功能特性 - ✅ **多因子选股** - 价值/动量/波动率/质量因子 - ✅ **缠论分析** - 分型/笔/线段/中枢/背驰/买卖点 - ✅ **缠论策略** - 5种经典缠论交易策略 - ✅ **数据管理** - 统一数据管理,支持多指数 - ✅ **回测引擎** - 基于Backtrader的专业回测 - ✅ **可视化** - 回测结果图表展示 ## 安装 ```bash pip install -r requirements.txt ``` 依赖: - `backtrader` - 回测框架 - `pandas` - 数据处理 - `numpy` - 数值计算 - `matplotlib` - 绘图 - `tushare` - A股数据源 ## 快速开始 ### 1. 数据下载 ```bash # 下载沪深300全部300只股票数据 python scripts/download/hs300.py --yes # 下载中证500数据(会自动复用已下载的沪深300重叠股票) python scripts/download/hs300.py --index 000905.SH --yes # 验证数据完整性 python scripts/download/hs300.py --verify-only ``` ### 2. 加载数据 ```python from data import get_unified_data_manager manager = get_unified_data_manager() # 加载单只股票 df = manager.load_stock('000001.SZ') # 加载沪深300全部数据 hs300_data = manager.load_index_stocks('000300.SH') ``` ### 3. 缠论分析 ```python from factors.chan_factors.chan_integration import calculate_chan import pandas as pd # 加载数据 df = manager.load_stock('000001.SZ') # 计算缠论元素 calc = calculate_chan(df) # 获取笔、线段、中枢、买卖点 bi_list = calc.get_bi_list() seg_list = calc.get_seg_list() zs_list = calc.get_zs_list() bsp_list = calc.get_bsp_list() # 趋势分析 analysis = calc.get_trend_analysis() print(f"趋势方向: {analysis['direction']}") print(f"是否背驰: {analysis['divergence']}") ``` ### 4. 缠论策略回测 ```python from strategies.chan_strategies import BSP1Strategy import backtrader as bt cerebro = bt.Cerebro() # 使用第一类买卖点策略(趋势背驰反转) cerebro.addstrategy(BSP1Strategy, divergence_type='area', stop_loss=0.05, take_profit=0.10 ) # 添加数据 data = bt.feeds.PandasData(dataname=df) cerebro.adddata(data) cerebro.broker.setcash(1000000) cerebro.run() cerebro.plot() ``` ## 模块说明 ### 缠论模块 (`factors/chan_factors/`) | 功能 | 说明 | 核心类 | |------|------|--------| | 分型 | 顶分型/底分型识别 | `CKLine` | | 笔 | 严格笔/非严格笔计算 | `CBi` | | 线段 | 特征序列/线段破坏 | `CSeg` | | 中枢 | 中枢识别/级别扩展 | `CZS` | | 背驰 | MACD面积/峰值/斜率 | `is_divergence()` | | 买卖点 | 1/2/3类买卖点 | `CBS_Point` | ### 缠论策略 (`strategies/chan_strategies/`) | 策略 | 说明 | 适用场景 | |------|------|----------| | BSP1Strategy | 第一类买卖点(趋势背驰) | 抄底/逃顶 | | BSP2Strategy | 第二类买卖点(回调确认) | 二次入场 | | BSP3Strategy | 第三类买卖点(中枢突破) | 趋势加速 | | ZSShockStrategy | 中枢震荡(高抛低吸) | 震荡行情 | | MultiLevelStrategy | 多级别联立(区间套) | 精确入场 | ### 数据管理 (`data/`) | 模块 | 说明 | |------|------| | `unified_data_manager.py` | 统一数据管理器(推荐) | | `tushare_client.py` | Tushare客户端封装 | | `rate_limited_client.py` | 限速API客户端 | | `stocks/` | 股票数据目录 | ## 数据格式 所有股票数据统一存放在 `data/stocks/` 目录,每只股票的CSV包含35个字段: **价格数据(前复权)**: `open`, `high`, `low`, `close`, `pre_close`, `change`, `pct_chg`, `vol`, `amount` **价格数据(未复权)**: `open_nf`, `high_nf`, `low_nf`, `close_nf`, `pre_close_nf`, `change_nf`, `pct_chg_nf`, `vol_nf`, `amount_nf` **估值指标**: `turnover_rate`, `turnover_rate_f`, `volume_ratio`, `pe`, `pe_ttm`, `pb`, `ps`, `ps_ttm`, `dv_ratio`, `dv_ttm`, `total_share`, `float_share`, `free_share`, `total_mv`, `circ_mv` ## 演示脚本 ```bash # 缠论因子计算演示 python examples/chan_strategy_demo.py --mode factor # 缠论策略回测演示 python examples/chan_strategy_demo.py --mode strategy --stock 000001.SZ # 全部演示 python examples/chan_strategy_demo.py --mode all ``` ## 文档 - [使用指南](docs/使用指南.md) - 项目使用说明 - [架构文档](docs/架构文档.md) - 系统架构设计 - [缠论模块使用指南](docs/缠论模块使用指南.md) - 缠论功能详解 - [缠论开发总结](docs/缠论开发总结.md) - 开发成果汇总 - [数据目录说明](data/README.md) - 数据结构说明 ## 项目结构 ``` . ├── main.py # 主入口 ├── config.py # 系统配置 ├── scripts/ # 运行脚本(按功能分类) │ ├── download/ # 数据下载脚本 │ │ └── hs300.py # 沪深300数据下载 │ ├── backtest/ # 回测运行脚本 │ │ └── validation.py # 回测验证 │ └── README.md # 脚本使用说明 ├── data/ # 数据模块 │ ├── unified_data_manager.py # 统一数据管理器 │ ├── tushare_client.py # Tushare客户端 │ ├── rate_limited_client.py # 限速客户端 │ ├── stocks/ # 股票日线数据 │ └── README.md # 数据目录说明 ├── factors/ # 因子库 │ └── chan_factors/ # 缠论核心模块 ├── strategies/ # 策略模块 │ └── chan_strategies/ # 缠论策略 ├── backtest/ # 回测引擎模块 ├── selection/ # 选股模块 ├── simulation/ # 模拟交易模块 ├── visualization/ # 可视化模块 ├── examples/ # 示例代码(演示用法) ├── docs/ # 文档 └── logs/ # 日志目录 ``` ## Backtrader 核心概念 | 组件 | 说明 | 常用类 | |------|------|--------| | Cerebro | 回测引擎控制器 | `bt.Cerebro()` | | Strategy | 策略逻辑 | `bt.Strategy` | | Data Feed | 数据源 | `bt.feeds.GenericCSVData` | | Sizer | 仓位管理 | `bt.Sizer` | | Analyzer | 绩效分析 | `bt.analyzers.SharpeRatio` | | Observer | 图表观察 | `bt.observers.Broker` | ## 缠论核心概念 | 概念 | 说明 | |------|------| | 分型 | 顶分型/底分型,K线组合的转折点 | | 笔 | 连接相邻分型的走势段 | | 线段 | 由至少三笔组成的更高级别走势 | | 中枢 | 三个连续次级别走势的重叠部分 | | 背驰 | 价格与力度(MACD)的背离 | | 1类买卖点 | 趋势背驰后的转折点 | | 2类买卖点 | 1买/1卖后的回调确认点 | | 3类买卖点 | 中枢突破后的回抽确认点 | ## 参考 - [Backtrader 官方文档](https://www.backtrader.com/docu/) - [Backtrader GitHub](https://github.com/mementum/backtrader) - [chan.py GitHub](https://github.com/Vespa314/chan.py) - [缠中说禅博客](http://blog.sina.com.cn/chzhshch) ## 免责声明 本项目仅供学习和研究使用,不构成任何投资建议。投资有风险,入市需谨慎。