TradingView高时间框架RSI指标在低时间框架上的当前值显示问题
在TradingView Pine Script中保持60分钟RSI实时波动值持续显示的解决方案
我完全懂你这个头疼的问题——在5分钟时间框架上加载60分钟RSI时,实时波动的当前值总是刚显示几秒就消失,最后只剩最后一根K线收盘价对应的RSI数值。哪怕你明确想要这个重绘效果,就是搞不定它持续显示。其实这大概率是因为默认的指标逻辑只针对已闭合的K线更新,加上可能忽略了几个关键的参数或设置,下面给你几个可行的解决办法:
1. 用request.security开启实时重绘参数
TradingView的request.security函数默认不会主动更新更高时间框架的未闭合K线数据,你需要手动开启实时更新的参数。试试这段代码:
//@version=5 indicator("60min RSI (实时波动版)", overlay=false) // 调用60分钟周期的RSI,开启重绘和实时数据同步 rsi_60min = request.security( syminfo.tickerid, "60", ta.rsi(close, 14), gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_on ) // 绘制RSI曲线 plot(rsi_60min, color=color.new(color.blue, 0), linewidth=2, title="60分钟RSI") // 实时显示当前RSI数值的标签 var label rsi_current_label = label.new( bar_index, rsi_60min, "", color=color.white, textcolor=color.black, style=label.style_label_down, size=size.small ) // 每一根bar更新时,同步更新标签的位置和文本 label.set_xy(rsi_current_label, bar_index, rsi_60min) label.set_text(rsi_current_label, str.tostring(rsi_60min, "#.##"))
这里的lookahead=barmerge.lookahead_on是核心——它会让指标实时抓取60分钟K线的未闭合数据,实现你想要的重绘效果。同时用label组件实时更新数值,代替指标默认的静态数值显示,这样就能持续看到RSI的实时波动了。
2. 检查TradingView的指标重绘设置
有时候代码没问题,但指标的全局设置没开重绘权限:
- 右键点击你添加的RSI指标 → 选择「指标设置」
- 在弹出的窗口里,找到「允许重绘」(Allow Repainting)的选项并勾选
这个开关没开的话,哪怕代码里写了重绘逻辑,也会被TradingView限制,导致实时值无法持续显示。
3. 别用仅针对闭合K线的判断逻辑
如果你之前的代码里加了barstate.isconfirmed或者barstate.islastconfirmedhistory这类判断,那只有当5分钟K线闭合时才会更新RSI,自然看不到实时波动。比如这种错误写法:
// 错误示例:只在K线闭合时计算RSI if barstate.isconfirmed rsi_60min = request.security(syminfo.tickerid, "60", ta.rsi(close,14))
要去掉这类条件,让每一根实时更新的bar都重新计算最新的60分钟RSI值。
按照上面的方法调整后,你应该就能看到60分钟RSI的数值随着行情实时波动,并且持续显示在屏幕上了——和你上传的示例图效果一致。
内容的提问来源于stack exchange,提问作者LKPIP




