Calcolo di un singolo array durante l'ottimizzazione - pagina 2

 
fxsaber:
Allegato risorse. Non chiedere come. Non ha scritto il codice sorgente.
Avete bisogno di un software di terze parti per creare un array?
 
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.

Bene, per esempio, scrivi uno script che prepara e raccoglie tutti i dati in un array, e poi scrive l'array finito in un file. E poi leggere questo array dal file durante l'inizializzazione in Expert Advisor. Il file può essere utilizzato tutte le volte di cui avete bisogno, ad ogni esecuzione dell'EA.
Credo che questa soluzione vi sia già stata suggerita. Non vi si addice?
 
forexman77:
Usare un software di terzi per creare un array?
Sì, dallo stesso MQL5 con un passaggio separato prima dell'ottimizzazione.
 
BlackTomcat:
Per esempio, scrivere uno script che prepari e raccolga tutti i dati in un array e poi scriva l'array pronto in un file. E poi leggere questo array dal file durante l'inizializzazione nell'EA. Il file può essere utilizzato tutte le volte di cui avete bisogno, ad ogni esecuzione dell'EA.
Credo che questa soluzione vi sia già stata suggerita. Non vi si addice?

Sì, è questo il punto, non si adatta. Ci sono 15.000 passaggi nell'ottimizzazione. E ho bisogno solo una volta di calcolare e nei passaggi successivi solo di indirizzare un array.

Cioè, ho già dei dati nel file che sono calcolati in anticipo e a livello, e mi sono noti in anticipo. E anche leggere il file ogni volta nell'init è molto costoso (ci sono migliaia di linee). Non conosco MQL5, ma in MQL4 hanno scritto sul forum che il programma passa l'init ad ogni passaggio.

 
forexman77:
Sarà necessario leggere l'inite ad ogni passaggio?
Sì, non è difficile o costoso. Utilizzare la modalità binaria. Potete non leggere tutto il file, ma iniziare dalla posizione desiderata.
 
forexman77: E anche leggere il file ogni volta inite, ad ogni passaggio è molto costoso (diverse migliaia di linee). Non conosco MQL5, ma in MQL4 hanno scritto nel forum che il programma prende un init ad ogni passaggio.
Sai, penso che tu stia esagerando sulle spese relative alla lettura dell'array dal file. Ogni volta che Windows si sveglia dalla modalità sleep, ripristina dal disco rigido l'immagine del suo stato che aveva al momento di andare a dormire, compreso lo stato di tutte le applicazioni. Pensi che non ci siano abbastanza oggetti e informazioni? E quanto tempo ci vuole per uscire dal sonno così?
Stai esagerando, IMHO.
 
forexman77:

Sì, è questo il punto, non si adatta. Ci sono 15.000 passaggi nell'ottimizzazione. E ho bisogno solo una volta di calcolare e nei passaggi successivi solo di indirizzare un array.

Cioè, ho già dei dati nel file che sono calcolati in anticipo e a livello, e mi sono noti in anticipo. E anche leggere il file ogni volta nell'init è molto costoso (ci sono migliaia di linee). Non conosco MQL5, ma in MQL4 hanno scritto sul forum che il programma passa l'init ad ogni passaggio.

Un trucco classico del mondo C/C++ : puoi fare/convertire un array statico dal tuo file (solo testo: double arr[100500]={1,2,3....} ) e semplicemente includerlo attraverso #include.

 
BlackTomcat:
Sai, penso che tu stia esagerando sui costi di lettura di un array da un file. Ogni volta che Windows si sveglia dalla modalità sleep, ripristina dal disco rigido un'immagine del suo stato che aveva al momento di andare a dormire, compreso lo stato di tutte le applicazioni. Pensi che non ci siano abbastanza oggetti e informazioni? E quanto tempo ci vuole per uscire dal sonno in quel modo?
Stai esagerando, IMHO.

I costi sono maggiori in modo inequivocabile. Ci sono due varianti con impostazioni dell'indicatore invariate e con gli stessi valori, ma già scritti in un file, che vengono scaricati in un array.

La variante con il file impiega molte volte più tempo per essere calcolata rispetto alla variante con il calcolo dell'indicatore nell'Expert Advisor.

Stavo solo pensando che forse c'è un modo per salvare l'array una volta e usarlo per tutti i passaggi di ottimizzazione, alleggerendo così il carico sull'algoritmo.

 
Maxim Kuznetsov:

Un trucco classico del mondo C/C++: puoi fare/convertire un array statico dal tuo file (solo testo: double arr[100500]={1,2,3....} ) e semplicemente includerlo tramite #include.

Se si fa questo, l'array sarà salvato quando si passa a un nuovo passaggio?
 
forexman77:

I costi sono maggiori in modo inequivocabile. Ci sono due varianti con impostazioni dell'indicatore invariate e con gli stessi valori, ma già scritti in un file, che vengono scaricati in un array.

La variante con il file impiega molte volte più tempo per essere calcolata rispetto alla variante con il calcolo dell'indicatore nell'Expert Advisor.

Ho solo pensato che forse c'è un modo per memorizzare l'array una volta e usarlo per tutti i passaggi di ottimizzazione, alleggerendo così il carico sull'algoritmo.

Calcola UN tempo e salva l'array con i risultati in un file. E poi leggere l'array pronto dal file durante l'inizializzazione e usarlo immediatamente. Non c'è bisogno di ricalcolare di nuovo. Avete già calcolato tutto prima e salvato. Perché contare di nuovo? :)