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

使用request.security计算高时间框架RSI时需设置周期乘数的问询

低时间框架下调用高时间框架指标的周期偏差问题及解决方案探讨

在Pine Script开发中,我发现一个很少被提及的细节问题:当在低时间框架图表上,通过request.security获取高时间框架数据,再计算RSI、MACD、SMA这类基于周期的指标时,必须为指标周期设置时间框架乘数,否则计算结果会严重偏离预期。

问题示例:15分钟图计算1小时14周期RSI

常规教程里的写法通常是这样的:

// 防重绘函数
nonRepaintingSecurity(sym, tf, src) =>
    request.security(sym, tf, src[barstate.isrealtime ? 1 : 0], barmerge.gaps_off, barmerge.lookahead_off)[barstate.isrealtime ? 0 : 1]

highTFClose = nonRepaintingSecurity(syminfo.tickerid, "60", close)
rsi_value = ta.rsi(highTFClose, 14) // 实际得到的是14/4周期的RSI(因为4根15分钟K线=1小时)

问题原因

由于1小时包含4根15分钟K线,高时间框架的收盘价会在低时间框架的4根K线中重复传入ta.rsi函数。比如原本的1小时收盘价序列[100,102,101,105],会被重复成16个数据点,导致指标实际计算覆盖的周期变成了14/4,完全不符合预期的14小时周期。

我的临时解决方案

我通过将指标周期乘以时间框架倍数(比如这里的4)来修正问题:

// 防重绘函数
nonRepaintingSecurity(sym, tf, src) =>
    request.security(sym, tf, src[barstate.isrealtime ? 1 : 0], barmerge.gaps_off, barmerge.lookahead_off)[barstate.isrealtime ? 0 : 1]

highTFClose = nonRepaintingSecurity(syminfo.tickerid, "60", close)
rsi_value = ta.rsi(highTFClose, 14*4) 

请教各位开发者

想请教社区里的Pine Script开发者:

  • 是否存在无需手动设置乘数的解决方案?
  • 如果这是唯一可行的方法,有没有能自动计算时间框架倍数的通用函数可以分享?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:37:26