technical-patterns-lab/docs/功能与文档总览.md
褚宏光 22582851a1 Enhance converging triangle detection with new features and documentation updates
- Introduced an interactive HTML stock viewer for visualizing strength scores and filtering stocks based on user-defined thresholds.
- Added `--all-stocks` parameter to generate charts for all 108 stocks, including those not meeting convergence criteria.
- Implemented a new scoring system for breakout strength, incorporating fitting adherence to improve accuracy.
- Updated multiple documentation files, including usage instructions and feature overviews, to reflect recent enhancements.
- Improved error handling and file naming conventions to ensure compatibility across platforms.
2026-01-27 16:17:28 +08:00

409 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 收敛三角形检测系统 - 功能与文档总览
> 更新时间2026-01-27
> 版本v1.0
## 🎯 核心功能
### 1. 收敛三角形检测
- 自动识别K线中的收敛三角形形态
- 枢轴点检测与拟合算法
- 相向收敛约束(过滤通道形态)
- 突破方向判断(向上/向下/无)
### 2. 强度分评分系统
- **价格突破**50%):突破幅度评估
- **收敛程度**20%):蓄势充分度
- **成交量**15%):放量确认
- **拟合贴合度**15%):形态纯度
### 3. 可视化系统
- **静态图表**K线图 + 三角形趋势线
- **HTML查看器**:交互式强度分筛选
- **详细模式**:显示枢轴点和拟合点
### 4. 批量处理
- 支持多日期、多股票批量检测
- 自动生成报告和图表
- 一键流水线脚本
## 📊 输出内容
### 1. 数据文件
```
outputs/converging_triangles/
├── all_results.csv # 完整检测结果CSV格式
├── YYYYMMDD_stocks.pkl # 单日结果Pickle格式
└── report.md # 可读性报告
```
### 2. 可视化
```
outputs/converging_triangles/
├── stock_viewer.html # HTML交互式查看器 ⭐
├── QUICK_START.md # 查看器快速指南
├── README_viewer.md # 查看器详细文档
└── charts/ # 图表图片
├── YYYYMMDD_代码_名称.png
└── YYYYMMDD_代码_名称_detail.png # 详细模式
```
## 🚀 快速开始
### 最简使用3步
```powershell
# 1. 激活环境(首次需要创建和安装依赖)
python -m venv .venv
.venv\Scripts\activate
pip install numpy pandas matplotlib
# 2. 一键运行生成所有数据和HTML查看器
python scripts/pipeline_converging_triangle.py --all-stocks
# 3. 打开HTML查看器
start outputs/converging_triangles/stock_viewer.html
```
### 常用命令
```powershell
# 指定日期
python scripts/pipeline_converging_triangle.py --date 20260120 --all-stocks
# 详细模式(显示枢轴点和拟合点)
python scripts/pipeline_converging_triangle.py --show-details --all-stocks
# 只生成HTML数据已存在
python scripts/generate_stock_viewer.py --all-stocks
# 默认模式(仅满足条件的股票)
python scripts/pipeline_converging_triangle.py
```
## 📚 文档体系
### 入门文档(必读)
1. **README.md** - 项目概述和快速开始
2. **USAGE.md** - 完整使用指南(参数、数据格式等)⭐
3. **outputs/converging_triangles/QUICK_START.md** - HTML查看器快速指南
### 核心功能文档
4. **docs/突破强度计算方法.md** - 强度分算法详解v3.0
5. **docs/强度分计算示例.md** - 详细计算步骤与示例
6. **docs/all-stocks-feature.md** - 全股票图表功能说明
7. **docs/2026-01-27_HTML查看器功能.md** - HTML查看器设计与实现
### 算法原理文档
8. **docs/枢轴点检测原理.md** - 枢轴点算法详解
9. **docs/枢轴点分段选择算法详解.md** - 拟合点选择算法 ⭐
10. **docs/枢轴点边界问题分析.md** - 边界盲区问题与解决方案
11. **docs/2026-01-26_相向收敛约束改进.md** - 过滤通道形态的改进
12. **docs/2026-01-26_枢轴点检测与可视化修复.md** - 末端枢轴点问题修复
### 高级功能文档
13. **docs/方案4-混合策略详解.md** - 实时模式完整说明 ⭐
14. **docs/实时模式使用指南.md** - 实时模式快速上手
15. **docs/2026-01-26_图表详细模式功能.md** - 图表可视化改进
16. **docs/file-naming-fix.md** - ST股票文件名修复
### 其他文档
17. **docs/converging_triangles_outputs.md** - 输出字段说明
18. **docs/收敛三角形检测系统-使用指南.md** - 旧版使用指南
19. **outputs/converging_triangles/README_viewer.md** - HTML查看器详细文档
### 讨论与记录
20. **discuss/20260126-讨论.md** - 问题分析与解决方案记录
## 🎨 HTML查看器使用指南
### 功能特性
-**交互式滑块**0.00 ~ 1.00 实时筛选强度分
-**全股票模式**显示所有108只股票包括无形态的
-**实时统计**:总数、筛选数、平均强度分
-**图表放大**:点击图表全屏查看
-**颜色分级**:绿色(≥0.5) / 黄色(0.3~0.5) / 灰色(<0.3)
- **响应式设计**适配PC/平板/手机
- **离线可用**数据内嵌无需服务器
### 使用场景
**场景1快速筛选强势股**
```
1. 拖动滑块到 0.5
2. 只显示强度分 ≥ 0.5 的股票
3. 点击图表查看细节
```
**场景2全面浏览**
```
1. 滑块保持在 0.00
2. 显示所有 108 只股票
3. 按强度分从高到低排序浏览
```
**场景3渐进式分析**
```
1. 先看 ≥ 0.5 的强势股
2. 降到 ≥ 0.4 查看次强势
3. 降到 ≥ 0.3 查看中等强度
4. 对比不同强度级别的形态差异
```
### 数据更新
```powershell
# 每天收盘后运行
python scripts/pipeline_converging_triangle.py --all-stocks
# 刷新浏览器
F5
```
## 🔧 命令行参数
### pipeline_converging_triangle.py
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `--date` | 检测日期YYYYMMDD | 最新交易日 |
| `--all-stocks` | 为所有108只股票生成图表 | |
| `--show-details` | 图表显示枢轴点和拟合点 | |
| `--skip-detection` | 跳过检测仅生成报告和图表 | |
| `--skip-viewer` | 跳过HTML查看器生成 | |
### generate_stock_viewer.py
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `--date` | 指定日期YYYYMMDD | 最新日期 |
| `--all-stocks` | 显示所有108只股票 | |
| `--input` | 输入CSV路径 | `outputs/.../all_results.csv` |
| `--output` | 输出HTML路径 | `outputs/.../stock_viewer.html` |
### plot_converging_triangles.py
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `--date` | 绘图日期YYYYMMDD | 最新日期 |
| `--all-stocks` | 为所有股票生成图表 | |
| `--show-details` | 显示枢轴点和拟合点 | |
| `--output-dir` | 输出目录 | `outputs/.../charts` |
## 📦 数据格式
### all_results.csv 字段说明
| 字段 | 类型 | 说明 |
|------|------|------|
| `date` | int | 检测日期YYYYMMDD |
| `stock_idx` | int | 股票索引 |
| `stock_code` | str | 股票代码如SH600000 |
| `stock_name` | str | 股票名称 |
| `breakout_strength_up` | float | 向上突破强度分0~1 |
| `breakout_strength_down` | float | 向下突破强度分0~1 |
| `breakout_dir` | str | 突破方向up/down/none |
| `width_ratio` | float | 宽度比收敛程度 |
| `touches_upper` | int | 上沿触碰次数 |
| `touches_lower` | int | 下沿触碰次数 |
| `volume_confirmed` | str | 放量确认/ |
| `price_score_*` | float | 价格突破分项得分 |
| `convergence_score` | float | 收敛程度分项得分 |
| `volume_score` | float | 成交量分项得分 |
| `fit_adherence_*` | float | 拟合贴合度分项得分 |
### HTML内嵌数据格式
```javascript
{
"code": "SH600000",
"name": "浦发银行",
"idx": 0,
"strength": 0.381, // 强度分0~1
"strengthUp": 0.381, // 向上突破强度
"strengthDown": 0.0, // 向下突破强度
"direction": "down", // 突破方向
"widthRatio": 0.13, // 宽度比
"touchesUpper": 3, // 上沿触碰次数
"touchesLower": 4, // 下沿触碰次数
"volumeConfirmed": "否", // 放量确认
"date": 20260120, // 日期
"chartPath": "charts/...", // 图表路径
"hasTriangle": true // 是否有三角形形态
}
```
## 🎯 典型工作流
### 工作流1日常选股
```powershell
# 1. 每日收盘后运行(默认模式)
python scripts/pipeline_converging_triangle.py
# 2. 查看报告(快速浏览)
cat outputs/converging_triangles/report.md
# 3. 打开HTML查看器交互式筛选
start outputs/converging_triangles/stock_viewer.html
# 4. 调整滑块到 0.5,查看强势股
```
### 工作流2全面研究
```powershell
# 1. 生成所有股票的数据(全股票模式)
python scripts/pipeline_converging_triangle.py --all-stocks --show-details
# 2. 打开HTML查看器
start outputs/converging_triangles/stock_viewer.html
# 3. 滑块保持 0.00,浏览所有 108 只股票
# 4. 对比有/无形态的股票差异
# 5. 点击图表查看详细的枢轴点和拟合点
```
### 工作流3算法调试
```powershell
# 1. 指定日期,详细模式
python scripts/pipeline_converging_triangle.py --date 20260120 --all-stocks --show-details
# 2. 查看图表目录
ls outputs/converging_triangles/charts/*_detail.png
# 3. 验证枢轴点识别和拟合效果
# 4. 调整算法参数(如果需要)
# 5. 重新运行验证
```
### 工作流4历史回测
```powershell
# 批量检测多个日期
for date in 20260115 20260116 20260117 20260120; do
python scripts/pipeline_converging_triangle.py --date $date --all-stocks
done
# 合并结果分析
python -c "import pandas as pd; df = pd.read_csv('outputs/converging_triangles/all_results.csv'); print(df.groupby('date')['breakout_strength_up'].mean())"
```
## 🔬 核心算法
### 1. 枢轴点检测
- **标准区域**前220天左右15天窗口
- **灵活区域**后15天对称短窗口
- **处理NaN值**使用 `nanmin/nanmax`
- **末端候选**包含未确认的潜在枢轴点
### 2. 拟合点选择
- **迭代离群点移除**3轮迭代每轮移除最差点
- **Z-score阈值**2.0正态分布下约5%异常点
- **最小点数**保留至少3个枢轴点
### 3. 收敛判断
- **相向收敛**上沿斜率 < 0下沿斜率 > 0
- **宽度比**:收敛端宽度 / 起始端宽度
- **触碰次数**上沿≥2次下沿≥2次
### 4. 强度分计算
```python
强度分 = 价格突破×50% + 收敛程度×20% + 成交量×15% + 拟合贴合度×15%
其中
- 价格突破 = tanh(突破幅度% × 15) # 0~1
- 收敛程度 = 1 - width_ratio # 0~1
- 成交量 = 1 if 放量确认 else 0 # 0或1
- 拟合贴合度 = exp(-mean_rel_error × 20) # 0~1
```
## 🐛 已知问题与限制
1. **数据覆盖**:部分股票可能因停牌、退市缺少数据
2. **窗口限制**检测窗口固定240天可能漏掉更早的形态
3. **图片路径**HTML查看器需要与charts目录在同一父目录
4. **浏览器兼容**推荐Chrome 90+,其他浏览器可能有兼容问题
## 📈 性能指标
- **检测速度**108只股票约30秒Intel i7
- **图表生成**108张图约1分钟
- **HTML加载**:数据内嵌,<1秒即可打开
- **内存占用**峰值约500MB数据加载时
## 🎓 学习路径
### 新手路径1小时
1. 阅读 `README.md` - 了解项目概述5分钟
2. 运行快速开始命令10分钟
3. 打开HTML查看器体验交互15分钟
4. 阅读 `QUICK_START.md` - 掌握基本用法10分钟
5. 查看几个图表示例20分钟
### 进阶路径(半天)
6. 阅读 `USAGE.md` - 掌握所有参数30分钟
7. 阅读 `docs/突破强度计算方法.md` - 理解强度分1小时
8. 阅读 `docs/强度分计算示例.md` - 跟随示例计算1小时
9. 尝试不同参数组合观察效果1小时
### 专家路径1-2天
10. 阅读所有算法原理文档3小时
11. 阅读源代码 `src/converging_triangle.py`2小时
12. 尝试修改参数调整算法2小时
13. 运行历史回测分析有效性2小时
14. 阅读讨论文档理解设计决策1小时
## 🤝 贡献与反馈
- **问题反馈**在讨论文档中记录问题和解决方案
- **功能建议** `docs/` 目录创建新文档记录设计思路
- **代码改进**遵循现有代码风格添加完整注释和文档
## 📝 版本历史
- **v1.0**2026-01-27
- HTML可视化查看器
- 全股票图表生成
- 强度分评分系统v3.0
- 枢轴点末端识别修复
- 相向收敛约束
- 拟合点离群值移除
- **v0.9**2026-01-26
- 枢轴点检测系统
- 收敛三角形识别
- 图表详细模式
- 批量处理流水线
## 🔗 快速链接
### 必读文档
- [README.md](../README.md) - 项目概述
- [USAGE.md](../USAGE.md) - 使用指南
- [QUICK_START.md](../outputs/converging_triangles/QUICK_START.md) - HTML查看器快速指南
### 热门文档
- [强度分计算方法](./突破强度计算方法.md)
- [HTML查看器功能](./2026-01-27_HTML查看器功能.md)
- [全股票功能](./all-stocks-feature.md)
- [枢轴点算法详解](./枢轴点分段选择算法详解.md)
### 输出文件
- `outputs/converging_triangles/stock_viewer.html` - HTML查看器
- `outputs/converging_triangles/all_results.csv` - 检测结果
- `outputs/converging_triangles/charts/` - 图表图片
---
**最后更新**2026-01-27
**维护者**技术形态检测实验室