![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Sì, lo so, e ho citato il codice che non provoca errore di esecuzione, ma fa girare lo script
l'ultima stampa non viene emessa?
O il penultimo?
E l'ultima chiamata di esponente non si blocca?
L'algoritmo raggiunge quale linea?
hai messo le stampe ovunque?
Sì, non lo è.
Sì, non lo è.
Ripetere la domanda - avete un esponente calcolato per 2/3/8?
e inoltre ha un aspetto strano.
1071644672
Da dove viene?ha fatto così:
nel registro:
se commentato: // if(i3==2 && i2==3 && i1==8) Print("incorrect exp!!!! call");
ancora una volta si verificherà un ciclo infinito :)
se è stato cancellato:// if(i3==2 && i2==3 && i1==8) Print("chiamata exp!!!! errata");
di nuovo sarà un ciclo infinito :)
i1 è uguale a 7 dopo la fine del ciclo, anche se l'indice massimo della terza dimensione è 6. Dovrebbe essere fuori portata, ma se non lo è, è abbastanza possibile che la stringa
può sovrascrivere il valore di i2, per esempio. Ma in questo caso è un errore del compilatore mql.
Potete spostare, per esempio, la definizione dell'array in variabili globali - allora il comportamento del codice di cui sopra dovrebbe cambiare.
sarà di nuovo un ciclo infinito :)
Penso che l'errore sia nella stampante stessa.
Scoprite cosa c'è nelle righe che lo precedono. poiché l'ultimo esponente non deve essere eseguito. l'indice supera
Penso che il problema sia nel vostro codice.
e sembra anche strano.
1071644672
da dove viene?L'ho allegato, in questa forma lo script va in un ciclo infinito.
Ho Zero Devide con o senza stampa, su
In generale, i1 prende un valore sbagliato. Anche se dovrebbe essere fuori portata su out[][][7]. Il compilatore deve considerare le restrizioni basate sulla moltiplicazione di tutte le dimensioni (3 * 7 * 7 = 147) invece di ciascuna. Per esempio, se a i1 è assegnato 8, Print stampa ancora alcuni valori. Ovviamente, è un errore del compilatore quando controlla i limiti dell'array.Apparentemente, il compilatore calcola i vincoli procedendo dalla moltiplicazione di tutte le dimensioni (3 * 7 * 7 = 147) e non ciascuna di esse. Per esempio, se a i1 viene assegnato 8, Print produce ancora alcuni valori. Ovviamente, è un errore del compilatore quando controlla i limiti dell'array.
Il fuori gamma non viene dal compilatore. Questo è un errore di runtime.
Il sistema di runtime ha calcolato stupidamente l'offset e non succederà nulla se nel calcolo sono stati coinvolti indici errati, ma non sei andato oltre i limiti dell'array. Ma se controllate gli indici in modo intelligente, ognuno separatamente, otterrete ritardi concreti all'esecuzione.