You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

TradingView Pine Script多时间框架RSI开发问题求助

解决TradingView多时间框架RSI显示错误的问题

我来帮你搞定这个多时间框架RSI的问题~你遇到的核心问题其实是security函数的默认行为导致的数据对齐和计算逻辑错误,下面一步步给你拆解和解决:

问题根源分析

你之前的两种写法都没处理好security函数的数据合并规则未来函数风险

  1. 第一种写法security(tickerid, "5", rsi(src, 14)):默认情况下security会启用"提前看盘"(lookahead),导致在大时间框架下会用到还没走完的小时间框架数据,相当于引入了未来函数,数值自然不准。
  2. 第二种写法rsi(security(tickerid, "5", src), 14):虽然拿到了小时间框架的收盘价序列,但在大时间框架下,这个序列会被压缩对齐,RSI计算时用的是"对齐后"的不完整小周期数据,结果当然不对。

正确实现代码(Pine Script v5)

//@version=5
indicator("Multi Time Frame RSI", "MTF RSI", overlay=false)

// 可配置参数
src = input.source(close, title="Source")
rsi_length = input.int(14, title="RSI Length")
target_tf = input.timeframe("5", title="Target Time Frame")

// 核心:在security内部完成RSI计算,同时关闭未来函数、开启缺口显示
mtf_rsi = request.security(
    syminfo.tickerid, 
    target_tf, 
    ta.rsi(src, rsi_length),
    gaps=barmerge.gaps_on,       // 显示数据缺口,避免错误填充
    lookahead=barmerge.lookahead_off  // 关闭未来函数,保证数据实时准确
)

plot(mtf_rsi, title="MTF RSI", color=color.purple, linewidth=1)

关键参数解释

  • lookahead=barmerge.lookahead_off:彻底关闭提前看盘功能,确保你看到的RSI值都是当前时刻已经确定的小时间框架数据,没有未来偏移。
  • gaps=barmerge.gaps_on:当小时间框架在当前大时间框架K线内有数据缺失时(比如休市),会显示缺口,而不是用错误的数据自动填充,保证数值真实性。
  • request.security内部计算RSI:确保RSI是基于完整的小时间框架序列(14个5分钟K线)计算的,而不是被大时间框架压缩后的残缺序列。

兼容Pine Script v4的写法

如果你还在使用v4,只需要把request.security换成security即可:

//@version=4
study("Multi Time Frame RSI", "MTF RSI", overlay=false)

src = input(title="Source", type=input.source, defval=close)
rsi_length = input(title="RSI Length", defval=14)
target_tf = input(title="Target Time Frame", defval="5")

mtf_rsi = security(
    syminfo.tickerid, 
    target_tf, 
    rsi(src, rsi_length),
    gaps=barmerge.gaps_on,
    lookahead=barmerge.lookahead_off
)

plot(mtf_rsi, title="5min_RSI", color=color.purple, linewidth=1)

现在不管你切换到1小时、4小时还是日线图,都能准确显示5分钟周期计算出的RSI值了~

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

火山引擎 最新活动