优化过程中的单一阵列计算 - 页 3

 
forexman77:

成本毫不含糊地更大。有两种变体,指标设置 未变,数值相同,但已经写入文件,被转储到一个数组。

带文件的变体比专家顾问中带指标计算的变体要长很多倍。

我只是在想,也许有一种方法可以将数组保存一次,并将其用于所有的优化过程,从而减轻算法的负担。

有没有一种写和读数组的方法,比指标的计算时间长?

 
forexman77:
如果你这样做,当你切换到一个新的通行证时,该阵列会被保存吗?
是的,它必须...
 
Dmitry Fedoseev:
是的,这并不困难,也不费钱。你可以使用二进制模式。你可以不读整个文件,而是从你需要的位置开始。
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);
  }

二进制模式是指没有行与数之间的转换 时?

我还想补充一点,在大历史的1分钟图表上进行优化。

 
包括关于汇编的行为。谁来编撰?也许这个阵列取决于优化参数?因此,我们必须在每次优化前生成数组并进行编译。这是个蹩脚的解决方案。
 
Dmitry Fedoseev:
包括关于汇编的行为。谁来编撰?也许这个阵列取决于优化参数?因此,我们必须在每次优化前生成数组并进行编译。这是个蹩脚的解决方案。
不要编造它--TC明确说过,阵列没有变化。
 
forexman77:
二进制模式是指不存在字符串 到数字的转换

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

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

链接中也有例子。

 
Maxim Kuznetsov:
不要编造它--TC明确说过,阵列是不变的。
在一次优化过程中未发生变化。没有任何关于其他不变量的内容。
 
当然,如果数组总是完全没有变化,最好将其纳入EA代码中。你可以直接把它包含在EA文件中,而不包括它。
 
Maxim Kuznetsov:
是的,你必须...
德米特里-费多塞耶夫
当然,如果数组始终是绝对不可更改的,最好将其纳入专家顾问的代码中。你可以直接在专家顾问的文件中这样做,不包括在内。
我还没有遇到过 包括。请指导我如何做到这一点。
 
forexman77:
我还没有遇到过给我指出正确的方向,如何粗略地做到这一点。
你可以不用inlude,用脚本生成数组代码,将其写入文件(你也可以将其输出到Alert()),然后用鼠标将其转移到EA代码。