È possibile creare qualche funzione di "codice mql" in questo forum? - pagina 3

 

E questo post su come trovare/fissare lo zero devide: https://www.mql5.com/en/forum/general

 

Se il broker ha aggiunto una cifra in più?

https://www.mql5.com/en/forum/179191

 

Errore non comune

Ciao gente,

Ho codificato un EA e mi sono trovato di fronte ad un errore non comune. Quindi, vorrei chiedere il vostro aiuto per questo errore su MT4, che credo che qualcuno di voi, in tutta la sua esperienza, possa aver già affrontato lo stesso.

Leggere l'intero EA può essere poco pratico, il codice sorgente è molto grande.

Dopo l'avvenuta compilazione, nel tester, il diario di MT4 riporta il seguente errore

Tempo: 2011.01.28 23:35:36

Messaggio: 2007.07.13 00:00 InterCandles EURUSDFXF,H4: stack overflow.

Anche alzando la dimensione dello stack al cielo tramite

#proprietà stacksize 167692160

che, credo, alloca 16MB di memoria, l'errore persiste.

Qualcuno ha affrontato lo stesso problema di"stack overflow" nel tester, o può indicare se il problema è interno a MT4, o nell'EA (forse in array, dichiarazioni annidate, file ex4 troppo grande, ecc)?

Apprezzo il vostro aiuto e mi dispiace di avervi fatto perdere tempo.

Grazie.

 

Soluzione del problema

Bene, prima che qualcuno risponda, ho trovato la soluzione.

Prima di usare la funzione, subito dopo che il tester carica l'EA -che collega la libreria allegata-, il messaggio "stack overflow" viene mostrato nel journal.

Problema riscontrato con la funzione denominata "power", nel file allegato. Le mie conclusioni sono le seguenti:

1) Certamente non c'è nessun problema con il suo nome; nessuna collisione di funzioni MQL nella tabella dei simboli dell'EX4. Altre etichette sono state testate.

2) Apparentemente non è stato raggiunto alcun limite di funzioni. Altre funzioni sono state aggiunte dopo aver rimosso la funzione problematica e l'errore non si è verificato. Funziona correttamente solo rimuovendo questa funzione, non solo scollegando nel file EX4 attraverso il compilatore MT4.

3) La ricorsione viene eseguita tramite molte chiamate e i risultati vengono lasciati nello stack. Lo stack cresce linearmente in modo asintotico man mano che l'argomento "esponente" cresce esponenzialmente. Potenzialmente, lo stack può raggiungere il suo limite e andare in overflow. L'errore "stack overflow" appare indipendentemente dall'esecuzione di questa funzione.

Pertanto, indurre il compilatore MT4 può avere un dispositivo che rileva [alcune classi di] ricorsione che non sono consentite nel linguaggio evitando il potenziale overflow dello stack durante l'esecuzione di EA.

File: