График на более высоких временных рамках. Безопасность, изменяемая переменная, глобальная переменная, функциональная проблема

#function #security #pine-script #mutable

Вопрос:

Я пытаюсь изобразить ту же фигуру с 15 минут на день. Это код для построения фигуры за 15 минут, который отлично работает;

 if crossover(s3K,s3D) and s3K<25 and (s4K-s4D<3 and s4K-s4D>-3) and s4K<35//or s4D-s4K>0 and s4D-s4K<1 and s4K<50 and s1K<40
      rwCross:=true
plotshape(rwCross, style = shape.arrowup, location = location.belowbar, color=color.yellow, size=size.small)
 

Но чтобы построить его на ежедневной основе, я пытался;

 rwCrossDaily = security(syminfo.tickerid,'D', rwCross)
plotshape(rwCrossDaily, style = shape.arrowup, location = location.belowbar, color=color.yellow, size=size.small)
 

Что дает мне ошибку изменяемой переменной. Поэтому я попытался использовать функцию, чтобы обойти это;

 rwCross_func() =>
  if crossover(s3K,s3D) and s3K<25 and (s4K-s4D<3 and s4K-s4D>-3) and s4K<35//or s4D-s4K>0 and s4D-s4K<1 and s4K<50 and s1K<40
    rwCross:=true
rwCrossDaily = security(syminfo.tickerid,'D', rwCross_func())
 

Но теперь он говорит мне, что я «Не могу изменить глобальную переменную «rwCross» в функции».
Помогите, пожалуйста!

Ответ №1:

Лучшее решение и самое чистое решение здесь-просто сделать bool из вашего состояния в его простейшей форме:

 rwCross = crossover(s3K,s3D) and s3K<25 and (s4K-s4D<3 and s4K-s4D>-3) and s4K<35//or s4D-s4K>0 and s4D-s4K<1 and s4K<50 and s1K<40
 

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

Ура!