Pine脚本(TradingView)中LINREG函数的内部计算逻辑是什么?
Pine Script
linreg 函数最小二乘计算逻辑 前置说明
linreg是滚动计算函数,每根K线都会基于当前回溯窗口(共length个周期)的source序列,重新计算一次对应的斜率和截距。
计算步骤
1. 确定变量取值
- 因变量y:取回溯窗口内的
source序列,按时间从远到近排序为y₀, y₁, ..., y₍ₙ₋₁₎,其中n等于length参数值,yₙ₋₁为当前K线的source值 - 自变量x:直接取周期序号,对应为
x₀=0, x₁=1, ..., x₍ₙ₋₁₎=n-1,无需使用实际时间戳,属于金融指标线性回归的通用简化规则
2. 计算中间统计值
- x的平均值:因x为0到n-1的连续整数,可直接简化为
x_mean = (n-1) / 2 - y的平均值:回溯窗口内所有
source值的算术平均y_mean = (y₀ + y₁ + ... + yₙ₋₁) / n - 协方差求和项:
sum_xy = Σ (xᵢ - x_mean) * (yᵢ - y_mean),i取值范围为0到n-1,即每个周期的x偏差与y偏差的乘积总和 - x方差求和项:
sum_x2 = Σ (xᵢ - x_mean)²,i取值范围为0到n-1,即每个周期x偏差的平方和,该值仅和length有关,可预计算复用
3. 计算斜率与截距
- 斜率
slope= 协方差求和项 / x方差求和项,即slope = sum_xy / sum_x2 - 截距
intercept= y平均值 - 斜率 * x平均值,即intercept = y_mean - slope * x_mean
4. 代入最终公式
得到斜率和截距后,直接代入公开公式即可算出linreg结果:linreg = intercept + slope * (length - 1 - offset)
补充说明:offset取0时得到当前K线对应的线性回归预测值,offset取正整数时,结果为往前偏移对应周期的回归值,和Pine Script官方规则完全匹配。
内容的提问来源于stack exchange,提问作者Yogurtu
相关产品推荐
相关产品推荐

