M1 TrendModule · 均线组趋势
⬡ claude-sonnet-4-6 · 2026-05-20
算法概述
注册名
ema_group所属插槽M1 TrendModule
状态stable
核心思路使用三条不同周期的 EMA(快线/中线/慢线)判断趋势方向和阶段。三线排列(快>中>慢)确认多头趋势,反向确认空头。价格与均线的相对位置判断是冲量段还是回调段。
适用场景日内趋势跟踪,适合有明显方向性的市场
判断逻辑
趋势方向判断
多头(bullish)条件:三条 EMA 呈多头排列(EMA快 > EMA中 > EMA慢),且收盘价高于 EMA快线。
空头(bearish)条件:三条 EMA 呈空头排列(EMA快 < EMA中 < EMA慢),且收盘价低于 EMA快线。
震荡(ranging)条件:均线交叉缠绕,或收盘价穿插在均线之间,或快慢线距离过小(小于 ATR 的 0.3 倍)。
趋势阶段判断
冲量段(impulse):收盘价高于 EMA快线(多头)或低于 EMA快线(空头),且均线间距在扩大。
回调段(pullback):收盘价已回到 EMA中线附近(多头回调至 EMA中~EMA慢之间),但三线排列仍有效。
盘整段(consolidation):三线排列有效但均线间距持续收窄,暂未发生交叉。
极值价格和回调深度
extreme_price:在当前趋势方向上,过去 N 根 K 线内的极值(多头取最高价,空头取最低价),N 由参数 extreme_window 控制。
pullback_depth:(extreme_price - current_close) / (extreme_price - trend_origin_price),数值越大代表回调越深。
参数配置
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ema_periods | list[int] | [21, 55, 89] | 三条均线周期,按快→中→慢排列 |
ranging_atr_multiplier | float | 0.3 | 快慢线间距低于 ATR × 此值时判定为震荡 |
extreme_window | int | 20 | 计算极值价格的回溯 K 线根数 |
atr_period | int | 14 | ATR 计算周期 |
在 SystemConfig 中,
trend_method 设为 "ema_group",trend_params 包含以上参数(可只写需要覆盖默认值的参数,其余使用默认值)。输出规格
| 字段 | 本算法的输出值说明 |
|---|---|
direction | "bullish" / "bearish" / "ranging"(触发短路) |
stage | "impulse" / "pullback" / "consolidation" |
extreme_price | 过去 extreme_window 根 K 线内的极高/极低价 |
pullback_depth | 相对趋势幅度的回调比例(0.0~1.0) |
strength | 当前版本置为 None |
method | 固定为 "ema_group" |
params_hash | 由 ema_periods + ranging_atr_multiplier + extreme_window 计算的 MD5 前8位 |
短路条件
当
direction == "ranging" 时,此算法返回的 TrendResult.direction 即为 "ranging",流水线检查后立即短路,M2 不执行。震荡短路是预期行为。如果在回测中发现某段行情下短路过于频繁,应调整
ranging_atr_multiplier 参数而非改动算法代码。接口对齐
本算法实现 TrendModule ABC,输入输出类型参见 module_interface_spec.html。