TradingView Pine Script跨周期获取小时RSI及异常问题排查
关于TradingView Pine Script跨周期/跨品种获取RSI的问题解答
嘿,我来帮你搞定这两个Pine Script的常见问题,都是跨周期/跨品种获取指标时容易踩的坑:
1. 如何从不同图表获取小时级RSI?
核心思路是用跨周期数据获取工具,直接在**目标周期(小时)**内计算RSI,再把结果同步回当前图表的周期。这里推荐用Pine Script v5的request.security()(比旧版security()更稳定),步骤很清晰:
- 指定目标品种的完整符号(比如交易所+交易对,像
"BITTREX:BTCUSDT") - 设置目标周期(小时级可以用
"60"或者"H1") - 在
request.security()的第三个参数里,直接编写目标周期下的RSI计算逻辑
2. 你的代码为什么会出现RSI极端跳变?
你当前的写法犯了一个典型错误:先把小时级的close拉回1分钟周期,再在1分钟周期里计算RSI。
在1分钟周期下,一个小时内的所有K线对应的小时级close是完全相同的——用一串重复的价格计算RSI时,因为RSI依赖连续的价格波动,就会出现一会跳到0、一会跳到100的异常情况,完全不是真实的小时级RSI。
正确的写法应该是这样:
//@version=5 indicator("Coin B小时级RSI", overlay=false) // 直接在目标周期(小时)内计算RSI,再同步回1分钟周期 coinB_hour_rsi = request.security("BITTREX:BTCUSDT", "60", ta.rsi(close, 14)) // 如果需要避免重绘/未来数据,可以加上额外参数 // coinB_hour_rsi = request.security("BITTREX:BTCUSDT", "60", ta.rsi(close, 14), gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) plot(coinB_hour_rsi, title="Coin B小时RSI", color=color.new(color.blue, 0))
额外注意事项:
- 优先用
request.security():Pine Script v5官方更推荐这个函数,参数逻辑更清晰,数据同步更稳定 - 关闭前瞻数据:加上
lookahead=barmerge.lookahead_off可以避免使用未闭合的未来K线数据,这对交易策略至关重要,能避免回测完美但实盘失效的情况 - 确认品种符号正确:要和TradingView内的格式完全一致(比如交易所代码、交易对大小写),不然会获取不到目标数据
内容的提问来源于stack exchange,提问作者Leigh Bicknell
相关产品推荐
相关产品推荐

