如何在图表上绘制矩形/框?Pine脚本填充线间区域求助
解决Pine Script中填充两条自定义线之间区域的问题
嘿,我明白你的困扰了——用line.new画了线之后,发现fill函数没法直接用在这些line对象上,label的方形样式又满足不了精确位置和透明度的需求。别担心,这里有两个靠谱的解决方案:
方案一:用plot替代line.new,配合fill函数填充
fill函数的设计是用来填充两个plot系列(比如plot或hline生成的对象)之间的区域,而不是line.new创建的单个线条对象。所以如果你的上下边界是可以用连续数值序列表示的(比如基于指标计算的动态边界),直接用plot来绘制边界,再用fill填充就很方便:
//@version=5 indicator("填充上下边界区域", overlay=true) // 替换成你自己的上下边界计算逻辑 upper_bound = ta.sma(close, 20) + 2 * ta.stdev(close, 20) lower_bound = ta.sma(close, 20) - 2 * ta.stdev(close, 20) // 绘制上下边界线 upper_plot = plot(upper_bound, color=color.green) lower_plot = plot(lower_bound, color=color.red) // 填充两者之间的区域,transp参数控制透明度(0-100) fill(upper_plot, lower_plot, color=color.new(color.blue, 70))
方案二:用box.new创建矩形填充区域(适配line.new的精确坐标)
如果你的线条是非连续的、特定区间的线段(比如只在某几个bar之间绘制的线),那box.new就是完美的选择——它支持精确设置左上角、右下角的坐标,还能自定义颜色和透明度,完全能匹配你用line.new定义的线段范围:
//@version=5 indicator("用Box填充自定义线段区域", overlay=true) // 替换成你自己的线段坐标逻辑 // 上线的坐标 x1_upper = bar_index[10] y1_upper = high[10] + 0.5 x2_upper = bar_index y2_upper = high + 0.5 // 下线的坐标 x1_lower = bar_index[10] y1_lower = low[10] - 0.5 x2_lower = bar_index y2_lower = low - 0.5 // 创建两条自定义线段 upper_hline = line.new(x1_upper, y1_upper, x2_upper, y2_upper, extend=extend.none, color=color.green) lower_hline = line.new(x1_lower, y1_lower, x2_lower, y2_lower, extend=extend.none, color=color.red) // 创建填充用的矩形Box,匹配线段的坐标范围 box.new( left=math.min(x1_upper, x2_upper), // 取线段x坐标的最小值作为左边界 top=y1_upper, // 上线的y值作为上边界 right=math.max(x1_upper, x2_upper), // 取线段x坐标的最大值作为右边界 bottom=y1_lower, // 下线的y值作为下边界 color=color.new(color.blue, 70), // 设置填充颜色和透明度 border_color=color.transparent // 隐藏Box的边框,避免和原有线条冲突 )
小提示
- 如果你的线段是动态生成的(比如根据条件创建),记得在合适的时机用
box.delete清理旧的Box,避免图表上堆积过多对象。 color.new()函数可以轻松设置颜色透明度,第二个参数是0(完全不透明)到100(完全透明)的数值,和你之前用的transp参数逻辑一致。
内容的提问来源于stack exchange,提问作者cody
相关产品推荐
相关产品推荐

