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

TradingView PineScript v5获取准确EPS历史数据问题求助

解决PineScript v5中EPS同比数据不受图表周期/标的影响的问题

原代码的核心问题在于跨周期引用逻辑错误:你在request.security里引用了当前图表周期的currEps变量,而currEps的返回值会随当前图表周期变化(比如1小时和日线周期下,currEps的bar索引对应完全不同的时间点),导致prevEps的取值完全混乱。另外lookahead_on会引入未来数据,进一步放大误差。

要获取稳定的季度EPS同比数据,必须直接在季度周期(3M)内完成当前和去年同期EPS的获取,完全脱离当前图表周期的影响。同时要处理标的切换时的数据重置,避免残留旧标的数据。

修正后的代码

//@version=5
indicator("EPS YoY Quarter Growth", overlay=false)

// 定义颜色常量(若未全局定义则添加)
colorIndAbove = color.new(color.green, 0)
colorIndBelow = color.new(color.red, 0)
colorIndNeutral = color.new(color.gray, 0)

// EPS同比增长率计算函数
getEpsYrQtGrowth() => 
    float epsGrowthAbove = input.float(defval = 0.25, title = "EPS(YQ) ▲ 阈值(%)", minval = -100, step = 0.01, inline="EPS Growth", group = "Fundamental")
    float epsGrowthBelow = input.float(defval = 0.2, title = "▼ 阈值(%)", minval = 0, step = 0.01, inline="EPS Growth", group = "Fundamental")

    // 直接在3M周期内获取当前季度和去年同期的EPS数据
    [currQtrEps, prevYrSameQtrEps] = request.security(syminfo.tickerid, "3M", 
        [
            request.earnings(syminfo.tickerid, earnings.actual, ignore_invalid_symbol=true, lookahead=barmerge.lookahead_off),
            // 3M周期下,4个bar对应去年同期的季度(12个月)
            request.earnings(syminfo.tickerid, earnings.actual, ignore_invalid_symbol=true, lookahead=barmerge.lookahead_off)[4]
        ],
        lookahead=barmerge.lookahead_off
    )

    // 计算增长率,处理空值和除数为0的情况
    float epsGrowth = nz(prevYrSameQtrEps) == 0 ? na : (currQtrEps - prevYrSameQtrEps) / nz(prevYrSameQtrEps)
    epsGrowth = nz(epsGrowth)

    // 确定显示颜色
    color epsGrowthColor = epsGrowth >= epsGrowthAbove ? colorIndAbove : epsGrowth <= epsGrowthBelow ? colorIndBelow : colorIndNeutral

    fundamentalObject.new(value = epsGrowth, color = epsGrowthColor)

// 调用函数
getEpsYrQtGrowth()

关键改动说明

  • 完全脱离当前图表周期:通过request.security直接在季度周期中获取数据,不管当前图表是1分钟还是日线,都从统一的3M周期取EPS,彻底避免周期切换带来的偏差
  • 关闭未来数据:所有lookahead设为barmerge.lookahead_off,避免提前获取未公布的EPS,保证数据真实性
  • 自动适配标的切换:去掉非input变量的var声明,request.security会随标的切换自动重新获取对应标的的季度数据,不会残留旧标的数据
  • 严谨的异常处理:用nz()处理EPS为空或除数为0的情况,避免出现无效计算值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:10:27