Как использовать индекс оператора fold при вызове функции

#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
);
  

Я собираюсь продолжить игру с этим. Если я заставлю это работать, я опубликую окончательное решение. Если вы можете это сделать (или нашли другое решение), пожалуйста, опубликуйте его здесь, чтобы я знал.

Спасибо!