如何用TradingView Pine Script计算下一K线RSI值
计算新K线RSI的方法及Pine Script序列创建技巧
一、手动计算周期为3的RSI
已知价格序列:3 → 4 → 5 → 8,计算第4根K线的RSI(周期3):
- 先计算每根K线的价格变动:
- 第2根相对第1根:4-3=1(上涨)
- 第3根相对第2根:5-4=1(上涨)
- 第4根相对第3根:8-5=3(上涨)
- 计算周期内的平均上涨幅度与平均下跌幅度:
- 平均涨幅 = (1+1+3)/3 = 5/3 ≈1.6667
- 平均跌幅 = 0(无下跌变动)
- 代入RSI公式:
RSI = 100 - (100 / (1 + (平均涨幅/平均跌幅)))
由于平均跌幅为0,RS趋近于无穷大,最终RSI结果为100(所有变动均上涨时,RSI拉满)
二、Pine Script中手动创建序列的正确写法
你尝试的连续赋值写法不符合Pine Script的序列逻辑,因为序列是逐Bar生成的,每个Bar只能对应一个值。要模拟多Bar的价格序列,需要通过bar_index判断不同Bar的赋值:
//@version=5 indicator("手动模拟RSI计算", overlay=false) // 声明保留历史值的变量,逐Bar赋值模拟收盘价序列 var float sim_close = na if bar_index == 0 sim_close := 3 // 第1根K线收盘价 elif bar_index == 1 sim_close := 4 // 第2根K线收盘价 elif bar_index == 2 sim_close := 5 // 第3根K线收盘价 elif bar_index == 3 sim_close := 8 // 第4根K线收盘价 // 计算周期3的RSI calc_rsi = ta.rsi(sim_close, 3) // 输出RSI值 plot(calc_rsi, title="计算出的RSI", color=color.new(color.red, 0))
这段代码会在第4根Bar(bar_index=3)时计算出RSI=100,和手动计算结果一致。
内容的提问来源于stack exchange,提问作者Arif
相关产品推荐
相关产品推荐

