# 收敛三角形输出说明

本文档说明 `outputs/converging_triangles` 目录下 CSV 的含义与字段。  
输出由 `scripts/run_converging_triangle.py` 生成。

## 输出文件

- `all_results.csv`：检测结果汇总。默认仅包含有效三角形（`ONLY_VALID=True`）。
- `strong_breakout_up.csv`：强势向上突破子集（`breakout_strength_up > 0.3`）。
- `strong_breakout_down.csv`：强势向下突破子集（`breakout_strength_down > 0.3`）。

## 字段说明

| 字段 | 说明 |
| --- | --- |
| `stock_idx` | 股票索引（在矩阵中的行号，0 起）。 |
| `date_idx` | 日期索引（在日期数组中的列号，0 起）。 |
| `is_valid` | 是否识别到有效收敛三角形。 |
| `breakout_strength_up` | 向上突破强度（0~1）。 |
| `breakout_strength_down` | 向下突破强度（0~1）。 |
| `upper_slope` | 上沿趋势线斜率。 |
| `lower_slope` | 下沿趋势线斜率。 |
| `width_ratio` | 收敛比（末端宽度 / 起始宽度，越小越收敛）。 |
| `touches_upper` | 上沿触碰次数（枢轴高点落在容差内的次数）。 |
| `touches_lower` | 下沿触碰次数（枢轴低点落在容差内的次数）。 |
| `apex_x` | 上下沿交点的 x 坐标（窗口内索引；平行时可能为 `inf`）。 |
| `breakout_dir` | 突破方向：`up` / `down` / `none`。 |
| `volume_confirmed` | 是否放量确认突破（突破时成交量 > 均量 × `vol_k`）。 |
| `false_breakout` | 假突破标记（当前实现为空，占位）。 |
| `window_start` | 窗口起始位置（窗口内索引，通常为 0）。 |
| `window_end` | 窗口结束位置（窗口内索引，通常为 `window-1`）。 |
| `stock_code` | 股票代码（脚本追加）。 |
| `stock_name` | 股票名称（脚本追加）。 |
| `date` | 真实交易日日期（脚本追加）。 |

## 备注

- `breakout_strength_up/down` 由价格突破幅度、收敛程度与成交量放大综合计算，
  详细公式见 `docs/突破强度计算方法.md`。
- `date_idx` 与 `date`、`stock_idx` 与 `stock_code/stock_name` 的映射来自
  `data/*.pkl` 的元数据（脚本在输出时补充）。
