функция, возвращающая 2 значения в глобальную переменную - PullRequest
0 голосов
/ 19 апреля 2020

В свете этого поста Я хотел бы спросить, почему скрипт ниже работает для [a,b], но не работает для [c,d].
Не могу найти документацию, объясняющую, почему это не работает

Этот пример предназначен только для 2 возвращаемых значений, но на самом деле я собираюсь создать функцию с 6 или более переменными, которые будут возвращаться в одном go.
Я пытаюсь избежать чтобы ввести 6 разных строк, потому что я буду вводить эти данные каждый торговый день (функция будет зависеть от даты, и у меня уже есть код для этого).
Так что я бы хотел ввести только 1 строку в день, чтобы сохранить исходный код ясным и поддерживаемым.

//@version=4
study("Functions test")

var int c = na
var int d = na

f(x) => [x,x+5]

[a,b] = f(20)
[c,d] := f(30)

plot(a)
plot(b)
plot(c)
plot(d)

1 Ответ

2 голосов
/ 19 апреля 2020

Насколько я понимаю, назначение с := недопустимо для повторов функций, подобных кортежу. Если вы хотите избежать многократного ввода функции ввода, в данном случае 20 и 30, сохраняя определение переменной как есть, вы все равно можете сделать что-то вроде:

//@version=4
study("Functions test")

var int c = na
var int d = na

f(x) => [x,x+5]

[a,b] = f(20)
[c1,d1] = f(30)

c := c1
d := d1

plot(a)
plot(b)
plot(c)
plot(d)

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

...