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

如何修改Pine Script时间框架?RSI背离脚本适配特定周期问询

问题解答:用request.security()转换RSI背离脚本的时间框架

可行性说明

完全可以通过request.security()函数将src_fast和src_slow指定为特定时间框架(比如1D)的收盘价,以此在当前时间框架上展示更高时间维度的RSI背离曲线。

修改后的完整代码(Pine Script v4)

study(title="RSI Divergence (Custom TF)", shorttitle="RSI Divergence TF")
// 添加目标时间框架输入,默认设置为1D
target_tf = input.timeframe("D", title="Target Timeframe")

// 使用request.security获取目标时间框架的收盘价作为数据源
src_fast = request.security(syminfo.tickerid, target_tf, close)
len_fast = input(5, minval=1, title="Length Fast RSI")
src_slow = request.security(syminfo.tickerid, target_tf, close)
len_slow = input(14, minval=1, title="Length Slow RSI")

up_fast = rma(max(change(src_fast), 0), len_fast)
down_fast = rma(-min(change(src_fast), 0), len_fast)
rsi_fast = down_fast == 0 ? 100 : up_fast == 0 ? 0 : 100 - (100 / (1 + up_fast / down_fast))

up_slow = rma(max(change(src_slow), 0), len_slow)
down_slow = rma(-min(change(src_slow), 0), len_slow)
rsi_slow = down_slow == 0 ? 100 : up_slow == 0 ? 0 : 100 - (100 / (1 + up_slow / down_slow))

divergence = rsi_fast - rsi_slow
plotdiv = plot(divergence, color = divergence > 0 ? lime : red, linewidth = 2)
band = hline(0)

关键修改点说明

  • 新增target_tf输入框,可自由选择目标时间框架(比如4H、D、W等),无需硬编码。
  • 用request.security(syminfo.tickerid, target_tf, close)替代原代码的close,该函数会从指定时间框架的K线中提取收盘价数据,同步到当前时间框架的图表上。
  • 原RSI计算逻辑完全保留,仅替换数据源的时间维度。

注意事项

  • 时间框架兼容性:如果当前时间框架比目标时间框架更精细(比如当前是1H,目标是1D),request.security()会自动将目标时间框架的收盘价数据填充到当前所有K线上;如果当前时间框架更粗,数据会以最新的目标时间框架数据为准。
  • 避免重绘风险:Pine Script v4中request.security()默认启用前瞻合并,若要规避未来函数风险,可显式添加参数:
    src_fast = request.security(syminfo.tickerid, target_tf, close, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
    
  • 代码简化:如果src_fast和src_slow都使用同一目标时间框架的收盘价,可只调用一次request.security(),将结果赋值给同一个变量复用。

替代方案

  1. 直接切换时间框架运行脚本:如果不需要在当前时间框架叠加展示,最简单的方式就是直接切换到目标时间框架(比如1D),运行原脚本即可,无需修改代码。
  2. 封装RSI计算函数:将RSI计算逻辑封装成自定义函数,再通过request.security()调用整个RSI计算结果,减少重复代码:
    study(title="RSI Divergence (Custom TF)", shorttitle="RSI Divergence TF")
    target_tf = input.timeframe("D", title="Target Timeframe")
    
    // 封装RSI计算函数
    calculateRSI(src, len) =>
        up = rma(max(change(src), 0), len)
        down = rma(-min(change(src), 0), len)
        down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
    
    // 在目标时间框架上计算RSI
    rsi_fast = request.security(syminfo.tickerid, target_tf, calculateRSI(close, 5))
    rsi_slow = request.security(syminfo.tickerid, target_tf, calculateRSI(close, 14))
    
    divergence = rsi_fast - rsi_slow
    plotdiv = plot(divergence, color = divergence > 0 ? lime : red, linewidth = 2)
    band = hline(0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:27:46