#pine-script
#сценарий pine
Вопрос:
Я пытаюсь создать скрипт, который отображает разницу в пробелах на кумулятивной основе. Но он не возвращает никаких данных.
Я попытался объявить переменные для суммы внутри оператора if, используя := . Сумма работает, но как только сумма добавляется в число с плавающей запятой, чтобы сделать ее кумулятивной, данные исчезают.
Есть идеи?
//@version=4
study("My Script", overlay=false)
Xopen = security(syminfo.tickerid, 'D', open, lookahead=barmerge.lookahead_on)
Xclose = security(syminfo.tickerid, 'D', close, lookahead=barmerge.lookahead_on)
Xsum = Xopen-Xclose[1]
var float Xzero = 0
var float Yzero = 0
//var float Xsum = 5
if barstate.isnew
Xzero := Yzero Xsum
Yzero := Xzero
plot(Xzero)
Ответ №1:
Проблема здесь:
Xsum = Xopen-Xclose[1]
На самом первом баре нет исторических данных, поэтому Xclose[1]
вернутся NaN
.
Любое вычисление с помощью a NaN
также приведет к NaN
.
Поэтому все ваши переменные будут NaN
.
Вы должны заменить NaN
значение на с 0
помощью функции nz(), например:
Xsum = Xopen-nz(Xclose[1])
Это будет работать:
//@version=4
study("My Script", overlay=false)
Xopen = security(syminfo.tickerid, 'D', open, lookahead=barmerge.lookahead_on)
Xclose = security(syminfo.tickerid, 'D', close, lookahead=barmerge.lookahead_on)
Xsum = Xopen - nz(Xclose[1])
var float Xzero = 0
var float Yzero = 0
if barstate.isnew
Xzero := Yzero Xsum
Yzero := Xzero
plot(Xzero)