technical-patterns-lab/discuss/20260128-讨论.md
褚宏光 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

82 lines
3.5 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.

# 上/下沿线,有些点没有碰到线的边缘
![](images/2026-01-28-11-16-46.png)
![](images/2026-01-28-11-16-56.png)
## 问题
视觉上看图时,上沿/下沿线与收盘价曲线偏离明显,部分连接枢轴点看起来距离真实收盘价点较远。
## 原因
- 枢轴点与边界拟合使用的是 High/Low高低价而主图只绘制了收盘价曲线出现长上影/下影时会放大偏离感。
- 采用“锚点+覆盖率”的边界拟合法,目标是包络多数枢轴点而非贴合收盘价,因此线会更保守、更远离收盘价。
## 解决方案
![](images/2026-01-28-15-56-12.png)
已在绘图脚本加入仅影响展示的两类开关(不改变检测结果):
- 显示日内高低价范围,让边界线与高低价的关系更直观:`--show-high-low`
- 绘图时将边界线拟合源切换为收盘价以改善视觉贴合:`--plot-boundary-source close`
示例:
- `python scripts/plot_converging_triangles.py --show-high-low`
- `python scripts/plot_converging_triangles.py --plot-boundary-source close`
## 后续发现的问题(已修复)
### 问题1拟合贴合度显示为0
**现象**:使用 `--plot-boundary-source close` 时,图表标题中的拟合贴合度显示为 0.000
**原因**
- 检测算法始终使用高低价计算拟合贴合度
- 绘图时使用收盘价拟合边界线
- 两者数据源不一致,导致显示的贴合度与实际的拟合线不匹配
**修复**
- 在绘图脚本中,当使用收盘价拟合时,重新基于收盘价和实际拟合线计算贴合度
- 在标题中明确标注使用的是"拟合贴合度(收盘价)"还是"拟合贴合度(高低价)"
### 问题2枢轴点显示位置不匹配
**现象**:使用 `--plot-boundary-source close` 时,详细模式下的枢轴点标记仍然显示在高低价位置,而不是收盘价位置
**原因**
- 枢轴点标记的Y坐标始终使用 `high_win[ph_idx]``low_win[pl_idx]`
- 即使拟合线使用收盘价,标记位置仍基于高低价
**修复**
- 根据 `plot_boundary_source` 参数选择枢轴点标记的Y坐标
- 使用收盘价拟合时,枢轴点标记也显示在收盘价位置
### 问题3流水线脚本缺少参数支持
**现象**`pipeline_converging_triangle.py` 无法传递 `--plot-boundary-source` 参数给绘图脚本
**修复**
-`pipeline_converging_triangle.py` 中添加 `--plot-boundary-source` 参数
- 将参数传递给 `plot_converging_triangles.py`
- 在流水线开始时显示当前使用的边界线拟合数据源
## 使用说明
### 单独绘图
```bash
# 使用收盘价拟合边界线
python scripts/plot_converging_triangles.py --plot-boundary-source close
# 显示高低价范围
python scripts/plot_converging_triangles.py --show-high-low
# 组合使用
python scripts/plot_converging_triangles.py --plot-boundary-source close --show-high-low
```
### 流水线处理
```bash
# 使用收盘价拟合边界线处理所有股票
python scripts/pipeline_converging_triangle.py --clean --all-stocks --plot-boundary-source close
```
## 注意事项
- `--plot-boundary-source` 参数仅影响绘图展示,**不改变检测算法的结果**
- 检测算法始终使用高低价进行枢轴点检测和边界拟合
- 使用收盘价拟合时,显示的拟合贴合度会重新计算,以匹配实际显示的拟合线
- 强度分中的其他部分(价格、收敛、成交量、边界利用率)仍基于检测算法的结果
# 批量检测算法优化
![](images/2026-01-28-17-13-37.png)