Ссылка довольно запутанная, но немного поиграв с вашей функцией, мне удалось заставить ее работать:
Для функции highest()
есть две перегрузки: - highest(length)
, эта занимаетinteger
и возвращает серию - highest(source, length)
, этот принимает series
и integer
. В ссылке на функцию есть подсказка о том, что One arg version: x is a length. Algorithm uses high as a source series.
Проверка ссылки для barssince()
Я вижу, что он принимает bool
(логическое условие) и возвращает серию integer
.
Теперь ясно, что highest(barssince(true))
не правильный синтаксис, потому что barssince()
вернетseries
, а не integer
, в то время как highest()
ожидает и целое число или ряд и и целое число.
Из возни и поиска в Интернете я пришел к выводу, что этоневозможно иметь переменную integer
в сценарии Pine, которая не является series
в то же время.Это заставляет меня поверить, что функция highest()
не может использоваться динамически.
Мне удалось подражать поведению с помощью оператора if
вместе с этим руководством по миграции
Это версия скрипта, которая работает для меня, она строит линию на max()
максимумах, сбрасывая при появлении нового пересечения МА.
//@version=3
study("High since SMA Cross")
fast_sma = sma(close,10)
slow_sma = sma(close,20)
high_since_cross = 0.0
resistance = if(cross(fast_sma, slow_sma))
high
else
max(nz(high_since_cross[1]), high)
plot(resistance, color=yellow)