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

如何用TradingView Pine代码拆分RSI的Y轴,分区域展示正负成交量RSI

实现拆分RSI Y轴的Pine Script方案

可以通过对RSI值进行区间映射来实现需求,核心思路是根据成交量的放量/缩量状态,将原RSI分别映射到Y轴的50-100和0-50区间。以下是完整代码及说明:

完整代码

//@version=5
indicator("成交量拆分RSI", overlay=false, shorttitle="Vol-Split RSI", precision=2)

// 配置参数
rsiLength = input.int(14, title="RSI周期")
volLookback = input.int(1, title="成交量对比周期", tooltip="对比当前与N期前的成交量")
rsiSource = input(close, title="RSI计算标的")

// 计算核心指标
rsiValue = ta.rsi(rsiSource, rsiLength)
// 计算成交量差值(正为放量,负为缩量,可根据需求修改判断逻辑)
volDelta = volume - volume[volLookback]

// 区间映射处理
splitRsi = if volDelta > 0
    // 正成交量:将0-100的RSI映射到50-100
    50 + (rsiValue / 2)
else
    // 负成交量:将0-100的RSI映射到0-50
    rsiValue / 2

// 绘图设置
plot(splitRsi, color=color.new(volDelta > 0 ? color.green : color.red, 0), linewidth=2)
hline(50, "中间线", color=color.gray, linestyle=hline.style_dashed)
// 强制Y轴范围为0-100
indicator.set_yaxis_lower(0)
indicator.set_yaxis_upper(100)

关键逻辑说明

  • 成交量状态判断:代码中用volume - volume[volLookback]判断放量/缩量,你也可以根据需求修改,比如和成交量均线对比:volume > ta.sma(volume, 20),只需替换volDelta > 0的条件即可。
  • 区间映射:
    • 正成交量时,原RSI(0-100)通过50 + (rsiValue/2)转换为50-100区间,比如原RSI=100对应100,原RSI=0对应50。
    • 负成交量时,原RSI通过rsiValue/2转换为0-50区间,原RSI=100对应50,原RSI=0对应0。
  • 无需额外调整:由于RSI本身是标准化的0-100刻度,映射后无需针对不同标的或时间周期手动调整Y轴,解决了你之前用SMA的痛点。

自定义调整建议

如果你的“正成交量”定义不是放量,而是其他逻辑(比如与价格涨跌关联的成交量),只需修改volDelta的计算或判断条件即可。例如,要区分上涨K线的成交量和下跌K线的成交量:

isUpClose = close > open
volDelta = isUpClose ? volume : -volume

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:27