В pine-скрипте как устанавливать максимумы и минимумы в зависимости от условий?

#pine-script

Вопрос:

Я пытаюсь закодировать какой-то ящик Дарваса, который отображает самые высокие максимумы и самые низкие минимумы, пока не произойдет прорыв.

обычная реализация имеет период возврата, поэтому график меняется произвольно после нескольких баров без соблюдения какой-либо логики. что я хотел бы сделать, так это: если текущее закрытие опускается ниже текущего минимума, максимум также должен обновиться и измениться на текущий или самый последний максимум,

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

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

 study("DARVAS BOX",overlay=true, shorttitle="DARVAS")

boxp=input(20, "BOX LENGTH")

LL = lowest(low,boxp)
HH=highest(high,boxp)

NH =    valuewhen(high>HH[1],high,0) 

NL = valuewhen(low<LL[1],low,0) 

//NH :=  LL[1]==LL and LL[2]>LL[1] ? high : NH[1]  
//NH := high>NH? high:NH
//NL :=  HH[1]==HH and HH[2]<HH[1] ? low : NL[1]  
//NL :=  low<NL? low:NL


TopBox = NH// valuewhen(barssince(high>k1[1])  , NH, 1)
BottomBox = NL// valuewhen(barssince(low<LL[1]) , low, 1)

plot(TopBox, linewidth=3, color=green, title="TBbox")
plot(BottomBox, linewidth=3, color=red, title="BBbox")```