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

4.5 KiB
Raw Permalink Blame History

问题1: 末端枢轴点未识别

现象: 图表最右边明显的低点/高点没有被标记为枢轴点

根因:

  1. 数据中有空值(NaN)导致比较失效
  2. 只检测窗口前235天的枢轴点最后5天被忽略
  3. 绘图时丢弃了末端的"候选枢轴点"

解决:

  1. nanmin/nanmax 替代 min/max,自动跳过空值
  2. 把"灵活区域"从5天扩大到15天覆盖更多末端数据
  3. 对称短窗口右边只有N天时左边也只看N天而不是固定15天
  4. 绘图时把"确认枢轴点"和"候选枢轴点"合并显示

详见 枢轴点检测与可视化修复


问题2: 拟合点选择不合理

现象: 某些"弱"枢轴点如5.8元的低高点)被用于拟合,拉偏趋势线

解决: 迭代离群点移除算法

  1. 先用所有点画一条拟合线
  2. 找出离拟合线太远的"异常点"
  3. 去掉最差的那个点,重新画线
  4. 重复2-3次直到没有异常点

详见 枢轴点拟合算法详解


问题3: 非收敛形态误判

现象: "上升三角形"(上沿水平)被误判为"收敛三角形" 解决: 收紧斜率限制

  • 上沿必须向下(或至少水平),不能向上
  • 下沿必须向上(或至少水平),不能向下
  • 这样就能过滤掉"上升三角形"和"下降通道"等非收敛形态

待办: 强度分评分系统(已完成)

分量 权重 说明
价格突破 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 - 包含完整计算步骤与多场景对比
  • 图表显示:已集成到图表标题第三行
  • 可视化查看器outputs/converging_triangles/stock_viewer.html - 交互式强度分筛选

新增功能: HTML可视化查看器2026-01-27

功能亮点:

  • 🎚️ 交互式滑块实时调整强度分阈值0.00 ~ 1.00
  • 📊 全股票模式显示所有108只股票无形态的强度分为0
  • 📈 统计面板:总数、筛选数、平均强度分实时更新
  • 🔍 图表放大:点击图表全屏查看细节
  • 📱 响应式设计:自适应各种屏幕尺寸
  • 💾 离线可用数据内嵌在HTML中无需服务器

使用方法:

# 一键生成(推荐)
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分