TradingView Pine Script:如何让两个plotshape分两行显示?
解决方案:通过控制
plotshape垂直位置实现上下排列 表格(table)无法嵌入plotshape这类绘图元素,因为二者属于不同图层:plotshape绘制在主图表层,而table是独立的单元格布局组件。正确的做法是直接通过plotshape的位置参数精确控制两个形状的垂直位置,实现正下方排列。
核心思路
- 用
location.absolute模式配合y参数,自定义两个形状的垂直坐标。 - 基于同一个基准位置(比如近期最高价上方),给第二个形状设置比第一个小的
y值,实现下移效果。 - 用ATR指标计算偏移间距,适配不同品种的价格波动,保证间距合理性。
代码示例
//@version=5 indicator("双Plotshape上下排列", overlay=true) // ---------------------- 第一个Plotshape逻辑(替换为你的实际逻辑) ---------------------- firstCondition = close > ta.highest(close, 20) // 示例:收盘价创20日新高 // 计算顶部基准位置:取50日最高价上方,叠加ATR避免和K线重叠 topBase = ta.highest(ta.highest(close, 50), 1) + ta.atr(10) * 0.5 // 绘制第一个形状 plotshape(firstCondition, title="顶部形状", location=location.absolute, y=topBase, style=shape.triangleup, color=color.green, size=size.small) // ---------------------- 第二个Plotshape逻辑(替换为你的实际逻辑) ---------------------- secondCondition = close < ta.lowest(close, 20) // 示例:收盘价创20日新低 // 第二个形状的位置:第一个形状位置下方,用ATR的0.3倍作为间距 secondY = topBase - ta.atr(10) * 0.3 // 绘制第二个形状(正下方) plotshape(secondCondition, title="下方形状", location=location.absolute, y=secondY, style=shape.triangledown, color=color.red, size=size.small)
关键说明
- 替换示例中的
firstCondition和secondCondition为你自己的逻辑即可。 - 调整
ta.atr(10) * 0.5和ta.atr(10) * 0.3的乘数,可以修改形状与K线的间距、两个形状之间的间距。 - 如果你的第一个形状原本用
location.top,改成location.absolute+自定义y值后,能更精准控制位置。
内容的提问来源于stack exchange,提问作者chprot
相关产品推荐
相关产品推荐

