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

如何在PineScript中实现从最低价下方显示成交量柱

如何让自定义成交量柱从主图最低价下方开始显示?

我尝试添加带额外移动平均线的自定义成交量柱,但始终无法让它从最低价下方开始显示,试过多种方法都无效。找到的参考代码(如下)也没解决问题,成交量柱还是从0开始:

// This shows an example of how to place values at the bottom of the main chart and scale with chart
//@version=5
indicator("FRM Volume Scale v1.0", "Scaler", true, format = format.volume, scale =  scale.none)

// Inputs
scalePercentage = input.int(30, "Vertical %", step = 10, maxval = 100)
lookBack = input.int(100, "Last Bars to Look", minval = 2, step = 20)

scaleFactor = 100 / scalePercentage
plot(volume, color = color.orange, title="Volume", style=plot.style_columns, transp=0) 
limit = ta.highest(volume, lookBack)
plot(limit * scaleFactor, "High", #00000000)

我现在能调整缩放让成交量柱只显示在图表底部,但没法把它上移(最后一段plot只是画了条线,没改变底部位置)。当前代码如下:

//@version=5
indicator("Volume Bar", "Scaler", true, format = format.volume, scale =  scale.none)
    
// Inputs
scalePercentage = input.int(30, "Vertical %", step = 10, maxval = 100)
lookBack = input.int(100, "Last Bars to Look", minval = 2, step = 20)
    
scaleFactor = 100 / scalePercentage
c_off_vol = volume * ta.highest(high, lookBack) / ta.highest(volume, lookBack) + ta.lowest(low, lookBack) / scaleFactor
plot(i_vol_on ? c_off_vol / scaleFactor : na, "Volume", color= open < close ? color.new(color.green, 50) : color.new(color.red, 50), style=plot.style_columns)

无论怎么设置偏移量,成交量柱仍从0开始显示。


解决方案

核心思路是将成交量柱的底部基准从0替换为主图最低价下方的偏移位置,同时把成交量数值按比例缩放到主图的垂直空间内。修改后的代码如下:

//@version=5
indicator("Volume Bar at Bottom", "VolBottom", overlay=true, format=format.volume)

// 输入参数
scalePercentage = input.int(30, "成交量区域占主图垂直比例", step=10, maxval=100)
lookBack = input.int(100, "计算区间K线数量", minval=2, step=20)
volOffset = input.float(0.5, "最低价下方偏移比例", step=0.1) // 控制成交量柱底部与最低价的距离

// 计算主图价格区间和成交量缩放因子
priceRange = ta.highest(high, lookBack) - ta.lowest(low, lookBack)
volMax = ta.highest(volume, lookBack)
volScale = (priceRange * scalePercentage / 100) / volMax // 让成交量最大值匹配设定的垂直比例

// 设定成交量柱的底部基准(最低价下方)
baseLevel = ta.lowest(low, lookBack) - (priceRange * volOffset)

// 计算成交量柱的顶部位置
volBarTop = baseLevel + (volume * volScale)

// 绘制自定义成交量柱
plot(volBarTop, "成交量柱", color=open < close ? color.new(color.green, 30) : color.new(color.red, 30), style=plot.style_columns)

// 可选:添加成交量均线
volMA = ta.sma(volume, 20)
plot(baseLevel + (volMA * volScale), "成交量均线", color=color.blue, linewidth=2)

关键修改说明

  • 替换scale=scale.none为overlay=true,确保指标直接叠加在主图上
  • 计算主图价格区间priceRange,将成交量数值按比例缩放到主图的垂直空间,避免成交量数值过大导致显示异常
  • 用baseLevel定义成交量柱的底部位置(最低价下方偏移),彻底替代默认的0基准
  • 成交量柱的顶部位置由baseLevel加上缩放后的成交量数值得到,柱子从设定的底部位置向上延伸

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:47:10