![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
CopyXXX ha la stessa velocità delle funzioni iClose/iOpen/iXXXX. Solo iXXX restituisce un elemento alla volta, mentre CopyXXX ne restituisce molti ed è quindi più efficiente e veloce.
Probabilmente, non consideri che MT4 copia forzatamente _tutta_ la storia del grafico locale nell'ambiente di mercato locale (cache) dell'EA prima di ogni avvio del tick handler. E questo è molto costoso, anche se abbiamo un metodo per l'aggiornamento economico di queste informazioni. La funzione speciale RefreshRates in MQL4 causa il refresh forzato delle cache e della storia del grafico locale.
Chiamare CopyXXX è molto più efficiente, con un meccanismo molto preciso e accurato per la cache dei dati precedentemente richiesti. Per esempio, non c'è bisogno di ri-richiedere la storia profonda ad ogni tick, ma immagazzinarla/scriverla localmente e accedervi il più rapidamente possibile.
Se confrontiamo i vecchi metodi di accesso "diretto" (in realtà non accesso diretto) Open/High/Low/Close e il lavoro con l'array locale doppio locale[xxxx], quest'ultimo è molte volte più veloce. Pertanto, è meglio copiare su se stessi localmente e poi avere un accesso locale veloce ai dati ripetutamente interrogati.
Questo non è un indicatore.
Cosa si intende per "tick handler" - funzioni personalizzate come OnTick? Perché è necessario copiare tutta la storia e non solo i dati che sono apparsi?
Sì, OnTick/OnStart.
Prendo come una rivelazione per molti che l'accesso diretto al grafico locale in MT4 non è veramente diretto. C'è il doppio del consumo di memoria e delle perdite di sincronizzazione.
Fortunatamente, il refresh della cache è economico, ma causa comunque dei costi di sistema. In MT5 ci siamo completamente liberati della cache locale e l'overhead di sistema prima della chiamata di OnTick/OnStart è minore.
Sì, OnTick/OnStart.
Prendo come una rivelazione per molti che l'accesso diretto al grafico locale in MT4 non è veramente diretto. C'è il doppio del consumo di memoria e delle perdite di sincronizzazione.
Fortunatamente, abbiamo un aggiornamento della cache parsimonioso, ma dà ancora costi di sistema. In MT5 ci siamo liberati completamente della cache locale e l'overhead di sistema prima della chiamata OnTick/OnStart è minore.
Un anno fa abbiamo discusso delle prestazioni dei tester MT4/MT5. L'EA standard "MovingAverage" in MT4 ha eseguito una singola esecuzione in un minuto in condizioni di test simili, mentre in MT5 ha impiegato 2:34. Perché questa differenza di scala temporale? La prima cosa che viene in mente è la "modularità" di MT5 e il grande volume di ambiente di trading che MT5 deve tirare durante la corsa.
Modularità, processo esterno e migliore modellazione dell'ambiente, su misura per l'esecuzione multivaluta.