如何在Pine Script中为Box对象的各边设置不同颜色?
为Pine Script中的Box对象设置不同边框颜色
嗨,我来帮你解决这个问题~首先得明确:Pine Script的原生box.new()函数并不支持单独为四条边框设置不同颜色,它只能统一设置整个边框的颜色。不过我们可以用个变通方法——用四个独立的line对象来模拟Box的四条边,这样就能给每条边设置不同的颜色啦!
以下是修改后的完整代码,完美实现你的需求:
//@version=4 study("Custom Border Color Box", overlay=true) // 定义Box的四个顶点坐标(和你原代码参数一致) left_bar = bar_index[100] top_price = highest(high, 50) right_bar = bar_index[10] bottom_price = lowest(low, 50) // 绘制四条独立的边,每条边设置不同颜色 // 上边(红色) line_top = line.new(left_bar, top_price, right_bar, top_price, color=color.red, width=1, style=line.style_solid) // 下边(绿色) line_bottom = line.new(left_bar, bottom_price, right_bar, bottom_price, color=color.green, width=1, style=line.style_solid) // 左边(蓝色) line_left = line.new(left_bar, top_price, left_bar, bottom_price, color=color.blue, width=1, style=line.style_solid) // 右边(黄色) line_right = line.new(right_bar, top_price, right_bar, bottom_price, color=color.yellow, width=1, style=line.style_solid) // 绘制背景填充(模拟原box的bgcolor效果,边框设为完全透明避免冲突) bg_box = box.new(left_bar, top_price, right_bar, bottom_price, border_color=color.new(color.white, 100), bgcolor=color.new(color.purple, 90)) // 删除上一根K线对应的元素,避免图表堆积 line.delete(line_top[1]) line.delete(line_bottom[1]) line.delete(line_left[1]) line.delete(line_right[1]) box.delete(bg_box[1])
简单说明下代码逻辑:
- 先复用了你原代码里的Box边界坐标,保证范围和你原本的需求一致
- 用四个
line.new()分别绘制四条边,每条边可以单独指定颜色、宽度和样式 - 额外加了一个无框的box来实现背景填充效果,如果不需要背景,直接删掉
bg_box相关代码就行 - 最后保留了删除历史元素的逻辑,防止图表上出现大量重复的线条和框体
内容的提问来源于stack exchange,提问作者frien_dd
相关产品推荐
相关产品推荐

