最適化中の単一アレイ計算

 

最適化全体を通して変化しない配列があります。一度計算し、再度計算することなく、全体の最適化の中で各パスで参照するのみということは可能でしょうか?

 
そこで、OnInint()で計算する
 
Alexey Viktorov:
そこで、OnInint()で計算する

MQL4では、initeでファイルからデータを読み込んでいましたが、非常に時間がかかりました。イナイトは新しいパスごとに使用 するのか、しないのかわからない?

フォーラムで見つけたのですが、initeが使用されるたびに、つまり配列が再計算されます。

https://www.mql5.com/ru/forum/104222

 

もちろん、そんなことはありません。

おっと...よく読まずに質問を誤解していた。

 
forexman77:

MQL4では、initeでファイルからデータを読み込んでいましたが、非常に時間がかかりました。イナイトは新しいパスごとに使用 するのか、しないのかわからない?

フォーラムで見つけたのですが、initeが使用されるたびに、つまり配列が再計算されます。

https://www.mql5.com/ru/forum/104222

初歩的なことですが。実行のたびに配列の大きさをチェックするのです。配列が空であったり、計算フラグが偽の場合は、再計算します。

if(ArraySize(optimize_array) == 0)
   CalculateArray();
 
Vasiliy Sokolov:

初歩的なことですが。実行するたびに配列の大きさを確認するのです。配列が空であったり、計算フラグが偽の場合は、再計算します。

まだテストしていないんですけどね。しかし、私は尋ねると、その配列は、最初のパスから(それが計算される)保存され、その後のパスで利用できるようになるのでしょうか?

 
forexman77:

まだテストしていないんですけどね。しかし、私は尋ねると、その配列は、最初のパス(計算される場所)から保存され、その後のパスで利用できるようになるのでしょうか?

それはないでしょう。再計算するか、ファイルに保存して読み出す必要があります。
 
Dmitry Fedoseev:
それはないでしょう。再計算するか、ファイルに保存して読み出す必要があります。

そこで、あるファイルから一度だけ読み込んで、それを配列に詰め、すべてのパスでこの配列を使用できるようにするにはどうしたらよいかというジレンマがあります。

配列は常に変化しないので、毎回読み込むのはコストがかかるので、最適化の時間を短縮するために必要です。

 
forexman77:

そこで、あるファイルから一度だけ読み込んで、それを配列に詰め、すべてのパスでこの配列を使用できるようにするにはどうしたらよいかというジレンマがあります。

配列は常に変化しないので、毎回読み込むのはコストがかかるので、最適化時間を短縮するために必要です。

MT5では、最適化を開始 し、その中で配列を計算し、ファイルに保存してEAのinitで読み込むというイベントがあります。
 

リソースの添付。方法は聞かないでください。ソースコードを書いたわけではありません。

イナートで読むしかないでしょう。しかし、ディスクからではなく、メモリから読み込むことになる。ですから、実際には、配列はメモリ上に存在することになります。

 
Dmitry Fedoseev:
MT5では最適化を開始するイベントがあり、その中で配列を計算し、ファイルに保存し、EAのinitでそれを読み込む。
パスのたびにinitで読み込む必要があるのでしょうか?