Tester di supporto agli script e ai consulenti MG4 - pagina 11

 
Renat:

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.

Cosa si intende per "tick handler" - funzioni personalizzate come OnTick? Perché volete copiare l'intera cronologia e non solo i dati che appaiono?
 
Vinin:
Questo non è un indicatore.
Ho dato un link a un indicatore OOPqui.
 
C-4:
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.

 
Renat:

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 stavamo discutendo 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 lo ha fatto in 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.
 
C-4:
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.

Motivazione: