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

9.0 KiB
Raw Permalink Blame History

强度分计算详解与示例

创建时间2026-01-27
版本v1.0

概述

强度分是收敛三角形形态的综合质量评分0~1用于评估

  • 待突破形态的潜在价值(形态质量)
  • 已突破形态的有效性(突破可信度)

核心公式

强度分 = 价格突破×50% + 收敛程度×20% + 成交量×15% + 拟合贴合度×15%

计算流程

步骤1价格突破分数权重 50%

公式

price_score = tanh(突破幅度% × 15)

计算步骤

场景A向上突破

当前收盘价 = 10.5元
上沿线价格 = 10.0元

1. 计算突破幅度百分比
   突破幅度 = (10.5 - 10.0) / 10.0 = 0.05 = 5%

2. 应用 tanh 函数归一化
   price_score = tanh(0.05 × 15) = tanh(0.75) ≈ 0.64

3. 乘以权重计算贡献
   价格贡献 = 0.64 × 0.50 = 0.32

场景B未突破

当前收盘价 = 9.5元
上沿线价格 = 10.0元
下沿线价格 = 9.0元

价格在三角形内部,未突破任何一边
→ 突破幅度 = 0
→ price_score = 0
→ 价格贡献 = 0

映射表

突破幅度 price_score 贡献分数 (×50%) 说明
0% 0.00 0.000 未突破
1% 0.15 0.075 微弱突破
2% 0.29 0.145 轻度突破
3% 0.42 0.210 中等突破
5% 0.64 0.320 强势突破
8% 0.83 0.415 大幅突破
10% 0.91 0.455 极强突破

步骤2收敛程度分数权重 20%

公式

convergence_score = 1 - width_ratio
width_ratio = 三角形末端宽度 / 起始宽度

计算步骤

三角形起始(窗口开始):
  上沿价格 = 12.0元
  下沿价格 = 8.0元
  起始宽度 = 12.0 - 8.0 = 4.0元

三角形末端(检测日期):
  上沿价格 = 10.0元
  下沿价格 = 9.0元
  末端宽度 = 10.0 - 9.0 = 1.0元

1. 计算宽度比
   width_ratio = 1.0 / 4.0 = 0.25

2. 计算收敛分数
   convergence_score = 1 - 0.25 = 0.75

3. 乘以权重计算贡献
   收敛贡献 = 0.75 × 0.20 = 0.15

映射表

width_ratio 收敛程度 convergence_score 贡献分数 (×20%) 说明
0.80 较弱 0.20 0.040 收窄20%
0.60 中等 0.40 0.080 收窄40%
0.40 较强 0.60 0.120 收窄60%
0.25 很强 0.75 0.150 收窄75%
0.10 极强 0.90 0.180 收窄90%
0.05 极度收敛 0.95 0.190 收窄95%

解读:三角形收得越窄,蓄势越充分,突破越有力。


步骤3成交量分数权重 15%

公式

vol_score = min(1, max(0, volume_ratio - 1))
volume_ratio = 当日成交量 / 近20日平均成交量

计算步骤

当日成交量 = 150万股
近20日平均成交量 = 100万股

1. 计算成交量倍数
   volume_ratio = 150 / 100 = 1.5

2. 计算成交量分数
   vol_score = min(1, max(0, 1.5 - 1)) = 0.5

3. 乘以权重计算贡献
   成交量贡献 = 0.5 × 0.15 = 0.075

映射表

volume_ratio 成交量状态 vol_score 贡献分数 (×15%) 说明
0.8 缩量 0.00 0.000 成交量萎缩
1.0 平量 0.00 0.000 与均值持平
1.3 温和放量 0.30 0.045 放量30%
1.5 中度放量 0.50 0.075 放量50%
2.0 大幅放量 1.00 0.150 放量100%
3.0 巨量 1.00 0.150 放量200%(上限)

解读:放量突破更可信,但不是必要条件(有些有效突破不放量)。


步骤4拟合贴合度分数权重 15%

公式

fitting_score = exp(-mean_rel_error × 20)
mean_rel_error = 枢轴点到拟合线的平均相对误差

计算步骤

上沿拟合贴合度

选中的高点枢轴点3个
  点1实际价格 = 11.0元,拟合线价格 = 11.1元
  点2实际价格 = 10.5元,拟合线价格 = 10.4元
  点3实际价格 = 10.2元,拟合线价格 = 10.1元

1. 计算各点相对误差
   误差1 = |11.0 - 11.1| / 11.1 = 0.009 = 0.9%
   误差2 = |10.5 - 10.4| / 10.4 = 0.010 = 1.0%
   误差3 = |10.2 - 10.1| / 10.1 = 0.010 = 1.0%

2. 计算平均相对误差
   mean_rel_error = (0.009 + 0.010 + 0.010) / 3 ≈ 0.010 = 1.0%

3. 计算上沿贴合度
   adherence_upper = exp(-0.01 × 20) = exp(-0.2) ≈ 0.82

下沿拟合贴合度(假设同样计算得到 0.82

综合贴合度

fitting_score = (adherence_upper + adherence_lower) / 2
              = (0.82 + 0.82) / 2
              = 0.82

拟合贴合度贡献 = 0.82 × 0.15 = 0.123

映射表

平均相对误差 fitting_score 贡献分数 (×15%) 形态评价
0% 1.00 0.150 完美拟合
0.5% 0.90 0.135 极佳
1% 0.82 0.123 优秀
2% 0.67 0.100 良好
3% 0.55 0.082 较好
5% 0.37 0.055 一般
10% 0.14 0.021 较差

解读:枢轴点越贴合拟合线,形态越标准、越"纯净"。


完整计算示例

案例:中度向上突破

输入数据

├─ 当前收盘价: 10.5元
├─ 上沿线价格: 10.0元  
├─ 下沿线价格: 9.0元
├─ 三角形起始宽度: 4.0元 (12-8)
├─ 三角形末端宽度: 1.0元 (10-9)
├─ 当日成交量: 150万股
├─ 20日平均成交量: 100万股
└─ 枢轴点平均相对误差: 1.0%

计算过程

分量 原始分数 权重 贡献分数 计算过程
价格突破 0.64 ×50% 0.320 tanh(5% × 15) ≈ 0.64
收敛程度 0.75 ×20% 0.150 1 - 0.25 = 0.75
成交量 0.50 ×15% 0.075 1.5 - 1 = 0.5
拟合贴合度 0.82 ×15% 0.123 exp(-1% × 20) ≈ 0.82
强度分总计 - - 0.668 四项求和

结果

强度分 ≈ 0.67

评级中度突破0.5~0.7区间)
建议:有效突破,可作为参考信号

不同场景对比

场景1强势突破0.85分)

特征:
✓ 大幅突破8%
✓ 极度收敛width_ratio = 0.05
✓ 大幅放量2倍
✓ 形态标准1%误差)

计算:
价格贡献 = 0.83 × 0.50 = 0.415
收敛贡献 = 0.95 × 0.20 = 0.190
成交量贡献 = 1.00 × 0.15 = 0.150
拟合贡献 = 0.82 × 0.15 = 0.123
────────────────────────────────
强度分 = 0.878 ≈ 0.88 (强势突破)

场景2待突破形态0.35分)

特征:
✗ 未突破0%
✓ 收敛较好width_ratio = 0.25
✗ 未放量1倍
✓ 形态标准1%误差)

计算:
价格贡献 = 0.00 × 0.50 = 0.000  ← 未突破
收敛贡献 = 0.75 × 0.20 = 0.150
成交量贡献 = 0.00 × 0.15 = 0.000
拟合贡献 = 0.82 × 0.15 = 0.123
────────────────────────────────
强度分 = 0.273 ≈ 0.27 (待突破)

解读:虽然未突破,但形态质量不错,值得关注。

场景3弱势突破0.45分)

特征:
△ 小幅突破2%
△ 收敛一般width_ratio = 0.60
✗ 未放量1倍
△ 形态一般3%误差)

计算:
价格贡献 = 0.29 × 0.50 = 0.145
收敛贡献 = 0.40 × 0.20 = 0.080
成交量贡献 = 0.00 × 0.15 = 0.000
拟合贡献 = 0.55 × 0.15 = 0.082
────────────────────────────────
强度分 = 0.307 + 0.15 = 0.457 ≈ 0.46 (轻度突破)

解读:突破幅度小且无放量确认,可信度较低。


强度等级参考

强度范围 等级 含义 建议
0.00 ~ 0.30 微弱 待突破或假突破风险高 谨慎观察
0.30 ~ 0.50 轻度 有突破迹象但不充分 需更多确认
0.50 ~ 0.70 中度 有效突破,可作为参考 可以关注
0.70 ~ 0.90 强势 高置信度突破 值得重点关注
0.90 ~ 1.00 极强 顶级突破信号 强烈关注

权重设计理由

分量 权重 理由
价格突破 50% 最直接的信号,决定性因素
收敛程度 20% 收敛越强,蓄势越充分,突破有效性越高
成交量 15% 放量是确认信号,但非必要条件
拟合贴合度 15% 形态纯度指标,过滤杂乱形态

总和 = 100%,确保分数在 0~1 范围内。


代码实现

详见:src/converging_triangle.py

  • calc_fitting_adherence() - 计算拟合贴合度
  • calc_breakout_strength() - 计算强度分(主函数)
  • detect_converging_triangle() - 调用强度计算

相关文档