Сценарий Pine не работает. Условие, похоже, не работает

#pine-script

#pine-скрипт

Вопрос:

Приведенный ниже сценарий всегда возвращает красный цвет для моих цветов меток. Что я здесь делаю не так? Приветствуется любая обратная связь (довольно новая для 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))
 

Комментарии:

1. Заголовок вашего вопроса слишком неопределенный.

Ответ №1:

Вы объявили свои метки с 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)