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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:06:16