Calcolo di un singolo array durante l'ottimizzazione

 

C'è una matrice che non cambia durante tutta l'ottimizzazione. È possibile calcolarlo una volta e fare riferimento solo ad esso in ogni passaggio durante l'intera ottimizzazione senza calcolarlo di nuovo?

 
Quindi calcolatelo in OnInint()
 
Alexey Viktorov:
Quindi calcolatelo in OnInint()

In MQL4 leggevo i dati da file nell'inite, ma ci voleva molto tempo. Non so se l'initeviene usato ad ogni nuovo passaggio o no?

L'ho trovato sul forum, ogni volta che l'inite viene usato, cioè l'array viene ricalcolato.

https://www.mql5.com/ru/forum/104222

 

Certo che no.

Ops... Non ho letto attentamente e ho frainteso la domanda.

 
forexman77:

In MQL4 leggevo i dati da file nell'inite, ma ci voleva molto tempo. Non so se l'initeviene usato ad ogni nuovo passaggio o no?

L'ho trovato sul forum, ogni volta che l'inite viene usato, cioè l'array viene ricalcolato.

https://www.mql5.com/ru/forum/104222

È elementare. Si controlla la dimensione dell'array ad ogni esecuzione. Se l'array è vuoto o il flag di calcolo è falso, lo si ricalcola:

if(ArraySize(optimize_array) == 0)
   CalculateArray();
 
Vasiliy Sokolov:

È elementare. Controllate la dimensione dell'array ogni volta che lo eseguite. Se l'array è vuoto o il flag di calcolo è falso, lo si ricalcola:

Non l'ho ancora controllato, però. Ma, chiedo e che l'array sarà salvato dal primo passaggio (dove sarà calcolato) e sarà disponibile nei passaggi successivi?

 
forexman77:

Non l'ho ancora testato, però. Ma, chiederò e che l'array sarà salvato dal primo passaggio (dove sarà calcolato) e sarà disponibile per i passaggi successivi?

Non lo farà. Devi ricalcolarlo, o salvarlo in un file e leggerlo.
 
Dmitry Fedoseev:
Non lo farà. Devi ricalcolarlo, o salvarlo in un file e leggerlo.

Quindi ho un dilemma: come rendere possibile leggere da un file una volta, riempire un array con esso e usare questo array in tutti i passaggi.

Ne ho bisogno per ridurre il tempo di ottimizzazione, perché l'array rimarrà sempre invariato e sarà costoso leggerlo ogni volta.

 
forexman77:

Quindi ho un dilemma: come rendere possibile leggere da un file una volta, riempire un array con esso e usare questo array in tutti i passaggi.

Ho bisogno di questo per ridurre il tempo di ottimizzazione, perché l'array sarà sempre invariato ed è costoso leggerlo ogni volta.

In MT5 c'è un evento per avviare l'ottimizzazione, calcolare l'array in esso, salvarlo su file e leggerlo nell'init dell'EA.
 

Allegato risorse. Non chiedere come. Non ho scritto il codice sorgente.

Dovrà essere letto nell'inite. Ma non sarà letto dal disco, ma dalla memoria. Quindi, di fatto, l'array sarà in memoria.

 
Dmitry Fedoseev:
In MT5 c'è un evento per avviare l'ottimizzazione, in esso calcola l'array, lo salva in un file, e nell'init dell'EA lo legge.
Sarà necessario leggerlo nell'init ad ogni passaggio?