""" 收敛三角形检测参数配置 所有相关脚本共享此配置,确保参数一致性: - run_converging_triangle.py (批量检测) - report_converging_triangles.py (报告生成) - plot_converging_triangles.py (图表绘制) """ import os import sys # 让脚本能找到 src/ 下的模块 sys.path.append(os.path.join(os.path.dirname(__file__), "..", "src")) from converging_triangle import ConvergingTriangleParams # ============================================================================ # 核心检测参数 # ============================================================================ # 严格模式:更严格的收敛和突破要求(当前激活) DETECTION_PARAMS = ConvergingTriangleParams( # 基础窗口 window=120, # 检测窗口大小(交易日) pivot_k=15, # 枢轴点检测周期 # 边界拟合 boundary_n_segments=2, # 边界线分段数 boundary_source="full", # 边界拟合数据源: "full"(全部) 或 "pivot"(仅枢轴点) # 斜率约束 upper_slope_max=0.10, # 上沿最大斜率(正值,向上倾斜) lower_slope_min=-0.10, # 下沿最小斜率(负值,向下倾斜) # 触碰检测 touch_tol=0.10, # 触碰容差(10%以内算触碰) touch_loss_max=0.10, # 平均触碰误差上限 # 收敛度要求 shrink_ratio=0.6, # 🔧 更严格:末端≤60%起始宽度 # 突破检测 break_tol=0.005, # 🔧 更明显的突破(0.5%) # 成交量确认 vol_window=20, # 成交量移动窗口 vol_k=1.5, # 🔧 更强的放量要求 # 假突破过滤 false_break_m=5, # 假突破回看天数 ) # 默认模式(备用) DEFAULT_PARAMS = ConvergingTriangleParams( window=120, pivot_k=15, boundary_n_segments=2, boundary_source="full", upper_slope_max=0.10, lower_slope_min=-0.10, touch_tol=0.10, touch_loss_max=0.10, shrink_ratio=0.8, break_tol=0.001, vol_window=20, vol_k=1.3, false_break_m=5, ) # ============================================================================ # 数据范围配置 # ============================================================================ # 计算范围:None = 全部历史,具体数字 = 最近N天 RECENT_DAYS = 500 # 显示范围:图表中显示的交易日数 DISPLAY_WINDOW = 500 # ============================================================================ # 输出控制 # ============================================================================ # 是否只输出有效三角形 ONLY_VALID = True # 是否显示详细日志 VERBOSE = True # ============================================================================ # 推荐参数预设(备选方案) # ============================================================================ # 宽松模式:捕获更多潜在形态 LOOSE_PARAMS = ConvergingTriangleParams( window=120, pivot_k=15, boundary_n_segments=2, boundary_source="full", upper_slope_max=0.15, # 允许更陡峭的斜率 lower_slope_min=-0.15, touch_tol=0.12, touch_loss_max=0.12, shrink_ratio=0.85, # 更宽松的收敛要求 break_tol=0.001, vol_window=20, vol_k=1.2, false_break_m=5, ) # ============================================================================ # 使用说明 # ============================================================================ def get_params(mode: str = "strict") -> ConvergingTriangleParams: """ 获取检测参数 Args: mode: 参数模式,可选值: - "strict": 严格模式(当前默认,推荐) - "default": 默认参数 - "loose": 宽松模式 Returns: ConvergingTriangleParams 实例 """ if mode == "default": return DEFAULT_PARAMS elif mode == "loose": return LOOSE_PARAMS else: return DETECTION_PARAMS # strict if __name__ == "__main__": print("=" * 70) print("收敛三角形检测参数配置") print("=" * 70) print("\n[当前激活: 严格模式]") print(f" 检测窗口: {DETECTION_PARAMS.window} 个交易日") print(f" 收敛比例: ≤ {DETECTION_PARAMS.shrink_ratio} (末端宽度/起始宽度)") print(f" 突破阈值: {DETECTION_PARAMS.break_tol * 100:.2f}%") print(f" 放量倍数: ≥ {DETECTION_PARAMS.vol_k}x") print("\n[数据范围]") print(f" 计算范围: 最近 {RECENT_DAYS} 个交易日") print(f" 图表显示: {DISPLAY_WINDOW} 个交易日") print("\n[可选模式]") print(" - strict: 严格模式(当前使用,高质量)") print(" - default: 默认参数(较宽松)") print(" - loose: 宽松模式(更多候选)") print("\n[关键差异]") print(" 参数 | 严格模式 | 默认模式 | 宽松模式") print(" ------------|---------|---------|----------") print(" 收敛比例 | ≤0.6 | ≤0.8 | ≤0.85") print(" 突破阈值 | 0.5% | 0.1% | 0.1%") print(" 放量倍数 | ≥1.5x | ≥1.3x | ≥1.2x") print("=" * 70)