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

 
fxsaber:
资源附件。不要问怎么做。没有写源代码。
你需要一个第三方软件来创建一个阵列吗?
 
forexman77:

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

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

那么,比如说,写一个脚本,准备并收集所有的数据到一个数组中,然后把完成的数组写到一个文件中。然后在专家顾问的初始化过程中从文件中读取这个数组。该文件可以根据你的需要多次使用,每次运行EA。
我想这个解决方案已经向你建议过了。它不适合你?
 
forexman77:
使用第三方软件来创建一个阵列?
是的,由同一个MQL5在优化前单独进行一次。
 
BlackTomcat:
例如,编写一个脚本,准备并收集一个数组中的所有数据,然后将完成的数组写入一个文件中。然后在EA的初始化过程中从文件中读取这个数组。该文件可以根据你的需要多次使用,每次运行EA。
我想这个解决方案已经向你建议过了。它不适合你?

是的,这就是问题所在,它不适合。在优化中,有15,000张通行证。而且我只需要计算一次,在随后的传递中只需要处理一个数组。

也就是说,我在文件中已经有了提前计算好的数据和水平,它们是我事先知道的。而且,即使每次在init中读取文件也是非常昂贵的(有成千上万行)。我不知道MQL5的情况,但在MQL4中,他们在论坛上写道,程序每次都会通过init。

 
forexman77:
是否有必要每次都读进去?
是的,这并不困难,也不费钱。使用二进制模式。你可以不读整个文件,而是从想要的位置开始。
 
forexman77: 而且,即使每次读取文件,每次都要付出很大的代价(几千行)。我不知道MQL5的情况,但在MQL4中,他们在论坛上写道,程序在每一次通过时都要进行一次初始化。
你知道,我认为你夸大了与从文件中读取阵列有关的费用。每次Windows从睡眠模式中醒来,它都会从硬盘中恢复它在进入睡眠状态时的状态图像,包括所有应用程序的状态。你认为那里的物品和信息不够多吗?而这样的睡眠需要多长时间才能出来?
你在夸大其词,IMHO。
 
forexman77:

是的,这就是问题所在,它不适合。在优化中,有15,000张通行证。而且我只需要计算一次,在随后的传递中只需要处理一个数组。

也就是说,我在文件中已经有了提前计算好的数据和水平,它们是我事先知道的。而且,即使每次在init中读取文件也是非常昂贵的(有成千上万行)。我不知道MQL5的情况,但在MQL4中,他们在论坛上写道,程序每次都会通过init。

一个来自C/C++世界的经典技巧:你可以从你的文件中制作/转换一个静态数组(只是文本:double arr[100500]={1,2,3....}),并通过#include将其包括在内。

 
BlackTomcat:
你知道,我认为你夸大了从文件中读取数组的成本。每次Windows从睡眠模式中醒来时,它都会从硬盘中恢复其进入睡眠状态时的图像,包括所有应用程序的状态。你认为那里的物品和信息不够多吗?而这样的睡眠需要多长时间才能出来?你在夸大其词,IMHO。

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

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

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

 
Maxim Kuznetsov:

一个来自C/C++世界的经典技巧:你可以从你的文件中制作/转换一个静态数组(只是文本:double arr[100500]={1,2,3....}),然后通过#include将其包括在内。

如果你这样做,当你切换到一个新的通行证时,该阵列会被保存吗?
 
forexman77:

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

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

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

计算一个时间,并将带有结果的数组保存到一个文件中。然后在初始化过程中从文件中读取准备好的数组并立即使用它。不需要再重新计算。你之前已经计算好了一切,并保存了下来。为什么要重新计算?:)