technical-patterns-lab/discuss/20260126-讨论.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

127 lines
4.5 KiB
Markdown
Raw Permalink 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.

## 问题1: 末端枢轴点未识别
![](images/2026-01-26-15-44-13.png)
**现象**: 图表最右边明显的低点/高点没有被标记为枢轴点
**根因**:
1. 数据中有空值(NaN)导致比较失效
2. 只检测窗口前235天的枢轴点最后5天被忽略
3. 绘图时丢弃了末端的"候选枢轴点"
**解决**:
1.`nanmin/nanmax` 替代 `min/max`,自动跳过空值
2. 把"灵活区域"从5天扩大到15天覆盖更多末端数据
3. 对称短窗口右边只有N天时左边也只看N天而不是固定15天
4. 绘图时把"确认枢轴点"和"候选枢轴点"合并显示
详见 [枢轴点检测与可视化修复](../docs/2026-01-26_枢轴点检测与可视化修复.md)
---
## 问题2: 拟合点选择不合理
![](images/2026-01-26-15-48-56.png)
**现象**: 某些"弱"枢轴点如5.8元的低高点)被用于拟合,拉偏趋势线
![](images/2026-01-26-15-50-58.png)
**解决**: 迭代离群点移除算法
1. 先用所有点画一条拟合线
2. 找出离拟合线太远的"异常点"
3. 去掉最差的那个点,重新画线
4. 重复2-3次直到没有异常点
详见 [枢轴点拟合算法详解](../docs/枢轴点分段选择算法详解.md)
---
## 问题3: 非收敛形态误判
**现象**: "上升三角形"(上沿水平)被误判为"收敛三角形"
![](images/2026-01-26-18-36-50.png)
**解决**: 收紧斜率限制
- 上沿必须向下(或至少水平),不能向上
- 下沿必须向上(或至少水平),不能向下
- 这样就能过滤掉"上升三角形"和"下降通道"等非收敛形态
---
## ~~待办~~: 强度分评分系统(已完成)
![](images/2026-01-27-10-11-59.png)
| 分量 | 权重 | 说明 |
|------|------|------|
| 价格突破 | 50% | 突破幅度未突破时为0 |
| 收敛程度 | 20% | 蓄势充分度 |
| 成交量 | 15% | 放量确认 |
| 拟合贴合度 | 15% | 枢轴点到拟合线的平均距离,反映形态纯度 |
**强度分说明**:
- 综合评估收敛三角形的质量,无论是否突破都计算得分
- 可用于评估"待突破"形态的潜在价值,或"已突破"形态的有效性
- 公式:`强度分 = 价格×50% + 收敛×20% + 成交量×15% + 拟合贴合度×15%`
**拟合贴合度计算**:
- 计算选中的枢轴点到对应拟合线(上沿/下沿)的相对距离
- 距离越小,说明形态越标准、越"纯净"
- 距离大表示形态杂乱,枢轴点散乱分布
- 使用指数衰减函数 `exp(-mean_rel_error * 20)` 归一化为 0~1 分数
**实施状态**: ✅ 已完成2026-01-27
- 代码实现:`src/converging_triangle.py`
- 详细文档:`docs/突破强度计算方法.md` (v3.0)
- **计算示例**[强度分计算示例.md](../docs/强度分计算示例.md) - 包含完整计算步骤与多场景对比 ⭐
- 图表显示:已集成到图表标题第三行
- **可视化查看器**`outputs/converging_triangles/stock_viewer.html` - 交互式强度分筛选 ⭐
---
## 新增功能: HTML可视化查看器2026-01-27
![](images/stock-viewer-demo.png)
**功能亮点**:
- 🎚️ **交互式滑块**实时调整强度分阈值0.00 ~ 1.00
- 📊 **全股票模式**显示所有108只股票无形态的强度分为0
- 📈 **统计面板**:总数、筛选数、平均强度分实时更新
- 🔍 **图表放大**:点击图表全屏查看细节
- 📱 **响应式设计**:自适应各种屏幕尺寸
- 💾 **离线可用**数据内嵌在HTML中无需服务器
**使用方法**:
```powershell
# 一键生成(推荐)
python scripts/pipeline_converging_triangle.py --all-stocks
# 单独生成HTML
python scripts/generate_stock_viewer.py --all-stocks # 显示所有108只
python scripts/generate_stock_viewer.py # 仅显示满足条件的
# 打开查看器
start outputs/converging_triangles/stock_viewer.html
```
**技术特性**:
- 数据内嵌方案解决浏览器CORS限制可直接双击打开
- 紫色渐变主题:现代化视觉设计
- 实时过滤:无延迟的交互体验
- 颜色分级:绿色(≥0.5)/黄色(0.3~0.5)/灰色(<0.3)
**相关文档**:
- 快速指南`outputs/converging_triangles/QUICK_START.md`
- 详细文档`outputs/converging_triangles/README_viewer.md`
- 功能说明`docs/2026-01-27_HTML查看器功能.md`
---
## 附注
**tanh函数**:
- 双曲正切函数输出范围 (-1, 1)用于归一化价格突破幅度
- 公式`price_score = tanh(突破幅度% × 15)`
- 特点小幅突破时敏感分数增长快大幅突破时饱和分数增长慢
- 示例1%→0.15分3%→0.42分5%→0.64分10%→0.91分