- Added pipeline_converging_triangle.py for streamlined execution of detection, reporting, and chart generation. - Introduced triangle_config.py for centralized parameter management across scripts. - Updated plot_converging_triangles.py to utilize parameters from the new config file. - Revised report_converging_triangles.py to reflect dynamic detection window based on configuration. - Enhanced existing scripts for improved error handling and output consistency. - Added new documentation files for usage instructions and parameter configurations.
8.9 KiB
8.9 KiB
收敛三角形检测系统 - 使用指南
最后更新:2026-01-22
版本:v1.0
目录
系统概述
收敛三角形检测系统用于自动识别股票K线中的收敛三角形形态,并计算突破强度分数进行选股。
功能特点
- 批量检测:支持多股票、多日期的滚动窗口检测
- 突破强度评分:0~1 连续分数,量化突破有效性
- 可视化图表:自动生成个股三角形图表
- 选股报告:每日 Markdown 格式选股简报
系统架构
technical-patterns-lab/
├── src/
│ └── converging_triangle.py # 核心算法
├── scripts/
│ ├── triangle_config.py # 参数配置(统一管理)
│ ├── run_converging_triangle.py # 批量检测
│ ├── report_converging_triangles.py # 报告生成
│ ├── plot_converging_triangles.py # 图表绘制
│ └── pipeline_converging_triangle.py # 一键流水线
├── outputs/converging_triangles/
│ ├── all_results.csv # 全部检测结果
│ ├── report.md # 选股报告
│ └── charts/ # 个股图表
└── data/
└── pkl/ # OHLCV 数据文件
快速开始
1. 一键运行(推荐)
cd technical-patterns-lab
python scripts/pipeline_converging_triangle.py
这会依次执行:
- 批量检测 → 生成
all_results.csv - 报告生成 → 生成
report.md - 图表绘制 → 生成
charts/*.png
2. 指定日期运行
python scripts/pipeline_converging_triangle.py --date 20260120
3. 跳过部分步骤
# 跳过检测(使用已有结果),只生成报告和图表
python scripts/pipeline_converging_triangle.py --skip-detection
# 只运行检测
python scripts/pipeline_converging_triangle.py --skip-report --skip-plot
4. 单独运行各步骤
# 批量检测
python scripts/run_converging_triangle.py
# 生成报告
python scripts/report_converging_triangles.py
# 绘制图表
python scripts/plot_converging_triangles.py
参数配置
所有参数统一在 scripts/triangle_config.py 中管理:
检测参数(当前使用严格模式)
| 参数 | 严格模式 | 默认模式 | 宽松模式 | 说明 |
|---|---|---|---|---|
window |
120 | 120 | 120 | 检测窗口(交易日) |
pivot_k |
15 | 15 | 15 | 枢轴点检测周期 |
shrink_ratio |
0.6 | 0.8 | 0.85 | 收敛比例阈值 |
break_tol |
0.005 | 0.001 | 0.001 | 突破判定容差 |
vol_k |
1.5 | 1.3 | 1.2 | 放量确认倍数 |
数据范围配置
| 参数 | 值 | 说明 |
|---|---|---|
RECENT_DAYS |
500 | 计算最近 N 个交易日 |
DISPLAY_WINDOW |
500 | 图表显示范围 |
ONLY_VALID |
True | 只输出有效三角形 |
切换参数模式
编辑 scripts/triangle_config.py,修改 DETECTION_PARAMS 的定义:
# 当前使用严格模式(推荐)
DETECTION_PARAMS = ConvergingTriangleParams(
shrink_ratio=0.6, # 更严格的收敛要求
break_tol=0.005, # 更明显的突破
vol_k=1.5, # 更强的放量要求
...
)
脚本说明
run_converging_triangle.py
功能:批量检测收敛三角形
输出:
outputs/converging_triangles/all_results.csvoutputs/converging_triangles/strong_breakout_up.csvoutputs/converging_triangles/strong_breakout_down.csv
耗时:约 15-20 秒(108只股票 × 500天)
report_converging_triangles.py
功能:生成 Markdown 选股报告
参数:
# 指定报告日期
python scripts/report_converging_triangles.py --report-date 20260120
# 指定输入输出路径
python scripts/report_converging_triangles.py \
--input outputs/converging_triangles/all_results.csv \
--output outputs/converging_triangles/report.md
输出:outputs/converging_triangles/report.md
plot_converging_triangles.py
功能:绘制个股收敛三角形图表
参数:
# 指定日期
python scripts/plot_converging_triangles.py --date 20260120
# 指定输出目录
python scripts/plot_converging_triangles.py --output-dir outputs/converging_triangles/charts
输出:outputs/converging_triangles/charts/*.png
特点:
- 每次运行自动清空旧图片
- 显示 500 天历史走势
- 检测窗口 120 天高亮显示
- 支持中文字体(SimHei/Microsoft YaHei)
pipeline_converging_triangle.py
功能:一键执行完整流水线
参数:
| 参数 | 说明 |
|---|---|
--date YYYYMMDD |
指定目标日期 |
--skip-detection |
跳过批量检测 |
--skip-report |
跳过报告生成 |
--skip-plot |
跳过图表绘制 |
输出:流水线执行摘要,包含各步骤耗时
输出文件
all_results.csv
所有有效收敛三角形检测结果。
| 字段 | 类型 | 说明 |
|---|---|---|
stock_idx |
int | 股票索引 |
stock_code |
str | 股票代码 |
stock_name |
str | 股票名称 |
date |
int | 日期(YYYYMMDD) |
is_valid |
bool | 是否有效三角形 |
breakout_strength_up |
float | 向上突破强度(0~1) |
breakout_strength_down |
float | 向下突破强度(0~1) |
breakout_dir |
str | 突破方向:up/down/none |
width_ratio |
float | 收敛比例(末端/起始宽度) |
volume_confirmed |
bool | 是否放量确认 |
touches_upper |
int | 触碰上沿次数 |
touches_lower |
int | 触碰下沿次数 |
report.md
每日选股简报,包含:
- 数据说明(股票池、检测窗口、算法)
- 当日统计(总数、向上/向下/无突破)
- 向上突破排名表
- 向下突破排名表
- 无突破形态列表
charts/*.png
个股图表,文件名格式:{date}_{stock_code}_{stock_name}.png
图表内容:
- 上半部分:K线走势 + 趋势线
- 下半部分:成交量柱状图
- 标题:股票信息 + 检测/显示范围
算法原理
收敛三角形定义
收敛三角形是一种技术形态,特征为:
- 上沿下倾:高点连线斜率 ≤ 0(或轻微上倾)
- 下沿上翘:低点连线斜率 ≥ 0(或轻微下倾)
- 逐渐收敛:末端宽度 < 起始宽度
- 多次触碰:价格至少 2 次触碰上下沿
检测流程
1. 枢轴点检测
└── 使用分形方法找出局部高点/低点
2. 边界线拟合
└── 分段取极值 + 线性回归
3. 形态验证
├── 斜率约束检查
├── 收敛度检查(width_ratio < shrink_ratio)
└── 触碰程度检查(loss < touch_loss_max)
4. 突破判定
├── 向上突破:close > upper_line × (1 + break_tol)
└── 向下突破:close < lower_line × (1 - break_tol)
5. 强度计算
└── 加权求和:价格分(60%) + 收敛分(25%) + 成交量分(15%)
突破强度公式
strength = 0.60 × tanh(突破幅度% × 15) + # 价格分
0.25 × (1 - width_ratio) + # 收敛分
0.15 × vol_bonus # 成交量分
详见 突破强度计算方法.md
常见问题
Q1: 图表中文乱码?
确保系统安装了中文字体(SimHei 或 Microsoft YaHei)。脚本已配置:
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
Q2: 检测结果太少/太多?
调整 scripts/triangle_config.py 中的参数:
- 结果太少 → 使用宽松模式(
shrink_ratio=0.85) - 结果太多 → 使用严格模式(
shrink_ratio=0.6)
Q3: 突破强度都很高?
旧版本公式有此问题,已在 v2.0 修复。确保使用最新的 src/converging_triangle.py。
Q4: 如何添加新股票?
将 OHLCV 数据以 .pkl 格式放入 data/pkl/ 目录,格式要求:
- 二维 numpy 数组,shape=(n_stocks, n_days)
- 文件名:
open.pkl,high.pkl,low.pkl,close.pkl,volume.pkl
Q5: 如何调整检测窗口?
修改 scripts/triangle_config.py:
DETECTION_PARAMS = ConvergingTriangleParams(
window=120, # 修改此值(如 60, 90, 180)
...
)
版本历史
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v1.0 | 2026-01-22 | 初始版本,加权求和公式,严格模式 |
相关文档
- 突破强度计算方法.md - 突破强度公式详解
- converging_triangles_outputs.md - 输出文件字段说明
- 2026-01-16_converging_triangle_algorithm.md - 算法设计文档