Discussione sull’articolo "Manuale MQL5: Salvataggio dei risultati di ottimizzazione di un Expert Advisor in base a criteri specificati" - pagina 2

 
Anatoli Kazharski:

Non ho intenzione di tornare su questo argomento a breve.

Cercate di formulare il vostro problema in modo più preciso e postatelo qui. Forse qualcuno suggerirà una soluzione.


Il mio compito è semplice: registrare i passaggi per numero di sequenza, non nella sequenza dei risultati dell'ottimizzazione.

 
Aleksey Vyazmikin:

Il mio compito è semplice: registrare i passaggi per numero di sequenza, non nella sequenza dei risultati dell'ottimizzazione.

Aggiungerlo all'array dinamico così com'è e poi ordinarlo alla fine dell'ottimizzazione.
 
Registrare dove?
 
Anatoli Kazharski:
Aggiungere all'array dinamico così com'è e poi ordinare alla fine dell'ottimizzazione.

Cioè, per creare un array bidimensionale aggiuntivo, dove mettere il numero del passaggio e gli indicatori per esso?


E se si scrive su un file in una volta sola? Cioè, è possibile fare questo - dimenticare con gli zeri le righe senza valore, e poi quando il valore appare, sovrascriverle?

 
Dennis Kirichenko:
Registrarlo dove?

In un file, naturalmente.

 
Aleksey Vyazmikin:

Nel file, ovviamente.


Anatoly vi ha indicato correttamente. Raccogliere i risultati in un elenco o in un array dinamico (preferisco l'elenco) durante il processo di ottimizzazione, nel corpo del gestore OnTesterPass(). Al termine dell'ottimizzazione, nel corpo del gestore OnTesterDeinit(), ordinate l'elenco/array in base al criterio richiesto e salvatelo.

 
Dennis Kirichenko:

Anatoly vi ha indicato correttamente. Raccogliete i risultati in un elenco o in un array dinamico (preferisco l'elenco) durante l'ottimizzazione, nel corpo del gestore OnTesterPass(). E alla fine dell'ottimizzazione, nel corpo del gestore OnTesterDeinit(), ordinare l'elenco/array in base al criterio richiesto e salvarlo.


Non ho visto nulla riguardo all'elenco, cosa intendi?

 
Aleksey Vyazmikin:

Non ho visto nulla su una lista, cosa intendi?


Intendo dire che esiste un tipo di dati - CList - un elenco. È comodo per raccogliere i risultati nell'attività. Ma i risultati dovrebbero essere avvolti nel tipo di nodo, che è un discendente di CObject.

 
Dennis Kirichenko:

Intendo dire che esiste un tipo di dati - CList - un elenco. È conveniente raccogliere i risultati in esso nel proprio task. Ma i risultati devono essere prima avvolti nel tipo di nodo, che è un discendente di CObject.


Capisco - ho dato un'occhiata e mi sono reso conto che ci sono molte complessità - bisogna capirle se si vuole usarle... e ho trovato alcuni esempi complicati. Potete mostrarmi come farlo sull'esempio di questa particolare attività?

 

Grazie mille, Anatoly!

Quando eseguo i test nella modalità di ottimizzazione del punto di entrata, devo inserire in un file le informazioni sulla percentuale di operazioni vincenti/perdenti.

Sembra un compito banale, ma ho faticato per 2 giorni, poi mi sono offeso per i methaquot e me ne sono dimenticato per due settimane.

Oggi, imprecando contro methaquot (hanno implementato le funzioni OnTester e OnTesterPass in modo strano, ma hanno anche omesso di menzionare nel libro di riferimento che queste funzioni necessitano di FrameAdd e FrameNext per essere "inizializzate", altrimenti funzionano a meraviglia). ), con un'occhiata al tuo esempio ho finito di scrivere quello che mi serviva))))