Cálculo de una matriz durante la optimización - página 3

 
forexman77:

Los costes son mayores sin lugar a dudas. Hay dos variantes con la configuración del indicador sin cambios y con los mismos valores, pero ya escritos en un archivo, que se vuelcan en un array.

La variante con el archivo tarda muchas veces más en ser calculada que la variante con el cálculo del indicador en el Asesor Experto.

Estaba pensando que tal vez haya una forma de guardar el array una vez y usarlo para todas las pasadas de optimización, aliviando así la carga del algoritmo.

¿Hay alguna forma de escribir y leer el array que tarde más que el cálculo del indicador?

 
forexman77:
Si se hace esto, ¿se guardará la matriz cuando se cambie a un nuevo pase?
Sí, debe...
 
Dmitry Fedoseev:
Sí, no es difícil ni costoso. Puedes utilizar el modo binario. Puede que no lea todo el archivo, sino que empiece por la posición que necesite.
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);
      else
         Alert("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);
  }

El modo binario es cuando no hay conversiones de línea a número?

También añadiría que la optimización en un gráfico de 1 minuto en un gran historial.

 
incluyen actos de recopilación. ¿Quién va a compilar? ¿Tal vez esta matriz depende de los parámetros de optimización? Así que tenemos que generar el array antes de cada optimización y compilarlo. Es una solución poco convincente.
 
Dmitry Fedoseev:
incluyen actos de recopilación. ¿Quién va a compilar? ¿Tal vez esta matriz depende de los parámetros de optimización? Así que tenemos que generar el array antes de cada optimización y compilarlo. Es una solución poco convincente.
No te lo inventes: TC ha dicho claramente que la matriz no se ha modificado.
 
forexman77:
El modo binario es cuando no hay conversión de cadena a número?

https://www.mql5.com/ru/docs/files/filereadarray

https://www.mql5.com/ru/docs/files/filewritearray

Los enlaces también tienen ejemplos.

 
Maxim Kuznetsov:
No te lo inventes: el TC dijo claramente que la matriz no se modifica.
No se ha modificado durante una optimización. No había nada sobre la otra invarianza.
 
Por supuesto, si el array está siempre y completamente inalterado, es mejor incluirlo en el código del EA. Puede incluirlo directamente en el archivo EA sin incluirlo.
 
Maxim Kuznetsov:
Sí, debes...
Dmitry Fedoseev:
Por supuesto, si la matriz es siempre y absolutamente inmutable, es mejor incluirla en el código del Asesor Experto. Puede hacerlo directamente en la ficha del Asesor Experto sin incluir.
No he encontrado ninguna inclusión.Por favor, indíqueme cómo hacerlo aproximadamente.
 
forexman77:
Todavía no me lo he encontrado.Indícame la dirección correcta, cómo hacerlo aproximadamente.
Puedes hacerlo sin el inlude, generar el código del array con el script, escribirlo en un archivo (también puedes darle salida a Alert()), y luego transferirlo al código del EA con el ratón.