如何查询PineScript中line.new线条是否存在及获取其颜色?
判断line.new是否已绘制及获取颜色的方案
最可靠的判断方式
在Pine Script里,未初始化的line对象会返回na,**直接检查line变量是否等于na**是判断线条是否已绘制的最优方案,比查询坐标或价格更准确,也更简洁。
示例代码
// 声明持久化的line变量,避免每次bar重新初始化 var line targetLine = na // 触发绘制线条的条件(示例:收盘价突破50日均线) if close > ta.sma(close, 50) and na(targetLine) targetLine := line.new(bar_index[1], ta.sma(close, 50)[1], bar_index, ta.sma(close, 50), color=color.blue) // 检查线条状态并获取颜色 if not na(targetLine) currentColor = line.get_color(targetLine) // 示例:用label展示颜色信息 label.new(bar_index, low, "线条颜色: " + str.tostring(currentColor), color=currentColor, textcolor=color.white)
你提到的其他方法的局限性
- 通过line.get_price判断:不可靠。未绘制的线条调用该方法会返回
na,但如果已绘制的线条恰好对应价格为na(比如数据缺失场景),会导致误判。 - 通过get_x1/get_y1等坐标方法判断:同样存在风险。未绘制的线条返回
na,但已绘制的线条也可能因特殊情况出现坐标na,不如直接检查line变量本身准确。
额外提示
如果需要管理多条线条,可以用数组存储line对象,遍历数组时同样通过na检查判断线条是否有效。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

