褚宏光 759042c5bd 性能优化:集成Numba加速,实现300+倍性能提升
核心改进:
- 新增 converging_triangle_optimized.py,使用Numba JIT编译优化7个核心函数
- 在 converging_triangle.py 末尾自动导入优化版本,无需手动配置
- 全量检测耗时从30秒降至<1秒(首次需3-5秒编译)

性能提升明细:
- pivots_fractal: 460x 加速
- pivots_fractal_hybrid: 511x 加速
- fit_boundary_anchor: 138x 加速
- calc_boundary_utilization: 195x 加速
- calc_fitting_adherence: 7x 加速
- calc_breakout_strength: 3x 加速

绘图功能增强:
- 添加 --plot-boundary-source 参数,支持选择高低价或收盘价拟合边界线
- 默认改为使用收盘价拟合(更平滑、更符合实际交易)
- 添加 --show-high-low 参数,可选显示日内高低价范围

技术特性:
- 自动检测并启用Numba加速,无numba时自动降级
- 结果与原版100%一致(误差<1e-6)
- 完整的性能测试和对比验证
- 零侵入性,原版函数作为备用

新增文件:
- src/converging_triangle_optimized.py - Numba优化版核心函数
- docs/README_性能优化.md - 性能优化文档索引
- docs/性能优化执行总结.md - 快速参考
- docs/性能优化完整报告.md - 完整技术报告
- docs/性能优化方案.md - 详细技术方案
- scripts/test_performance.py - 性能基线测试
- scripts/test_optimization_comparison.py - 优化对比测试
- scripts/test_full_pipeline.py - 完整流水线测试
- scripts/README_performance_tests.md - 测试脚本使用说明

修改文件:
- README.md - 添加性能优化说明和依赖
- src/converging_triangle.py - 集成优化版本导入
- scripts/pipeline_converging_triangle.py - 默认使用收盘价拟合
- scripts/plot_converging_triangles.py - 默认使用收盘价拟合
2026-01-28 17:22:13 +08:00

148 lines
6.3 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.

# Technical Patterns Lab
技术形态识别研究与实验仓库,聚焦收敛三角形等形态的批量检测、突破强度计算与可视化验证。
## 核心功能
- **收敛三角形检测**:基于枢轴点连线 + 几何约束 + 收敛度判定 + 相向收敛检查
- **批量滚动计算**:支持多股票 × 多交易日的历史检测
- **突破强度评分**0~1 连续分数,使用加权求和 + tanh 归一化
- **可视化验证**:自动绘制检测窗口与完整历史走势
## 最新更新
**2026-01-26**: 图表可视化改进 - 简洁/详细模式 🎨
- 新增图表详细模式开关:`SHOW_CHART_DETAILS``--show-details`
- 简洁模式(默认):仅显示收盘价、上沿线、下沿线
- 详细模式:额外显示所有枢轴点、拟合点、分段线等调试信息
- 详见:`docs/2026-01-26_图表详细模式功能.md`
**2026-01-26**: 改进枢轴点拟合逻辑,使用多点线性回归 📈
- 从"只用2个枢轴点"改为"分段选择3-4个代表性点"进行线性回归
- 拟合精度显著提升,抗噪声能力更强
- 检测质量提高误检率大幅降低19k → 6k过滤假三角形
- 详见:`docs/2026-01-26_枢轴点拟合改进.md` 📊
**2026-01-26**: 修复上沿线覆盖问题 🔧
- 修复 `fit_pivot_line()` 算法缺陷:确保上/下沿线覆盖所有枢轴点
- 问题:旧算法可能忽略全局最高/低点,导致拟合线横穿关键价格
- 修复:优先选择全局极值点,验证覆盖情况,自动调整选择
- 详见:`docs/2026-01-26_上沿线覆盖问题修复.md`
**2026-01-26**: 实施方案4混合策略支持实时模式
- 新增 `pivots_fractal_hybrid()` 函数,区分确认和候选枢轴点
- 支持标准模式(历史回测)和实时模式(实时选股)可配置切换
-`triangle_config.py` 中通过 `REALTIME_MODE` 控制
- 实时模式能捕获最近5天的枢轴点无15天滞后
**2026-01-26**: 增加"相向收敛"约束,过滤下降/上升通道误判
- ✅ 对称三角形(上沿↓ + 下沿↑)
- ✅ 上升三角形(上沿→ + 下沿↑)
- ✅ 下降三角形(上沿↓ + 下沿→)
- ❌ 下降通道(上沿↓ + 下沿↓)- 现已过滤
- ❌ 上升通道(上沿↑ + 下沿↑)- 现已过滤
详见:
- `docs/2026-01-26_图表详细模式功能.md` - 图表可视化改进 🎨
- `docs/方案4-混合策略详解.md` - 实时模式完整说明 ⭐
- `docs/实时模式使用指南.md` - 快速上手指南
- `docs/2026-01-26_相向收敛约束改进.md` - 过滤通道形态
- `docs/2026-01-26_上沿线覆盖问题修复.md` - 拟合线覆盖修复 🔧
- `docs/2026-01-26_枢轴点拟合改进.md` - 多点回归改进 📊
## 目录结构
```
technical-patterns-lab/
├── src/ # 核心算法
│ ├── converging_triangle.py # 收敛三角形检测
│ └── archive/ # 归档代码
├── scripts/ # 运行脚本
│ ├── pipeline_converging_triangle.py # 一键流水线
│ ├── run_converging_triangle.py # 批量检测
│ ├── report_converging_triangles.py # 生成报告
│ ├── plot_converging_triangles.py # 绘制图表
│ ├── triangle_config.py # 统一参数配置
│ └── archive/ # 归档脚本
├── data/ # 数据文件
│ ├── open.pkl, high.pkl, low.pkl, close.pkl, volume.pkl
├── outputs/ # 输出结果(已被 gitignore 忽略)
│ └── converging_triangles/ # 收敛三角形结果
└── docs/ # 文档
```
## 快速开始
```powershell
# 1. 激活环境
.\.venv\Scripts\Activate.ps1
# 2. 安装依赖(首次)
pip install numpy pandas matplotlib numba
# 3. 一键运行流水线(检测 + 报告 + 图表)
python scripts/pipeline_converging_triangle.py
```
### ⚡ 性能优化
本项目已集成 **Numba JIT 加速**,性能提升 **300+ 倍**
- 全量检测108只股票×500天< 1秒 🚀
- 无需手动配置自动检测并启用
- 如未安装 numba自动降级使用原版函数
**安装 Numba**推荐
```bash
pip install numba
```
详见`docs/README_性能优化.md` 📚
## 输出示例
```
检测结果: N 个有效三角形
- 向上突破: N 次
- 向下突破: N 次
- 当日报告: outputs/converging_triangles/report.md
- 图表目录: outputs/converging_triangles/charts/
- HTML查看器: outputs/converging_triangles/stock_viewer.html ⭐
```
**提示**使用 `--all-stocks` 参数可以为所有108只股票生成图表和HTML查看器方便全面查看
## 相关文档
### 📖 入门必读
- **`docs/功能与文档总览.md`** - 完整功能与文档索引 ⭐⭐⭐
- `USAGE.md` - 完整使用指南参数说明数据格式等)⭐
- `outputs/converging_triangles/QUICK_START.md` - HTML查看器快速指南 🚀
### 核心功能
- `docs/突破强度计算方法.md` - 突破强度的计算逻辑
- `docs/强度分计算示例.md` - 详细的计算步骤示例
- `docs/converging_triangles_outputs.md` - 输出字段说明
### 可视化
- `outputs/converging_triangles/QUICK_START.md` - HTML查看器快速指南 🚀
- `outputs/converging_triangles/README_viewer.md` - HTML查看器详细文档
- `docs/all-stocks-feature.md` - 全股票图表功能说明
- `docs/2026-01-27_HTML查看器功能.md` - HTML查看器设计与实现
- `docs/2026-01-26_图表详细模式功能.md` - 图表可视化改进 🎨
### 性能优化 ⚡
- **`docs/README_性能优化.md`** - 性能优化文档索引 ⭐⭐⭐
- `docs/性能优化执行总结.md` - 快速了解优化成果
- `docs/性能优化完整报告.md` - 完整技术报告
- `docs/性能优化方案.md` - 详细技术方案
- `scripts/README_performance_tests.md` - 性能测试使用说明
### 算法原理
- `docs/枢轴点分段选择算法详解.md` - 分段算法完整说明
- `docs/枢轴点检测原理.md` - 枢轴点算法详解
- `docs/枢轴点边界问题分析.md` - 边界盲区问题与解决方案
- `docs/2026-01-26_相向收敛约束改进.md` - 过滤通道形态的改进
- `docs/方案4-混合策略详解.md` - 实时模式完整说明
- `docs/实时模式使用指南.md` - 快速上手指南
- `docs/收敛三角形检测系统-使用指南.md` - 使用流程与参数说明