下面的脚本总是为我的标签颜色返回红色。我在这里做错了什么?感谢任何反馈(对pine来说很新鲜(。
study("Info Labels", overlay = true)
// Variables and Conditions
ema8 = ema(close, 8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema34 = ema(close, 34)
ema34h = ema(high, 34)
sc1 = ema8 >= ema13
sc2 = ema13 > ema21
sc3 = ema21 > ema34
sc4 = close > ema34h
colorlabel1 = sc1 ? color.green : color.red
colorlabel2 = sc4 ? color.green : color.red
var label1 = label.new(bar_index, high, text = "8:13:21", style = label.style_label_lower_right, color =
colorlabel1, size = size.small)
var label2 = label.new(bar_index, low, text = "Wave ", style = label.style_label_lower_left, color = colorlabel2, size = size.small)
label.set_xy(label1, bar_index[1], high[1] + atr(21))
label.set_xy(label2, bar_index[1], high[1] + atr(21))
您使用var
关键字声明了标签
这意味着这些变量只在第一个栏上初始化一次
在第一个栏上,sc1
和sc4
条件都为false,因此标签将使用颜色red
创建,并且不再更改。
条件colorlabel1
和colorlabel2
正确地改变
您只需要更新标签的颜色即可反映这一点
就像用label.set_xy()
设置标签的位置一样,也可以用label.set_color()
设置颜色。
您可以在手册的表达式、声明和语句下阅读更多关于var
如何工作的信息
这将按您的意愿工作。
//@version=4
study("Info Labels", overlay = true)
// Variables and Conditions
var label1 = label.new(bar_index, high, text = "8:13:21", style = label.style_label_lower_right, size = size.small)
var label2 = label.new(bar_index, low, text = "Wave ", style = label.style_label_lower_left, size = size.small)
ema8 = ema(close, 8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema34 = ema(close, 34)
ema34h = ema(high, 34)
sc1 = ema8 >= ema13
sc2 = ema13 > ema21
sc3 = ema21 > ema34
sc4 = close > ema34h
colorlabel1 = sc1 ? color.green : color.red
colorlabel2 = sc4 ? color.green : color.red
label.set_xy(label1, bar_index[1], high[1] + atr(21))
label.set_xy(label2, bar_index[1], high[1] + atr(21))
label.set_color(label1, colorlabel1)
label.set_color(label2, colorlabel2)