Salve, mi è comparso più volte l’alert “E’ stato rilevato un ciclo infinito o un ciclo con troppe iterazioni” utilizando un codice che contiene un While ed un For che in effetti in un grafico daily completo con molte barre da calcolare potrebbe portare a superare anche le 300 iterazioni. Volevo chiedere ai più esperti qual’è il limite di cicli supportato dalla versione 10.3.
Non c’è un limite preciso, dipende molto dalla struttura del codice e dalla memoria disponibile.
E’ opportuno cercare di limitare quanto più possibile le iterazioni, specialmente se ve ne sono più di una annidate tra loro. Inoltre occorre sempre avere un termine ben definito per non incorrere nell’altro tipo di errore “ciclo infinito”.
Questo codice gira regolarmente su ProBackTest, ma se aumento il limite a 10001 mi segnala “ciclo infinito”:
1
2
3
4
fori=0to10000
x=close[i]
next
buyat-xlimit
Questo gira regolarmente su ProBuilder (Dax, 4h, 1000 barre), ma se aumento il limite a 6665 segnala errore per troppe interazioni o ciclo infinito:
dove un For lungo quanto il numero di barre del grafico è annidato dentro un While, la lunghezza del quale è parametrica. Superato un certo limite (a dire il vero molto basso) nel while, si blocca tutto.
p.e. fargli disegnare 20 barre su un grafico da 10min (144 candele) = 2880 cicli manda in blocco l’indicatore. Quando parlavi di memoria, intendi quella del PC o quella che il motore di PRT si riserva durante l’esecuzione?