今天我们来聊聊 X2MA NRTR 指标,这是一个在 MetaTrader 5 上非常实用的工具。这个指标的移动平均值是通过 NRTR 算法(Nick Rypock Trailing Reverse)进行修正的,帮助我们更好地捕捉市场趋势。
值得一提的是,GODZILLA 这个专家顾问曾在 2006年自动交易锦标赛 中获得第三名,正是基于这个指标的突破交易系统开发而成。
在使用 X2MA NRTR 指标时,我们可以选择多达十种不同的平滑算法,包括:
- SMA - 简单移动平均线;
- EMA - 指数移动平均线;
- SMMA - 平滑移动平均线;
- LWMA - 线性加权移动平均线;
- JJMA - JMA 自适应平均线;
- JurX - 超线性平滑;
- ParMA - 抛物线平滑;
- T3 - Tillson 多重指数平滑;
- VIDYA - Tushar Chande 算法平滑;
- AMA - Perry Kaufman 算法平滑。
需要注意的是,Phase1 和 Phase2 的参数在不同的平滑算法中含义完全不同。比如对于 JMA,Phase 参数的范围是 -100 到 +100;对于 T3,它是一个为了更好视觉化的平滑比例;而 VIDYA 的 Phase 是 CMO 振荡器周期,AMA 则是慢 EMA 周期。在其他算法中,这些参数并不影响平滑效果。值得一提的是,AMA 的快速 EMA 周期是固定值,默认值为 2,指数提升的比例也是 2。
此外,X2MA NRTR 指标还使用了 SmoothAlgorithms.mqh 库类(需复制到 terminal_data_folder\MQL5\Include)。关于这些类的使用,详细描述可以参考文章 “不使用额外缓冲区的中间计算平均价格序列”。

指标输入参数:
//+-----------------------------------+ //| 指标输入参数 | //+-----------------------------------+ input Smooth_Method MA_Method1=MODE_SMA; // 第一种平滑平均方法 input int Length1=12; // 第一种平滑深度 input int Phase1=15; // 第一种平滑参数 //---- 对于 JJMA Phase1 变化范围是 -100 ... +100,会影响过渡过程的质量; //---- 对于 VIDIA Phase1 是 CMO 周期,AMA 为慢移动平均周期 input Smooth_Method MA_Method2=MODE_JJMA; // 第二种平滑平均方法 input int Length2= 5; // 第二种平滑深度 input int Phase2=15; // 第二种平滑参数 //---- 对于 JJMA Phase2 变化范围是 -100 ... +100,会影响过渡过程的质量; //---- 对于 VIDIA Phase2 是 CMO 周期,AMA 为慢移动平均周期 input Applied_price_ IPC=PRICE_CLOSE; // 价格常量 /* 指标计算在此价格上进行 (1-CLOSE, 2-OPEN, 3-HIGH, 4-LOW, 5-MEDIAN, 6-TYPICAL, 7-WEIGHTED, 8-SIMPLE, 9-QUARTER, 10-TRENDFOLLOW, 11-0.5 * TRENDFOLLOW.) */ input uint Step=30; // 平坦振动大小 //---- 此参数决定被视为平坦的振动大小(离散化数字间距,单位为点) input uint Max_DEV=55; // 价格与 X2MA 之间的终端偏差,不改变平均值 input int Shift=0; // 指标在柱子上的水平偏移 input int PriceShift=0; // 指标的垂直偏移(单位为点)