# 对称三角形识别 - 代码讲解一页PPT ## 1. 算法总体流程(5步) 输入数据 → 枢轴点检测 → 边界线拟合 → 几何约束验证 → 突破判定 → 输出结果 --- ## 2. 核心模块与函数 **(1) 枢轴点检测** 函数:`pivots_fractal(high, low, k)` 作用:从高低价序列中提取明显峰谷 关键参数:`pivot_k`(越大越严格) **(2) 边界线拟合** 函数:`fit_boundary_line(x, y, mode, n_segments)` 作用:按时间分段取极值点,拟合贴边趋势线 关键参数:`boundary_n_segments`(越小越贴边) **(3) 形态验证** 函数:`detect_sym_triangle(...)` 包含:斜率约束、收敛判断、触碰次数、突破确认 --- ## 3. 几何约束(对称三角形判定) - 上沿下降:`a_u <= upper_slope_max` - 下沿上升:`a_l > 0` - 收敛比例:`width_end / width_start <= shrink_ratio` - 触碰次数:上下沿均 ≥ 2 次 --- ## 4. 突破与确认逻辑 - 向上突破:`close[end] > upper_end * (1 + break_tol)` - 向下突破:`close[end] < lower_end * (1 - break_tol)` - 成交量确认(可选):`volume[end] > MA(volume) * vol_k` - 假突破过滤:突破后 `m` 根内回到线内 --- ## 5. 关键参数(调参入口) | 参数 | 含义 | 建议范围 | |------|------|---------| | `WINDOW` | 最近窗口长度 | 200~500 | | `PIVOT_K` | 枢轴检测窗口 | 5~30 | | `BOUNDARY_N_SEGMENTS` | 分段数 | 2~5 | | `UPPER_SLOPE_MAX` | 上沿斜率上限 | -0.01~0.10 | | `SHRINK_RATIO` | 收敛比例 | 0.3~0.9 | | `TOUCH_TOL` | 触碰容差 | 0.03~0.15 | --- ## 6. 结果输出结构 `SymTriangleResult` 包含: - 识别区间:`start, end` - 趋势线:`upper_coef, lower_coef` - 收敛程度:`width_ratio` - 触碰次数:`touches_upper, touches_lower` - 突破信息:`breakout, volume_confirmed, false_breakout` --- ## 7. 文件组织 ``` code/ ├── sym_triangle.py # 核心算法(检测+拟合+判定) ├── run_sym_triangle_json.py # 测试脚本(参数配置+可视化) └── data.json # 输入数据(labels/values) ```