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.
C'è un modo di scrivere e leggere l'array che richiede più tempo del calcolo dell'indicatore?
Dmitry Fedoseev: Sì, non è difficile o costoso. Potete usare la modalità binaria. Non potete leggere l'intero file, ma iniziate dalla posizione che vi serve.
int init()
{
int k;
string Skip;
datetime Str_DtTm;
double L;
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_BIN,",");
ResetLastError();
if(Handle<0) // Failure when opening a file
{
if(GetLastError()==4103)
Alert("There is no file named ",File_Name);
elseAlert("Error when opening a file ",File_Name);
PlaySound("Bzrrr.wav");
return(0);
}
ArrayInitialize(T,0);
ArrayInitialize(dn,0);
ArrayResize(T,stroki);
ArrayResize(dn,stroki);
for(k=stroki-1;k>=0;k--)
{
//--------------------------------------------------------- 5 --
Str_DtTm=FileReadDatetime(Handle);// строка даты
L=FileReadDouble(Handle);
Skip=FileReadString(Handle);//пропускаем//--------------------------------------------------------- 6 --
T[k]=Str_DtTm;
dn[k]=L;
//--------------------------------------------------------- 7 --if(FileIsEnding(Handle)==true){ Print("Конец отсчета=",TimeToString(T[k]));break;}//завершили отсчет
}
FileClose(Handle);
return(0);
}
includono atti di compilazione. Chi compilerà? Forse questo array dipende dai parametri di ottimizzazione? Quindi dobbiamo generare l'array prima di ogni ottimizzazione e compilarlo. E' una soluzione zoppa.
Dmitry Fedoseev: includono atti di compilazione. Chi compilerà? Forse questo array dipende dai parametri di ottimizzazione? Quindi dobbiamo generare l'array prima di ogni ottimizzazione e compilarlo. E' una soluzione zoppa.
Non inventare - TC ha detto chiaramente che l'array è invariato.
Naturalmente, se l'array è sempre e completamente invariato, è meglio includerlo nel codice EA. Potete includerlo direttamente nel file EA senza includerlo.
Dmitry Fedoseev: Naturalmente, se l'array è sempre e assolutamente immutabile, è meglio includerlo nel codice dell'Expert Advisor. Potete farlo direttamente nel file dell'Expert Advisor senza includere.
Non ho incontrato un include.Per favore, indirizzatemi su come farlo approssimativamente.
forexman77: Non l'ho ancora incontrato. Indicami la direzione giusta, come farlo in modo approssimativo.
Puoi farlo senza l'inlude, generare il codice dell'array con lo script, scriverlo in un file (puoi anche mandarlo in output ad Alert()), poi trasferirlo al codice EA con il mouse.
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.
C'è un modo di scrivere e leggere l'array che richiede più tempo del calcolo dell'indicatore?
Se si fa questo, l'array sarà salvato quando si passa a un nuovo passaggio?
Sì, non è difficile o costoso. Potete usare la modalità binaria. Non potete leggere l'intero file, ma iniziate dalla posizione che vi serve.
La modalità binaria è quando non ci sono conversioni da linea a numero?
Aggiungerei anche che l'ottimizzazione su un grafico a 1 minuto su una grande storia.
includono atti di compilazione. Chi compilerà? Forse questo array dipende dai parametri di ottimizzazione? Quindi dobbiamo generare l'array prima di ogni ottimizzazione e compilarlo. E' una soluzione zoppa.
La modalità binaria è quando non c'è conversione da stringa a numero?
https://www.mql5.com/ru/docs/files/filereadarray
https://www.mql5.com/ru/docs/files/filewritearray
Anche i link hanno degli esempi.
Non inventare - il TC ha detto chiaramente che la matrice è invariata.
sì, devi...
Naturalmente, se l'array è sempre e assolutamente immutabile, è meglio includerlo nel codice dell'Expert Advisor. Potete farlo direttamente nel file dell'Expert Advisor senza includere.
Non l'ho ancora incontrato. Indicami la direzione giusta, come farlo in modo approssimativo.