#thinkscript
#thinkscript
Вопрос:
В руководстве по fold приведен пример:
input price = close;
input length = 9;
plot SMA = (fold n = 0 to length with s do s getValue(price, n, length - 1)) / lenth;
Это эффективно вызывает функцию итеративно, как в теле цикла for .
Когда я использую этот оператор для вызова своей собственной функции следующим образом, он прерывается, потому что переменная индекса цикла не распознается как переменная, которая может быть передана моей функции:
script getItem{
input index = 0;
plot output = index * index;
}
script test{
def total = fold index = 0 to 10 with accumulator = 0 do
accumulator getItem(index);########## Error: No such variable: index
}
Ответ №1:
Это известная ошибка / ограничение. Было подтверждено без указания времени для исправления. Обходной путь недоступен.
Ответ №2:
Вы пробовали добавлять небольшой остаток к определенной вами переменной внутри fold, а затем передавать эту переменную? Вы можете удалить целочисленное значение, а затем использовать остаток в качестве значения вашего счетчика. Я играл с чем-то подобным, но это не работает (пока). Вот пример:
script TailOverlap{
input i = 0;
def ii = (Round(i, 1) - i) * 1000;
... more stuff
plot result = resu<
};
def _S = (
fold i = displace to period
with c = 0
do if
TailOverlap(i = _S) #send cur val of _S to script
then _S[1] 1.0001 #increment variable and counter
else _S[1] 0.0001 #increment the counter only
);
Я собираюсь продолжить игру с этим. Если я заставлю это работать, я опубликую окончательное решение. Если вы можете это сделать (или нашли другое решение), пожалуйста, опубликуйте его здесь, чтобы я знал.
Спасибо!