docs: 张飞添加技术选股回测代码完成报告
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
# 张飞 - 技术选股策略回测代码实现完成报告
|
||||
|
||||
**执行人**:张飞
|
||||
**任务编号**:TECHNICAL_SELECTION_BACKTEST_001
|
||||
**完成时间**:2026年3月24日 12:45 GMT+8
|
||||
**状态**:✅ 完成
|
||||
|
||||
---
|
||||
|
||||
## 任务目标
|
||||
|
||||
实现几种推荐的技术选股方案,并写出完整回测代码:
|
||||
1. MACD底背离 + 均线
|
||||
2. 布林带下轨 + 趋势
|
||||
3. 唐奇安通道突破
|
||||
|
||||
参考文档:`FINAL_FIVE_GENERALS_MULTI_FACTOR_STOCK_SELECTION_REPORT.md` 第一部分
|
||||
|
||||
---
|
||||
|
||||
## 实现成果
|
||||
|
||||
### 文件位置
|
||||
```
|
||||
sanguo_quant_live/technical-strategy/02-algorithms/technical_selection_backtest_final.py
|
||||
```
|
||||
|
||||
### 代码架构
|
||||
|
||||
#### 1. 数据结构
|
||||
- `Trade` - 交易记录(代码、日期、价格、收益等)
|
||||
- `BacktestResult` - 回测结果(绩效指标、交易列表)
|
||||
|
||||
#### 2. 技术指标计算器 (`TechnicalIndicators`)
|
||||
- `sma()` - 简单移动平均
|
||||
- `ema()` - 指数移动平均
|
||||
- `macd()` - MACD指标(DIF, DEA, MACD)
|
||||
- `bollinger_bands()` - 布林带(上轨、中轨、下轨)
|
||||
- `donchian_channel()` - 唐奇安通道(上轨、下轨)
|
||||
- `atr()` - 平均真实波幅
|
||||
|
||||
#### 3. 策略实现
|
||||
|
||||
**策略1:MACDDivergenceStrategy(MACD底背离+均线)**
|
||||
|
||||
买入条件:
|
||||
1. 股价创近期新低(20日最低)
|
||||
2. MACD DIF值没有创新低(底背离)
|
||||
3. 价格站上20日均线(趋势向上确认)
|
||||
|
||||
卖出条件:
|
||||
1. 收盘价跌破20日均线
|
||||
2. 止损:5%
|
||||
3. 止盈:20%
|
||||
|
||||
**策略2:BollingerBandsStrategy(布林带下轨+趋势)**
|
||||
|
||||
买入条件:
|
||||
1. 股价触及或跌破布林带下轨
|
||||
2. 均线系统多头排列(MA5 > MA10 > MA20)
|
||||
3. RSI < 35(超卖确认)
|
||||
|
||||
卖出条件:
|
||||
1. 收盘价站上布林带中轨(回归均值)
|
||||
2. 跌破20日均线(趋势破坏)
|
||||
3. 止损:5%
|
||||
4. 止盈:15%
|
||||
|
||||
**策略3:DonchianChannelStrategy(唐奇安通道突破)**
|
||||
|
||||
买入条件:
|
||||
1. 收盘价突破20日唐奇安通道上轨
|
||||
2. 前一日未突破(避免连续信号)
|
||||
|
||||
卖出条件:
|
||||
1. 收盘价跌破10日唐奇安通道下轨
|
||||
2. ATR止损:2倍ATR
|
||||
|
||||
#### 4. 回测引擎 (`BacktestEngine`)
|
||||
|
||||
功能:
|
||||
- 支持单持仓策略回测
|
||||
- 实时计算并跟踪交易
|
||||
- 自动处理开仓/平仓信号
|
||||
- 计算完整绩效指标
|
||||
- 输出详细的交易记录
|
||||
|
||||
绩效指标:
|
||||
- 总收益率
|
||||
- 年化收益率
|
||||
- 最大回撤
|
||||
- 夏普比率
|
||||
- 胜率
|
||||
- 平均盈利/亏损
|
||||
- 交易次数统计
|
||||
|
||||
---
|
||||
|
||||
## 代码特点
|
||||
|
||||
### 优点
|
||||
✅ **模块化设计** - 指标计算、策略逻辑、回测引擎分离清晰
|
||||
✅ **可扩展性强** - 新策略只需实现 check_buy_signal/check_sell_signal
|
||||
✅ **完整指标** - 覆盖主要技术分析指标(MACD、布林带、唐奇安、RSI、ATR)
|
||||
✅ **绩效完善** - 回测结果包含所有关键绩效指标
|
||||
✅ **注释清晰** - 每个策略的买卖条件都有详细说明
|
||||
✅ **模拟数据** - 内置生成随机测试数据,便于快速验证
|
||||
|
||||
### 已集成功能
|
||||
- 手续费计算(默认万三)
|
||||
- 固定仓位管理(默认80%资金)
|
||||
- 止损止盈机制
|
||||
- 强制平仓(回测结束时)
|
||||
- 交易记录完整追踪
|
||||
|
||||
---
|
||||
|
||||
## 使用示例
|
||||
|
||||
```python
|
||||
from technical_selection_backtest_final import *
|
||||
import pandas as pd
|
||||
|
||||
# 生成或加载数据
|
||||
data = generate_sample_data(days=500)
|
||||
# 或 data = pd.read_csv('your_stock_data.csv')
|
||||
|
||||
# 创建回测引擎
|
||||
engine = BacktestEngine(initial_capital=100000.0)
|
||||
|
||||
# 运行策略
|
||||
macd_strategy = MACDDivergenceStrategy()
|
||||
result = engine.backtest(data, macd_strategy, "MACD Divergence")
|
||||
|
||||
# 打印结果
|
||||
engine.print_result(result)
|
||||
|
||||
# 访问交易明细
|
||||
for trade in result.trades:
|
||||
print(f"{trade.code}: {trade.profit_pct:.2%}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 文档参考
|
||||
|
||||
策略设计基于 `FINAL_FIVE_GENERALS_MULTI_FACTOR_STOCK_SELECTION_REPORT.md` 第一部分技术指标推荐:
|
||||
|
||||
| 指标 | 胜率 | 年化收益预期 | A股评分 |
|
||||
|------|------|--------------|---------|
|
||||
| MACD底背离 + 均线 | ~60-65% | 20-30% | ⭐⭐⭐⭐⭐⭐ |
|
||||
| 布林带下轨 + 趋势 | ~58-63% | 18-28% | ⭐⭐⭐⭐⭐ |
|
||||
| 唐奇安通道突破 | 50-55% | 15-25% | ⭐⭐⭐⭐⭐ |
|
||||
|
||||
---
|
||||
|
||||
## 测试验证
|
||||
|
||||
已通过基本语法检查:
|
||||
- ✅ Python语法正确
|
||||
- ✅ 导入正常
|
||||
- ✅ 三种策略均可实例化
|
||||
- ✅ 回测引擎正常执行
|
||||
- ✅ 绩效计算无错误
|
||||
|
||||
模拟数据测试:
|
||||
- 生成500天随机K线数据
|
||||
- 三种策略回测均成功运行
|
||||
- 结果输出格式正确
|
||||
|
||||
---
|
||||
|
||||
## 代码提交
|
||||
|
||||
**Commit Hash**: `9884345a`
|
||||
|
||||
**Commit Message**:
|
||||
```
|
||||
feat: 张飞完成技术选股策略回测代码实现
|
||||
|
||||
实现了三种推荐技术选股策略的完整回测框架:
|
||||
|
||||
1. MACD底背离+均线策略
|
||||
- 买入:股价创新低但MACD未创新低(底背离),且站上20日均线
|
||||
- 卖出:跌破20日均线或止损5%/止盈20%
|
||||
|
||||
2. 布林带下轨+趋势策略
|
||||
- 买入:触及/跌破布林带下轨,均线多头排列(MA5>MA10>MA20),RSI<35
|
||||
- 卖出:站上中轨或跌破20日均线或止损5%/止盈15%
|
||||
|
||||
3. 唐奇安通道突破策略
|
||||
- 买入:收盘价突破20日通道上轨
|
||||
- 卖出:跌破10日通道下轨或ATR止损(2倍ATR)
|
||||
|
||||
包含完整回测引擎、绩效指标计算、交易记录跟踪。
|
||||
|
||||
作者:张飞
|
||||
日期:2026-03-24
|
||||
```
|
||||
|
||||
**Git Status**: ✅ 已提交并推送到 origin/main
|
||||
|
||||
---
|
||||
|
||||
## 后续建议
|
||||
|
||||
1. **实盘数据接入** - 使用 akshare 或 Tushare 获取真实A股数据
|
||||
2. **多股票回测** - 扩展为同时跟踪多只股票的回测
|
||||
3. **参数优化** - 对各策略参数进行网格搜索优化
|
||||
4. **绩效可视化** - 添加资金曲线、回撤曲线等图表
|
||||
5. **风险管理增强** - 集成司马懿的风控模块
|
||||
|
||||
---
|
||||
|
||||
## 任务总结
|
||||
|
||||
✅ **已完成**:
|
||||
- 三种技术选股策略完整实现
|
||||
- 回测引擎框架搭建
|
||||
- 绩效指标计算模块
|
||||
- 交易记录追踪系统
|
||||
- 代码测试验证
|
||||
- Git提交推送
|
||||
|
||||
**代码质量**:模块清晰、注释完善、易于扩展
|
||||
|
||||
**交付状态**:已完成,可投入使用
|
||||
|
||||
---
|
||||
|
||||
**张飞 - 技术选股策略实现完毕** ⚔️
|
||||
|
||||
*"俺张飞粗中有细,代码写得利落,回测框架结实,三位将军的策略都实现了,丞相可以放心用!"*
|
||||
Reference in New Issue
Block a user