首页 / 交易学院 / William Blau 指标系统:动量、TSI、Ergodic 与 MQL5 实现
William Blau 指标系统:动量、TSI、Ergodic 与 MQL5 实现
📈

William Blau 指标系统:动量、TSI、Ergodic 与 MQL5 实现

交易策略 难度 · 高阶 2013 15 分钟阅读
William BlauTSIErgodic

William Blau 指标系统的背景

William Blau 提出用“双重指数平滑(double smoothing)”处理价格的变化量,而非直接平滑价格本身,从而得到对动量更敏感、噪声更低的指标。其中最有名的是 TSI(True Strength Index,真实强弱指数),以及 Ergodic 系列(把双平滑思路套用到 Tick Volume、RSI、MACD 等)。核心思想一致:先取价格变化 d,再对 d 做两次 EMA 平滑,滤掉短期噪声、保留趋势方向。

TSI 的计算步骤与公式

标准 TSI 分四步,设第一次平滑周期为 r(典型 25),第二次为 s(典型 13):

MQL5 实现:双平滑函数

可用 iMA 句柄取 EMA,但更干净的是写一个 double-smoothing 函数,内部用 EMA 递推(只需前一值),避免多次 CopyBuffer:

// 双平滑:先对序列做 EMA(r),再对结果做 EMA(s)
double DoubleSmooth(double value, double &state1[], double &state2[], int r, int s, int bar)
  {
   // state1 存第一次平滑结果,state2 存第二次
   double a1 = 2.0/(r+1);
   state1[bar] = a1*value + (1-a1)*state1[bar-1];
   double a2 = 2.0/(s+1);
   state2[bar] = a2*state1[bar] + (1-a2)*state2[bar-1];
   return state2[bar];
  }

// OnCalculate 中
double d = close[bar] - close[bar-1];
double num = DoubleSmooth(d,   s1, s2, R, S, bar);
double den = DoubleSmooth(MathAbs(d), s1a, s2a, R, S, bar);
TSI[bar] = (den!=0) ? num/den*100 : 0;

Ergodic 系列与信号解读

Ergodic 指标(如 Ergodic Tick Volume Index、Ergodic RSI)只是把“双平滑”套到不同输入上:对 TVI 输入用 tick volume 的变化,对 Ergodic RSI 输入用 RSI 的变化,算法骨架完全一样。TSI 本身的信号:上穿 0 线看多、下穿 0 线看空;与一条信号线(TSI 再做一次短 EMA,如 7 或 25)交叉产生买卖点;TSI 与价格出现背离预示趋势衰竭。

参数与优缺点

✦ 怎么用最稳
典型参数 r=25、s=13、信号线 7~25。优点:双平滑把随机噪声压得很低,TSI 在 0 附近震荡、穿越干净,比单平滑 RSI 更平滑、更少假信号;能同时反映动量与方向。缺点:本质是滞后指标,双平滑让它比价格慢两拍,拐点处会慢半拍;参数(尤其两次平滑周期)需针对品种/周期优化,过长则过于迟钝。

常见问题

RSI 直接对价格变化做平滑后算相对强弱;TSI 先取价格变化 d,再对 d 做两次 EMA 平滑再相除。双平滑让 TSI 噪声更低、在 0 轴附近震荡更对称,穿越信号比 RSI 更干净,但代价是更滞后。
因为 TSI 衡量的是“动量相对于动量自身波动的强度”。分母用 |d| 的双平滑,相当于把动量标准化:当市场波动大时分母也大,TSI 不会被大波动撑爆;波动小时分母小,小动量也能灵敏反映。这样 TSI 在不同波动环境下都落在可比的 −100~+100 区间。
短信号线(如 7)对转折更敏感但假信号多,长信号线(如 25)更稳但更慢。常见做法是用 7 做短线、25 做波段确认。实战建议先用 25/13/7 这组经典参数回测,再按你的交易周期微调第二次平滑 s 与信号线。