Я пытаюсь создать исследование TradingView, которое рисует линию от пересечения на текущем баре до пересечения на предыдущем баре, где предыдущий бар меньше установленного максимального количества баров назад.
Я хочу рисовать только линии с отрицательным наклоном (т. е. предыдущее пересечение происходит с более высоким значением), и мне также не нужно несколько линий с одной и той же начальной точкой (без перекрывающихся линий).
Я могу правильно рисовать линии, но я не знаю, как удалить линии, когда они перекрываются (имеют одну и ту же начальную точку).
При рисовании новой линии, которая будет перекрывать старую, как мне получить ссылку на старую линию, чтобы я мог ее удалить?
Следующее кажется невозможным в сосновом сценарии:
- Итерация по предыдущим значениям в серии строк для проверки их значений x, y
- Доступ к ряду строк по индексу, например bar_index
- Доступ к предыдущему значению строки без создания новой строки
//@version=4
study(title='MACD trend')
src = input(close)
fast = input(12)
slow = input(26)
smooth = input(9)
numBarsBack = input(50)
fast_ma = wma(src, fast)
slow_ma = wma(src, slow)
macd = fast_ma-slow_ma
signal = wma(macd, smooth)
hist = macd - signal
if (crossunder(macd, signal))
// cross under happened on previous bar
for i = 1 to numBarsBack
// inspect previous bars up to 'numBarsBack'
if (crossunder(macd,signal)[i])
if (macd - macd[i] < 0)
// located a previous cross under with a higher macd value
l = line.new(bar_index[1], macd[1], bar_index[i+1], macd[i+1], width=1, color=color.red)
// drew line from previous cross under to current cross under,
// offset x's by 1 bar since crossunder returns true based on previous bar's cross under
for k = 1 to i
// inspect previous bars up to the starting point of drawn line
if (crossunder(macd, signal)[k] and macd > macd[k])
// if the previous cross under value is less than the current one
line.delete(l[1])
// not sure what the 1 here indexes???
plot(title='MACD', series=macd,transp=0,linewidth=2, color=color.yellow)
plot(title='SIGNAL', series=signal,transp=0,linewidth=2, color=color.red)