线性回归斜率 - MetaTrader 5脚本
线性回归适用的价格数据的直线方程如下:
y[x] = y0 + b*x
此处:
- x 是柱线号码 (x=1..n);
- y[x] 是相应的价格 (开盘, 收盘, 中间, 等等);
- b 是概率系数
- y0 是乖离率.
由指标给出的线性回归斜率, 等同于系数归一化版本 b。
b 的公式为:
b = (n*Sxy - Sx*Sy)/(n*Sxx - Sx*Sx)
此处:
- Sx = Sum(x, x = 1..n)= n*(n + 1)/2;
- Sy = Sum(y[x], x = 1..n);
- Sxx = Sum(x*x, x = 1..n) = n*(n+1)*(2*n+1)/6;
- Sxy = Sum(x*y[x], x = 1..n);
- n 是 LRS 周期 (输入参数 Per).
b 的分母可以简化为:
n*Sxx - Sx*Sx = n*n*(n-1)*(n+1)/12
最终, 整个 b 方程可以简化为
b = 6*(2*Sxy/(n + 1) - Sy)/n/(n - 1)
系数 b 不是归一化的。如果我们希望 LRS 对不同的货币对具有大致相同的范围,它不得不进行归一化。对 b 归一化,可以很方便通过除以 简单均线 (SMA) 或线性 加权均线 (LWMA), 给定如下:
SMA = Sy/n
LWMA = 2*Sxy/n/(n + 1)
相应的 LRS 版本给出如下
LRS_SMA = b/SMA = 6*(2*Sxy/Sy/(n + 1) - 1)/(n + 1)
LRS_LWMA = b/LWMA = 6*(1 - (n + 1)*Sy/Sxy/2)/(n + 1)
这两个版本的归一化几乎没有区别。所以, 这个 SMA 归一化在指标中被选择。而且, 因为 LRS 的数值十分微小, 本指标值计算并且绘制每 10 万份作为一部分, 以便大致适合 -100 至 +100 的范围。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/127