Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 130
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
Grazie. Usare la funzione ArraySwap non mi sarebbe venuto in mente.
Ho capito che la tua funzione funzionerà sia quando si aumenta che quando si diminuisce la dimensione, cioè come un analogo completo di ArrayResize.
Non è meglio chiamare semplicemente la funzione standard ArrayResize quando un array viene ingrandito, piuttosto che chiamare le tre funzioniArraySwap,ArrayResize,ArrayCopy?
p.s Testato la tua versione e la mia con due copie quando si riduce l'array MqlTick da 1.000.000 a 500.0000. La tua versione lo fa in 22 milsecondi. Il mio lo fa in 37-38.Non è meglio chiamare semplicemente lo standard ArrayResize quando un array viene espanso, piuttosto che chiamare le tre funzioniArraySwap,ArrayResize,ArrayCopy
Ci ho pensato, ma non l'ho fatto, perché in realtà ci sono più sottigliezze. Ecco perché ho deciso di attenermi alla versione laconica.
Una delle sottigliezze è questa. Se prendete un array di strutture con costruttori/distruttori, ArrayResize li richiamerà in entrambe le direzioni in una quantità pari alla differenza di valori.
Ma applicare ArrayCopy significa chiamare tutti i costruttori. La rimozione di ArrayTmp è una chiamata a tutti i distruttori. Quindi ArrayResize2 non è veramente ArrayResize.
Dopo l'ottimizzazione, vedrete quanto segue
Se spegni l'Expert Advisor in modalità frame e lo esegui in modalità standard, mostrerà gli stessi dati che ha ottenuto durante l'ottimizzazione.
Questo approccio permette di tornare più volte ai risultati dell'ottimizzazione.
SZY Sul grafico aperto nel Terminale per la modalità frame, non è possibile eseguire alcun EA. Quindi, se volete eseguirlo in modalità standard, dovreste eseguirlo su un grafico che non è stato aperto per i frame.
fxsaber:
extern теперь является жестко заданным макросом
Di conseguenza, non sarà sempre possibile far funzionare il codice MT5 mq4 senza modifiche.
Non ci sono cambiamenti nella documentazione. Puoi spiegare questo in modo più dettagliato?
Non c'è nessun cambiamento nella documentazione. Puoi spiegare questo in modo più dettagliato?
Tale codice
genererà sempre un avvertimento. Sono un po' duro su "impossibile". È possibile sovrascrivere, quindi solo un avvertimento sarà sempre appeso in tali situazioni.
Una delle sfumature è questa. Se prendete un array di strutture con costruttori/distruttori, allora ArrayResize in entrambe le direzioni li chiama in un numero pari alla differenza di valori.
Ma applicare ArrayCopy significa chiamare tutti i costruttori. La rimozione di ArrayTmp è una chiamata a tutti i distruttori. Quindi ArrayResize2 non è veramente ArrayResize.
Allora sarebbe probabilmente più corretto chiamarlo ArrayReallocate, anche se non vedo alcun senso in questa ricopiatura forzata. Frenata inutile.
Liberare la memoria è l'unica ragione.