You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TradingView固定区间线性回归线开发需求:含标准误差、R²、角度读数

自定义固定区间线性回归线指标(TradingView Pine Script v5)

需求概述

  • 在股票图表上绘制任意两个起始与结束K线间的固定区间线性回归线(非连续曲线),支持手动指定区间(TradingView内置Regression Trend工具无公开代码,故采用手动指定区间方案)
  • 标注每个K线的标准误差,用于识别极端异常值
  • 添加R²读数作为趋势拟合度的量化对比指标
  • 提供线性回归线的斜率与角度测量值
  • 基于TradingView内置Linear Regression Channel指标代码进行开发

实现方案(完整代码)

//@version=5
indicator("自定义固定区间线性回归线", shorttitle="CustomLinReg", overlay=true)

// 区间设置:手动指定起始与结束K线索引
startBarIndex = input.int(bar_index - 100, title="区间起始K线索引", tooltip="输入目标区间的起始K线bar_index值")
endBarIndex = input.int(bar_index, title="区间结束K线索引", tooltip="输入目标区间的结束K线bar_index值")
sourceInput = input.source(close, title="数据源")

// 显示设置
showStdErrInput = input.bool(true, title="显示逐K标准误差")
showRSquaredInput = input.bool(true, title="显示R²拟合度")
showSlopeAngleInput = input.bool(true, title="显示斜率与角度")
extendLineInput = input.bool(false, title="扩展回归线")

// 计算线性回归核心参数
calcLinearRegParams(source, startIdx, endIdx) =>
    length = endIdx - startIdx + 1
    if length <= 1 or startIdx < 0 or endIdx > bar_index
        [float(na), float(na), float(na), float(na), float(na)]
    
    sumX = 0.0
    sumY = 0.0
    sumXSqr = 0.0
    sumXY = 0.0
    sumResidualSqr = 0.0
    sumYMeanSqr = 0.0
    
    // 计算基础统计值
    for i = startIdx to endIdx by 1
        val = source[i]
        x = i - startIdx + 1.0
        sumX += x
        sumY += val
        sumXSqr += x * x
        sumXY += val * x
    
    yMean = sumY / length
    slope = (length * sumXY - sumX * sumY) / (length * sumXSqr - sumX * sumX)
    intercept = yMean - slope * sumX / length + slope
    
    // 计算R²和标准误差
    for i = startIdx to endIdx by 1
        val = source[i]
        x = i - startIdx + 1.0
        regVal = intercept + slope * x
        residual = val - regVal
        sumResidualSqr += residual * residual
        sumYMeanSqr += (val - yMean) * (val - yMean)
    
    stdErr = math.sqrt(sumResidualSqr / (length - 2))
    rSquared = sumYMeanSqr == 0 ? 1 : 1 - (sumResidualSqr / sumYMeanSqr)
    
    // 计算回归线角度(基于价格刻度,近似值)
    angle = math.degrees(math.atan(slope))
    
    [slope, intercept, stdErr, rSquared, angle]

// 获取计算结果
[slope, intercept, stdErr, rSquared, angle] = calcLinearRegParams(sourceInput, startBarIndex, endBarIndex)

// 绘制固定区间线性回归线
if not na(slope)
    startPrice = intercept + slope * 1
    endPrice = intercept + slope * (endBarIndex - startBarIndex + 1)
    line.new(startBarIndex, startPrice, endBarIndex, endPrice, width=2, color=color.blue, extend=extendLineInput ? extend.both : extend.none)

// 标注逐K标准误差
if showStdErrInput and not na(stdErr)
    var label[] stdErrLabels = array.new_label()
    // 清除旧标签
    if barstate.islast
        for lbl in array.all(stdErrLabels)
            label.delete(lbl)
        array.clear(stdErrLabels)
        // 绘制区间内的标准误差标签
        for i = startBarIndex to endBarIndex by 1
            regVal = intercept + slope * (i - startBarIndex + 1)
            errVal = sourceInput[i] - regVal
            lbl = label.new(i, low[i] - ta.atr(10)*0.2, str.tostring(errVal, "#.##"), color=color.new(color.white, 100), textcolor=errVal>0 ? color.green : color.red, size=size.small)
            array.push(stdErrLabels, lbl)

// 显示R²、斜率与角度
var label statsLabel = na
label.delete(statsLabel[1])
if (showRSquaredInput or showSlopeAngleInput) and not na(rSquared)
    statsText = ""
    if showRSquaredInput
        statsText += "R²: " + str.tostring(rSquared, "#.####") + "\n"
    if showSlopeAngleInput
        statsText += "斜率: " + str.tostring(slope, "#.####") + "\n角度: " + str.tostring(angle, "#.##") + "°"
    statsLabel := label.new(bar_index, high + ta.atr(10)*0.5, statsText, color=color.new(color.black, 70), textcolor=color.white, size=size.normal, style=label.style_label_down)

功能说明

  • 区间自定义:通过输入起始和结束K线的bar_index值,精准指定线性回归的分析区间
  • 标准误差标注:区间内每个K线下方显示该价格点与回归线的偏差值,绿色代表高于回归线,红色代表低于回归线,可快速识别异常值
  • 拟合度与趋势强度:显示R²值(越接近1表示拟合度越高)、回归线斜率(正数为上升趋势,负数为下降趋势)和角度(直观展示趋势陡峭程度)
  • 回归线绘制:仅在指定区间内绘制蓝色回归线,可选择是否向两端扩展显示

内容的提问来源于stack exchange,提问作者lvbx9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:45:27