策略测试仪的优化 - 页 2

 

写了一个EA,运行优化看看,看看....和关闭... 在我看来,https://www.mql5.com/ru/docs/series Copy...正在缓慢工作。

Документация по MQL5: Доступ к таймсериям и индикаторам
Документация по MQL5: Доступ к таймсериям и индикаторам
  • www.mql5.com
Доступ к таймсериям и индикаторам - Документация по MQL5
 

我正在快速优化。我没有任何抱怨。但最近,优化工作没有立即开始,而是停滞在原地(你可以听到磁盘在努力工作,做一些事情)。我不得不不断地从一个接入点 跳到另一个接入点。只有这样,优化才开始工作。

 
gumgum:

和关闭...在我看来,https://www.mql5.com/ru/docs/seriesCopy...工作缓慢。

我不太清楚你的意思。

更准确地解释一下。

 
gpwr:

我正在快速优化。我没有任何抱怨。但最近,优化工作没有立即开始,而是停滞在原地(你可以听到磁盘在努力工作,做一些事情)。我不得不不断地从一个接入点跳到另一个接入点。只有这样,优化才开始工作。

如果可能的话,你能否更详细地描述一下情况?你要等多久?什么(如果有的话)被写入日志?

 
Dmitriy2:

而我选择了一些参数,点击了测试...早上,我数了数跑步的次数,还剩下多少......。计算出离优化结束还有50天...我的电脑有4个核心+2个核心代理...我不需要这种优化,所以我把它关掉了...

尝试先优化一些参数,然后再优化其他参数,增加步长。然后你可以在样本内再运行一次。
 
alexvd:

你的意思不是很清楚。

更准确地解释一下。

比如说。

double open(string sym,ENUM_TIMEFRAMES tf,int ps)
{
double ren[1]={EMPTY_VALUE};
CopyOpen(sym,tf,ps,1,ren); 
return(ren[0]); 
}

如果你要求获得最后的50000个值,并测量从文件中读取的时间,差别是~0%~30%。50000个值,并测量时间,写到文件,然后测量从文件中读取的时间,那么差异是~0%~30%,有利于前者。

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
gumgum:

这里有一个例子。

那么差异是~0%~30%,有利于前者。

所以它从文件中读取的速度更快?

当你可以一次复制50,000个价值时(如果你有那么多的话),为什么还要一次复制一个价值?

 
alexvd:

所以它从文件中读取的速度更快?

当你可以一次复制50,000个价值时(如果你有那么多的话),为什么还要一次复制一个价值?

从文件上看,速度较慢。那么,为什么在 "一次50000 "和最后一次通话之间有如此大的差异?

 
gumgum:

那么,为什么 "一次5万 "和最后一次通话之间会有如此大的差别?

算术很简单(数字是近似的,但数量级很重要)。

访问一个数组元素~5个CPU周期。

该函数的调用是~100个时钟周期。

这就使得单次调用函数来获取所需的数据量,在执行速度上更便宜。

 

讨论似乎已经进入了某一特定EA的代码的具体细节。但我注意到,无论优化哪个EA,几乎所有时间都花在准备工作上(超过90%)。就这样,每次运行(在日志中传递)都有新的输入参数被优化。因此,无论你如何优化你的代码,你都只能得到几个百分点的性能提升。

alexvd请看本主题的第一和第三篇帖子:我已经用样本和日志详细描述了它们

如果测试人员能在优化过程中只做一次前期工作,然后计算列举输入数据的专家顾问,那么优化时间至少会缩短一个数量级。然后我们可以谈一谈专家顾问的代码本身。