Pine 脚本从 if 语句中删除旧行?

Pine script erase old line from inside if statement?

我试图从一个条件画一条水平线,然后从前一个条件为真时擦除这条线,但是如果我把要删除的代码放在 if 语句中,我会得到一个错误,它赢了如果我将要删除的代码放在 if 语句之外,则不画任何线条。

r = close > close[1] and close[1] > close[2]
selleverything = if r
l1 := line.new(bar_index[1], price1, bar_index, price1, color=color.red, style=line.style_solid, 
width=1, extend=dS1 ? extend.right : extend.both)

上面画线没问题,但是如果我加上

line.delete(l1[1])

在 if 语句中我得到一个“无效表达式不能分配给变量”

如果我将 line.delete(l1[1]) 放在 if 语句之外,则不会绘制任何线条。

感谢任何帮助。

本例中的 if 语句在变量声明范围内。

selleverything = if r

改为将其移至全局范围,如下例所示:

//@version=4
study("My Script")
r = close > close[1] and close[1] > close[2]

var line l1 = na
price1 = close
dS1 = true

if r
    l1 := line.new(bar_index[1], price1, bar_index, price1, color=color.red, style=line.style_solid, width=1, extend=dS1 ? extend.right : extend.both)
    line.delete(l1[1])
  1. 声明 price1dS1 变量,因为它们丢失了(相应地分配给您的代码)
  2. 预声明行 l1 变量。
  3. 将 if 语句移至全局范围。