Calcul d'un seul tableau pendant l'optimisation - page 3

 
forexman77:

Les coûts sont plus élevés sans ambiguïté. Il existe deux variantes avec des paramètres d'indicateur inchangés et avec les mêmes valeurs, mais déjà écrites dans un fichier, qui sont vidées dans un tableau.

La variante avec le fichier prend plusieurs fois plus de temps à être calculée que la variante avec le calcul de l'indicateur dans le Conseiller Expert.

Je pensais simplement qu'il y avait peut-être un moyen de stocker le tableau une fois et de l'utiliser pour toutes les passes d'optimisation, ce qui soulagerait l'algorithme.

Existe-t-il un moyen d'écrire et de lire le tableau qui prenne plus de temps que le calcul de l'indicateur ?

 
forexman77:
Si vous faites cela, le tableau sera-t-il sauvegardé lorsque vous passerez à un nouveau pass ?
Oui, il faut...
 
Dmitry Fedoseev:
Oui. Ce n'est ni difficile ni coûteux. Vous pouvez utiliser le mode binaire. Vous ne lirez peut-être pas tout le fichier, mais commencez par la position dont vous avez besoin.
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);
  }

On parle de mode binaire lorsqu'il n'y a pas de conversion ligne-numérique?

J'ajouterais également que l'optimisation sur un graphique de 1 minute sur un historique important.

 
incluent des actes sur la compilation. Qui va compiler ? Peut-être que ce tableau dépend des paramètres d'optimisation ? Nous devons donc générer le tableau avant chaque optimisation et le compiler. C'est une solution boiteuse.
 
Dmitry Fedoseev:
incluent des actes sur la compilation. Qui va compiler ? Peut-être que ce tableau dépend des paramètres d'optimisation ? Nous devons donc générer le tableau avant chaque optimisation et le compiler. C'est une solution boiteuse.
Ne l'inventez pas - TC a clairement dit que le tableau est inchangé.
 
forexman77:
Le mode binaire est utilisé lorsqu'il n'y a pas de conversion de chaîne de caractères en nombre ?

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

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

Les liens contiennent également des exemples.

 
Maxim Kuznetsov:
Ne l'inventez pas - le CT a clairement dit que le tableau est inchangé.
Inchangé pendant une optimisation. Il n'y avait rien sur l'autre invariance.
 
Bien sûr, si le tableau est toujours et absolument inchangé, il est préférable de l'inclure dans le code de l'EA. Vous pouvez l'inclure directement dans le fichier EA sans l'inclure.
 
Maxim Kuznetsov:
Oui, vous devez...
Dmitry Fedoseev:
Bien sûr, si le tableau est toujours et absolument invariable, il est préférable de l'inclure dans le code du conseiller expert. Vous pouvez le faire directement dans le fichier de l'Expert Advisor sans inclure.
Je n'ai pas rencontré d'inclusion.Veuillez m'indiquer comment procéder approximativement.
 
forexman77:
Je ne l'ai pas encore rencontré. Indiquez-moi la bonne direction, comment le faire en gros.
Vous pouvez le faire sans l'inlude, générer le code du tableau avec le script, l'écrire dans un fichier (vous pouvez aussi l'envoyer à Alert()), puis le transférer au code de l'EA avec la souris.