如何在Pine Script 5中获取图形对象尺寸及解决plot函数报错?
问题解决:Pine Script中获取绘图对象高度及复用绘图数据
问题说明
需要获取绘图对象p1和p2的高度,同时希望将p1作为参数传入plot()函数使用,但p1并非变量,尝试多种方法后结果始终为1且报错,相关代码如下:
indicator(title="Ichimoku Cloud", shorttitle="Ichimoku", overlay=true) conversionPeriods = input.int(9, minval=1, title="Conversion Line Length") basePeriods = input.int(26, minval=1, title="Base Line Length") laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length") displacement = input.int(26, minval=1, title="Lagging Span") donchian(len) => math.avg(ta.lowest(len), ta.highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = math.avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,title="Leading Span A") p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,title="Leading Span B")
核心原因
在Pine Script中,plot()函数返回的是绘图对象的句柄(整数标识),而非线条对应的价格数值。你拿到的1是这个绘图对象的标识ID,不是错误,是正常返回值,但这个句柄不能直接当作价格数据传入plot()函数。
解决方案
- 获取线条高度(价格值):直接使用生成绘图线条的原始变量
leadLine1和leadLine2,这两个变量才是存储你需要的价格高度数据的载体,p1只是用来标识这个绘图对象的句柄。 - 复用绘图数据到新的plot中:如果要基于
p1对应的线条数据做新绘图,直接用leadLine1作为参数传入plot()即可,示例:
# 基于leadLine1(即p1对应的线条数据)绘制新线条 plot(leadLine1 + 5, color=color.orange, title="Leading Span A Offset")
- 操作绘图对象属性:如果是要获取或修改绘图对象的样式属性(比如颜色、宽度),可以使用Pine Script提供的
plot.get*系列函数,例如:
# 获取p1的颜色 p1_color = plot.get_color(p1)
内容的提问来源于stack exchange,提问作者RIGBY
相关产品推荐
相关产品推荐

