Cálculo de matriz única durante a otimização - página 3

 
forexman77:

Os custos são maiores sem ambigüidade. Existem duas variantes com configurações de indicadores inalteradas e com os mesmos valores, mas já escritas em um arquivo, que são despejadas em uma matriz.

A variante com o arquivo leva muitas vezes mais tempo para ser calculada do que a variante com cálculo de indicador no Expert Advisor.

Eu estava pensando que talvez haja uma maneira de salvar a matriz uma vez e usá-la para todas as passagens de otimização, aliviando assim a carga no algoritmo.

Existe uma maneira de escrever e ler a matriz que leva mais tempo do que o cálculo do indicador?

 
forexman77:
Se você fizer isso, a matriz será salva quando você mudar para um novo passe?
Sim, deve...
 
Dmitry Fedoseev:
Sim. Não é difícil ou caro. Você pode usar o modo binário. Você pode não ler o arquivo inteiro, mas comece a partir da posição que você precisa.
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);
  }

O modo binário é quando não há conversões de linha para número?

Eu também acrescentaria essa otimização em um gráfico de 1 minuto sobre uma grande história.

 
incluem atos de compilação. Quem vai compilar? Talvez esta matriz dependa de parâmetros de otimização? Portanto, temos que gerar a matriz antes de cada otimização e compilá-la. É uma solução coxa.
 
Dmitry Fedoseev:
incluem atos de compilação. Quem vai compilar? Talvez esta matriz dependa de parâmetros de otimização? Portanto, temos que gerar a matriz antes de cada otimização e compilá-la. É uma solução coxa.
Não invente - TC disse claramente que a matriz não sofreu alterações.
 
forexman77:
O modo binário é quando não há conversão de string para número?

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

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

Os links também têm exemplos.

 
Maxim Kuznetsov:
Não invente - o TC disse claramente que a matriz não sofreu alterações.
Inalterado durante uma otimização. Não havia nada sobre a outra invariância.
 
Naturalmente, se a matriz estiver sempre e completamente inalterada, é melhor incluí-la no código EA. Você pode incluí-lo diretamente no arquivo EA sem incluí-lo.
 
Maxim Kuznetsov:
sim, você deve...
Dmitry Fedoseev:
É claro, se a matriz é sempre e absolutamente imutável, é melhor incluí-la no código do Expert Advisor. Você pode fazer isso diretamente no arquivo do Expert Advisor, sem incluir.
Ainda não encontrei um include.Por favor, me oriente sobre como fazer isso aproximadamente.
 
forexman77:
Eu ainda não me deparei com isso. Aponte-me na direção certa, como fazer isso de forma aproximada.
Você pode fazê-lo sem o inlude, gerar o código do array com o script, escrevê-lo em um arquivo (você também pode produzi-lo em Alert()), depois transferi-lo para o código EA com o mouse.