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

forexman77  

有一个数组在整个优化过程中不发生变化。是否有可能只计算一次,在整个优化过程中只在每一次传递中参考,而不重新计算?

forexman77  
Alexey Viktorov:
所以在OnInint()中计算它

在MQL4中,我从文件中读取数据,但需要很长的时间。我不知道inite是否在每个新的通道上使用

我在论坛上发现,每次使用inite,即数组将被重新计算。

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

Alexey Viktorov  

当然不是。

哎呀...没有仔细阅读,误解了问题。

Vasiliy Sokolov  
forexman77:

在MQL4中,我从文件中读取数据,但需要很长的时间。我不知道inite是否在每个新的通道上使用

我在论坛上发现,每次使用inite,即数组将被重新计算。

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

这是最基本的。你在每次运行时检查阵列的大小。如果数组是空的或者计算标志是假的,你就重新计算。

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

这是最基本的。每次运行时都要检查数组的大小。如果数组是空的或者计算标志是假的,你就重新计算。

不过,我还没有检查过它。但是,我想问的是,这个数组将从第一道程序中保存下来(在那里它将被计算),并将在随后的程序中可用?

Dmitry Fedoseev  
forexman77:

不过,我还没有测试过它。但是,我想问的是,数组将从第一道工序中保存下来(将在那里计算),并可用于后续工序?

它不会。你必须重新计算,或者把它保存到一个文件中,然后读出来。
forexman77  
Dmitry Fedoseev:
不会的。你必须重新计算,或者把它保存到一个文件中,然后读出来。

所以我有一个难题:如何使它能够从一个文件中读取一次,用它来填充一个数组,并在所有传递中使用这个数组。

我需要它来减少优化时间,因为数组将始终保持不变,每次读取它的成本很高。

Dmitry Fedoseev  
forexman77:

所以我有一个难题:如何使它能够从一个文件中读取一次,用它来填充一个数组,并在所有传递中使用这个数组。

我需要这样做来减少优化时间,因为数组将始终保持不变,而每次读取它都很昂贵。

在MT5中,有一个事件来启动优化,计算其中的数组,将其保存到文件中,并在EA的启动中读取。
fxsaber  

资源附件。不要问怎么做。我没有写源代码。

它将不得不在内部阅读。但它不会从磁盘读取,而是从内存读取。所以,事实上,阵列将在内存中。

forexman77  
Dmitry Fedoseev:
在MT5中,有一个开始优化的事件,在其中计算数组,将其保存到一个文件中,并在EA的启动中读取它。
你是否需要每次都在启动程序中阅读它?
原因: