# 强度分计算详解与示例 > 创建时间:2026-01-27 > 版本:v1.0 ## 概述 **强度分**是收敛三角形形态的综合质量评分(0~1),用于评估: - **待突破形态**的潜在价值(形态质量) - **已突破形态**的有效性(突破可信度) **核心公式**: ``` 强度分 = 价格突破×50% + 收敛程度×20% + 成交量×15% + 拟合贴合度×15% ``` --- ## 计算流程 ### 步骤1:价格突破分数(权重 50%) #### 公式 ```python 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%) #### 公式 ```python 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%) #### 公式 ```python 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%) #### 公式 ```python 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()` - 调用强度计算 --- ## 相关文档 - [突破强度计算方法](./突破强度计算方法.md) - 完整技术文档 - [枢轴点拟合算法详解](./枢轴点分段选择算法详解.md) - 拟合贴合度的算法基础 - [讨论记录](../discuss/20260126-讨论.md) - 设计过程与决策