Они не являются встроенными переменными.
pine-script
версии 1 и 2 позволяют вам обращаться к переменным с помощью []
в сочетании с nz()
, даже если переменная еще не объявлена. Таким образом, в версии 1 и версии 2 действует следующее:
f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
Если вы попробуете это в //@version=3
, вы получите Необъявленный идентификатор Ошибка.
Сократим код до следующего:
//@version=2
study(title="JMA RSX Clone [LazyBear]", shorttitle="RSXC_LB", overlay=false)
length=input(14)
f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0
plot(f90_, title="f90", color=orange, linewidth=4)
plot(f88, title="f88", color=red, linewidth=4)
Давайте посмотрим, что происходит с f90_
и f88
для самого первого бара .
f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
Условие здесь (nz(f90_[1]) == 0.0)
. f90_[1]
в основном запрашивает значение одного предыдущего бара, но это первый бар (помните?), Поэтому предыдущего значения нет. Итак, ответ: NaN (не число).
Теперь, если вы введете это в nz()
, он вернет ноль . Поскольку nz()
заменяет NaN значения на нули .
Таким образом, условие будет истинным для первого бара, и f90_
будет присвоено 1.0 .
Давайте теперь посмотрим на f88
, опять же для самого первого бара .
f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0
Первое условие здесь (nz(f90_[1]) == 0.0)
. Это должно вернуть true
, по той же причине, что и выше.
Второе условие (length-1 >= 5)
. Это также должно вернуть true для ввода по умолчанию (14).
Итак, f88
будет присвоено 14-1 = 13 для первого бара.
Я думаю, что вы можете продолжить с этого момента. Попробуйте запустить короткий код, который я предоставил, и посмотрите таблицу.