Нарисуйте линию в pinescript v5

Я написал код на языке 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) 

Я определяю свечу поглощения, рисую линию от открытия свечи поглощения и ожидаю, когда свеча в будущем пересечет или пересечет линию, индикатор перестанет рисовать линию, он рисует линию очень хорошо, но часто не прекращает рисовать, когда свеча пересекает или пересекает под линией.

Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужен флаг, чтобы увидеть, пересечена цена или нет. И обновлять его только тогда, когда он не пересекается.

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, поэтому вы можете захотеть повторно посетить эти точки.

Другие вопросы по теме