最適化中の単一アレイ計算 - ページ 3

 
forexman77:

コストは一義的に大きくなります。インジケータの設定を 変更せず、同じ値を持つ2つのバリエーションがありますが、すでにファイルに書き込まれているため、配列にダンプされます。

ファイルを使ったバリアントは、Expert Advisorのインジケータ計算を使ったバリアントより何倍も計算時間がかかります。

私はちょうど、配列を一度保存して、それを最適化のすべてのパスに使用することで、アルゴリズムへの負荷を軽減する方法があるのではないかと考えていたところです。

インジケーターの計算より時間がかかる配列の書き込み、読み出しの方法はありますか?

 
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は明確にアレイは不変だと言っている。
1回の最適化で変化なし。もうひとつの不変量については、何もありませんでした。
 
もちろん、常に全く変化しない配列であれば、EAコードに含めた方がよいでしょう。インクルードせずに直接EAファイルに含めることができます。
 
Maxim Kuznetsov:
はい
ドミトリー・フェドセーエフ
もちろん、配列が常に絶対に変更できない場合は、Expert Advisor のコードに含める方がよいでしょう。Expert Advisorのファイルにインクルードせずに直接行うことができます。
インクルードには遭遇して いない。おおよその方法を教えてください。
 
forexman77:
まだ出会って いないんです。大まかなやり方、方向性を示してください。
inludeなしで、スクリプトで配列コードを生成し、ファイルに書き出し(Alert()に出力することもできます)、マウスでEAコードに転送すればOKです。