M1 TrendModule 趋势判断算法 · EMA 三线多头/空头排列法 · 2026-05-16
| 属性 | 值 |
|---|---|
| algorithm_id | ema_triple_v1 |
| 所属模块 | M1 TrendModule |
| 框架层引用字段 | M0.trend_method_main = "ema_triple_v1" |
| 文档层级 | 算法层(夹在框架层与实例层之间) |
| 触发时机 | 每根已完结 K 线收盘后,由运行时调用一次 |
| 有状态 | 是(维护 trend_state 跨 K 线持续) |
| 框架字段 | 本算法填充方式 | 为空时 |
|---|---|---|
direction | EMA 三线大小关系推导,见 §4.A | 不会为空 |
stage | 由 segment_count 映射,见 §4.F | direction=震荡时 null |
trend_origin_price | 当前趋势起点收盘价,见 §4.C | direction=震荡时 null |
extreme_price | 当前趋势最极值收盘价,见 §4.D | direction=震荡时 null |
pullback_depth | 公式见 §4.E | 分母≤0 或震荡时 null |
metadata.segment_count | 段数状态机计数,见 §4.E | direction=震荡时 null |
source_close_time | 触发本次计算的 K 线收盘 ISO 时间 | 不会为空 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ema_fast | int | 21 | 快线周期,三步曲标准值 |
ema_mid | int | 55 | 中线周期 |
ema_slow | int | 144 | 慢线周期 |
kline_window | int | M0.kline_window | EMA 计算回看 K 线根数;同时限定状态变量搜索窗口 |
price_field | str | "close" | EMA 计算所用价格字段;决策①:统一用收盘价,不用高低点影线 |
kline_window 根),计算 EMA_fast、EMA_mid、EMA_slow。k = 2/(n+1),EMA[0] = close[0],EMA[i] = close[i]×k + EMA[i-1]×(1-k)。取序列最后一项(最新 K 线)对应值。EMA_fast > EMA_mid > EMA_slow → direction = 涨势EMA_fast < EMA_mid < EMA_slow → direction = 跌势direction 与上一根 K 线的 direction 不同且新 direction ≠ 震荡 时,触发状态重置:
trend_origin_price、extreme_price、segment_count、segment_state 全部清空,按步骤 B-F 重新初始化。| 变量名 | 类型 | 初始值 | 说明 |
|---|---|---|---|
current_direction | str | — | 上一根 K 线的 direction,用于检测变化 |
trend_origin_price | float | — | 当前趋势起点价格 |
extreme_price | float | — | 当前趋势极值价格 |
segment_count | int | 1 | 当前趋势段数 |
segment_state | str | "extending" | 段计数状态机当前状态:extending / pullback |
prev_extreme | float | — | 进入 pullback 前的 extreme_price 快照,用于判断是否突破 |
kline_window 根内,找到最近一根收盘价低于 EMA_slow 的 K 线,取其收盘价。EMA_slow 的 K 线收盘价;若均在 EMA_slow 之下则取窗口内最高收盘价。
trend_origin_price 不随行情变化更新,只在方向切换时重新计算。extreme_price = close[当前 K 线]。
extreme_price = max(extreme_price, close[当前])extreme_price = min(extreme_price, close[当前])close[当前] 使用当前已完结 K 线的收盘价,不是实时价(盘中不计算)。与 EMA 计算所用价格字段一致(均为 close)。| segment_count | stage | 含义 |
|---|---|---|
| 1 | 初期 | 趋势第一段,力量最强,可积极入场 |
| 2 | 中期 | 第二段,仍可入场但需更严格理由 |
| ≥ 3 | 末期 | 第三段及以后,趋势衰竭风险上升,信号评分惩罚 −3 |
metadata.price_field = "high"。