Мой индикатор TradingView добавляет дополнительные линии на дневные графики с помощью функции line.new()

#pine-script #trading #indicator

#pine-script #торговля #индикатор

Вопрос:

Я пытаюсь нарисовать линии поддержки и сопротивления, а также разворот. Однако он продолжает рисовать 2 линии вместо 1. Из того, что я видел, он делает это только на дневных графиках и выше. Код:

 // NOT ALL CODE IS SHOWN

draw_line(ycoor, style)=>
    line.new(x1 = bar_index, 
             y1 = ycoor, 
             x2 = bar_index - 1, 
             y2 = ycoor, 
             extend = extend.both,
             color = ycoor >= close ? color.new(color.red,10) : color.new(color.lime,10), 
             style = style, 
             width = 1) 
pmh = security(syminfo.tickerid, 'M', high)[1] 
pml = security(syminfo.tickerid, 'M', low)[1] 
pmc = security(syminfo.tickerid, 'M', close)[1] 
 
pdh = security(syminfo.tickerid, 'D', high)[1] 
pdl = security(syminfo.tickerid, 'D', low)[1] 
pdc = security(syminfo.tickerid, 'D', close)[1] 

// this is used for user option in the settings for daily of weekly support and resistance 
alt = tl == 'Daily'

pivot = alt ? ((pdh   pdl   pdc) / 3) : (pwh   pwl   pwc) / 3
//there should be more code here for the supports and resistances but I'm not allowed to show. However it is similar.
// the zones variables are used for calculating supports and resistances

multiplier = alt ? 0.001 : 0.002

// formula for first first support and resistance
r3 = alt ? draw_line((zone3 - (pdc * multiplier)), line.style_solid) : draw_line((zone3 - (pwc * multiplier)), line.style_solid)
s3 = alt ? draw_line((zone3   (pdc * multiplier)), line.style_solid) : draw_line((zone3   (pwc * multiplier)), line.style_solid)
 

Вот как это выглядит на дневном графике. Добавлено так много дополнительных линий.

Вот как это должно выглядеть. Должно быть только ** 3 зоны выше и ниже точки разворота (желтая линия)

Любая помощь приветствуется. Спасибо. Дайте мне знать, если вам нужна дополнительная информация.

Ответ №1:

В вашем коде отсутствует половина переменных, и он не компилируется. Чтобы предотвратить двойную печать строк, вы должны удалить предыдущую строку с line.delete помощью функций (, etc) или переместить позицию с line.set_x помощью функций ( line.set_xy , line.set_x2 etc) .

 var line l1 = na
if condition
    line.delete(l1[1])
    l1 := line.new(x, y, x2, y2 ... )