- Created README.md and USAGE.md for project overview and usage instructions. - Added core algorithm in src/converging_triangle.py for batch processing of stock data. - Introduced data files (open.pkl, high.pkl, low.pkl, close.pkl, volume.pkl) for OHLCV data. - Developed output documentation for results and breakout strength calculations. - Implemented scripts for running the detection and generating reports. - Added SVG visualizations and markdown documentation for algorithm details and usage examples.
4.0 KiB
4.0 KiB
突破强度计算方法
概述
突破强度是一个 0~1 的连续分数,用于衡量收敛三角形突破的有效性。
分数越高,表示突破越强势、越可信。
计算公式
strength = price_score × 5 × (1 + convergence_bonus × 0.5) × (1 + vol_bonus × 0.5)
最终结果限制在 [0, 1] 范围内。
三个影响因素
1. 价格突破幅度 (price_score)
衡量收盘价突破趋势线的程度。
# 向上突破
price_up = max(0, (close - upper_line) / upper_line)
# 向下突破
price_down = max(0, (lower_line - close) / lower_line)
| 突破幅度 | price_score |
|---|---|
| 未突破 | 0 |
| 突破 1% | 0.01 |
| 突破 5% | 0.05 |
| 突破 10% | 0.10 |
2. 收敛加成 (convergence_bonus)
三角形收敛程度越高,突破越有效。
convergence_bonus = max(0, 1 - width_ratio)
| width_ratio | 收敛程度 | convergence_bonus |
|---|---|---|
| 0.8 | 较弱 | 0.2 |
| 0.5 | 中等 | 0.5 |
| 0.2 | 很强 | 0.8 |
| 0.1 | 极强 | 0.9 |
width_ratio = 三角形末端宽度 / 起始宽度
3. 成交量加成 (vol_bonus)
放量突破更可信。
vol_bonus = min(1, max(0, volume_ratio - 1))
| volume_ratio | 成交量状态 | vol_bonus |
|---|---|---|
| 0.8 | 缩量 | 0 |
| 1.0 | 平量 | 0 |
| 1.5 | 放量 50% | 0.5 |
| 2.0 | 放量 100% | 1.0 (满分) |
| 3.0 | 放量 200% | 1.0 (上限) |
volume_ratio = 当日成交量 / 近 N 日均量
加权系数说明
strength = price_score × 5 × (1 + convergence_bonus × 0.5) × (1 + vol_bonus × 0.5)
| 系数 | 作用 |
|---|---|
× 5 |
放大价格突破分数,使 2% 突破 = 0.1 基础分 |
× (1 + convergence_bonus × 0.5) |
收敛加成最多增加 50% |
× (1 + vol_bonus × 0.5) |
成交量加成最多增加 50% |
计算示例
示例 1:强势突破
输入:
close = 10.5, upper_line = 10.0 (突破 5%)
width_ratio = 0.2 (收敛很强)
volume_ratio = 1.8 (放量 80%)
计算:
price_up = (10.5 - 10.0) / 10.0 = 0.05
convergence_bonus = 1 - 0.2 = 0.8
vol_bonus = min(1, 1.8 - 1) = 0.8
strength_up = 0.05 × 5 × (1 + 0.8 × 0.5) × (1 + 0.8 × 0.5)
= 0.25 × 1.4 × 1.4
= 0.49
结果: 向上突破强度 = 0.49 (中度突破)
示例 2:弱势突破
输入:
close = 10.1, upper_line = 10.0 (突破 1%)
width_ratio = 0.7 (收敛较弱)
volume_ratio = 0.9 (缩量)
计算:
price_up = 0.01
convergence_bonus = 0.3
vol_bonus = 0
strength_up = 0.01 × 5 × (1 + 0.3 × 0.5) × (1 + 0)
= 0.05 × 1.15 × 1.0
= 0.0575
结果: 向上突破强度 = 0.06 (微弱突破)
示例 3:极强突破
输入:
close = 11.0, upper_line = 10.0 (突破 10%)
width_ratio = 0.15 (极度收敛)
volume_ratio = 2.5 (放量 150%)
计算:
price_up = 0.10
convergence_bonus = 0.85
vol_bonus = 1.0
strength_up = 0.10 × 5 × (1 + 0.85 × 0.5) × (1 + 1.0 × 0.5)
= 0.50 × 1.425 × 1.5
= 1.07 → 截断为 1.0
结果: 向上突破强度 = 1.0 (满分)
强度等级参考
| 强度范围 | 等级 | 含义 |
|---|---|---|
| 0 ~ 0.1 | 无/微弱 | 未突破或假突破风险高 |
| 0.1 ~ 0.3 | 轻度 | 有突破迹象,需观察确认 |
| 0.3 ~ 0.6 | 中度 | 有效突破,可作为参考信号 |
| 0.6 ~ 1.0 | 强势 | 高置信度突破,值得关注 |
代码位置
src/converging_triangle.py
├── calc_breakout_strength() # 突破强度计算函数
└── detect_converging_triangle() # 调用位置
相关参数
| 参数 | 默认值 | 说明 |
|---|---|---|
vol_window |
20 | 计算成交量均值的窗口大小 |
vol_k |
1.3 | 成交量确认阈值(volume_confirmed 判断用) |
break_tol |
0.001 | 突破判定容差 |