- 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.
188 lines
4.0 KiB
Markdown
188 lines
4.0 KiB
Markdown
# 突破强度计算方法
|
||
|
||
## 概述
|
||
|
||
突破强度是一个 **0~1** 的连续分数,用于衡量收敛三角形突破的有效性。
|
||
分数越高,表示突破越强势、越可信。
|
||
|
||
---
|
||
|
||
## 计算公式
|
||
|
||
```python
|
||
strength = price_score × 5 × (1 + convergence_bonus × 0.5) × (1 + vol_bonus × 0.5)
|
||
```
|
||
|
||
最终结果限制在 `[0, 1]` 范围内。
|
||
|
||
---
|
||
|
||
## 三个影响因素
|
||
|
||
### 1. 价格突破幅度 (price_score)
|
||
|
||
衡量收盘价突破趋势线的程度。
|
||
|
||
```python
|
||
# 向上突破
|
||
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)
|
||
|
||
三角形收敛程度越高,突破越有效。
|
||
|
||
```python
|
||
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)
|
||
|
||
放量突破更可信。
|
||
|
||
```python
|
||
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 日均量
|
||
|
||
---
|
||
|
||
## 加权系数说明
|
||
|
||
```python
|
||
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 | 突破判定容差 |
|