[]
в pinescript называется Оператор ссылок на историю. Он ссылается на предыдущие значения переменной.
Когда вы произносите f[1]
, возвращается любое значение f
один бар назад.
Хорошо, что вы используете nz() с []
, потому что для самого первого бара ни одна переменная не имеет предыдущего значения. Итак, когда вы пытаетесь получить доступ к историческому значению переменной в первый раз, результат будет NaN
, а nz()
преобразует NaN
в 0
.
Еще одна вещь, которую нужно знать, это то, что ваш код будет выполняться для каждого бара.
Давайте теперь посмотрим на ваш код.
f = 0.0
d = 0.0
Вы объявляете f
и d
в начале и присваиваете им 0. Мы можем пропустить этот шаг, так как вы переназначаете им другое значение.
Первая панель
d := nz(f[1])
Присвойте значение f
на предыдущем баре d
. f
не имеет предыдущего значения для первого бара, поэтому nz()
вернет 0
. Итак, d = 0
.
f := d+1
f = 0 + 1 -> f = 1
Второй бар
d := nz(f[1])
Присвойте значение f
на предыдущем баре d
. Значение f
на первой панели равно 1
. Итак, d = 1
.
f := d+1
f = 1 + 1 -> f = 2
Третья панель
d := nz(f[1])
Присвойте значение f
на предыдущем баре d
. Значение f
на секундной панели равно 2
. Итак, d = 2
.
f := d+1
f = 2 + 1 -> f = 3
Примечание. Попробуйте запустить следующий код, и вы увидите, что он ведет себя точно так же.
//@version=4
study('test')
f = 550.0
d = 0.0
d := nz(f[1])
f := d+1
plot(d)
plot(f)
Причина в том, что изначально не имеет значения, какое значение имеет f
. d := nz(f[1])
присвоит значению f
на предыдущем баре значение d
, а для самого первого бара f
не имеет предыдущего значения. Следовательно, nz()
вернет 0.
Тогда что происходит для самого первого бара:
d := nz(f[1]) // d = 0
f := d+1 // f = 1
И так далее..
person
Baris Yakut
schedule
24.08.2019