Я написал код на языке pine script v5 для рисования горизонтальной линии от открытия бычьей поглощающей свечи до правой стороны для 100 свечей, но рисование должно прекращаться, когда свеча пересекает линию или пересекает ее под линией, но это не работает должным образом. Может ли кто-нибудь помочь мне исправить мои ошибки, пожалуйста?
//@version=5
indicator( "_Line", overlay = true)
_White = close >= open
_Black = close <= open
_Body = (close - open)
_Eng = _Black[2] and _White[1] and close[1] >= high[2] and _Body[1] >= 2 * _Body[2]
var line _Line = na
_Level = open[1]
_Over = ta.crossover(open, _Line.get_y2())
_Under = ta.crossunder(open, _Line.get_y2())
if _Eng
_Line := line.new(bar_index[1], _Level, bar_index+100, _Level, width = 1)
if _Over or _Under
line.set_x2(_Line, bar_index)
Я определяю свечу поглощения, рисую линию от открытия свечи поглощения и ожидаю, когда свеча в будущем пересечет или пересечет линию, индикатор перестанет рисовать линию, он рисует линию очень хорошо, но часто не прекращает рисовать, когда свеча пересекает или пересекает под линией.

Вам нужен флаг, чтобы увидеть, пересечена цена или нет. И обновлять его только тогда, когда он не пересекается.
var line _Line = na
var is_hit = false
_Level = open[1]
_Over = ta.crossover(open, _Line.get_y2())
_Under = ta.crossunder(open, _Line.get_y2())
if _Eng
_Line := line.new(bar_index[1], _Level, bar_index+100, _Level, width = 1)
is_hit := false
is_hit := (_Over or _Under) ? true : is_hit
if (not is_hit)
line.set_x2(_Line, bar_index)
Я не уверен, какова ваша основная цель с помощью этого индикатора, поскольку вы используете цены open для кроссов и создаете свою линию с помощью x2=bar_index+100, поэтому вы можете захотеть повторно посетить эти точки.