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

Pine Script:security.request()调用访问前序序列值遇运行时错误

问题原因及解决方案

问题核心

代码中offset=-1触发了未来数据请求,违反了Pine Script的运行时规则。

在Pine Script的索引逻辑里:

  • 正数索引[n]对应过去第n根K线的数据(比如close[1]是上一根K线的收盘价)
  • 负数索引[-n]对应未来第n根K线的数据(比如close[-1]是还未生成的下一根K线收盘价)

request.security函数仅允许请求已生成的历史/当前数据,无法访问未生成的未来数据。当你使用offset=-1时,smaRes[offset]指向当前时间框架的下一根K线数据,属于非法请求,直接导致运行错误(红色感叹号),因此无法绘制内容。

而offset=0时,取的是当前K线的smaRes,属于有效数据,所以代码能正常运行。

修复方案

如果你的需求是获取更高时间框架(1D)的前一根K线的smaRes数据,需要在request.security的上下文内处理偏移,而非在当前时间框架用负数索引。修改后的代码如下:

//@version=5
indicator("TestScript", "TestScript", true)

smaRes = ta.sma(close, 1)
htf = "1D"
var smaResHi = 0.0

// 在更高时间框架的上下文里,取前一根K线的smaRes数据
smaResHi := nz(request.security(syminfo.tickerid, htf, nz(smaRes[1])))

plotchar(smaRes, "smaRes*", "")
plotchar(smaResHi, "smaResHi", "")

逻辑说明

request.security会切换到目标时间框架(1D)的运行上下文,此时[1]代表1D时间框架里已生成的前一根K线数据,属于合法的历史数据,不会触发未来数据错误,代码即可正常运行并绘制内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:57:26