给开发者的问题--在优化过程中使用所有的计算核心 - 页 8

 
有趣的方法。
我也将不得不制作我自己的 "自行车"。
任务大致如下。
参数的数量是可变的。
根据数值的不同,新的参数可能会出现,或者现有的参数可能会消失。
他们的数量可能很大(30、100、200、无穷大),我认为平均是20-50。
一个策略只有在可用参数值的某些组合下才是完整的,只有在完整的策略中我们才能计算出利润、缩水等。
我们可以很容易地(从计算的角度)添加和删除参数,确定哪些参数在数值变化时出现和消失。

我们必须弄清楚如何使用测试器来 获得好的参数。参数是战略的功能要素。可以通过程序管理测试器(启动、停止、改变仪器、日期、杠杆、获得估计的计算时间、改变EA/指标参数等),获得优化结果(读取缓存)。
有什么想法吗 :)?我还没有走到这个发展阶段。
 
Aliaksandr Hryshyn:
有趣的方法。
我也要做我的'自行车'。
任务大致如下。
参数的数量是可变的。
根据数值的不同,新的参数可能会出现,或者现有的参数可能会消失。
他们的数量可能很大(30、100、200、无穷大),我认为平均是20-50。
一个策略只有在可用参数值的某些组合下才是完整的,只有在完整的策略中我们才能计算出利润、缩水等。
我们可以很容易地(从计算的角度)添加和删除参数,确定哪些参数在数值变化时出现和消失。

我们必须弄清楚如何使用测试器来 获得好的参数。参数是战略的功能要素。可以通过程序管理测试器(启动、停止、改变仪器、日期、杠杆、获得计算时间的估计、改变EA/指标参数等),获得优化结果(缓存读取)。
有什么想法吗 :)?我还没有走到这个发展阶段。

根据具体情况,这个问题可能有几种解决办法。

如果所有的参数,包括已经存在的参数和可能出现的参数,在参数集(染色体或其他等价物)中都有严格规定的位置,那么就根本不存在问题。

如果不能事先定义每个参数的某个位置,那么就有必要将参数划分为严格意义上只能相互组合的类型(那么参数在哪个位置就不重要了)--需要修改AO。

还有其他方法来解决这个问题,但无论如何,你将需要一个定制的AO,一个在标准结构上的上层建筑。

 
Boris Egorov:
确认内存过载 ....虽然很奇怪,但没有人取消调换,我认为开发者需要再次考虑到这一点。

你应该让我们知道问题是如何解决的。我们很担心你,不是吗?

每个代理需要多少最低限度的内存(你是否减少了激活的代理数量,直到所有的代理都是均匀 的负载?)

增加了pagefile?物理内存将被不断交换,它可能会减慢很多,你需要找到一个总优化时间最小的核心数量。

 
Edgar Akhmadeev:

你应该让我们知道问题是如何解决的。我们很担心你,不是吗?

每个代理需要多少最低限度的内存(你是否减少了激活的代理数量,直到所有的代理都是均匀的负载?)

增加了pagefile?物理内存将被不断交换,可能会出现严重的减速,我们需要找到一个总优化时间最小的核心数量。

这一切都取决于蜱的使用,历史深度,工具的数量。只要看看任务管理器,你会看到那里的一切,所有内存的数量减去1-2GB的操作系统除以一个代理使用的数量。这对每个人来说都是不同的。

如果将RAM的一个区域用于报价,并可能用于指标,那么开发者就可以做出真正的改进。
 
Aliaksandr Hryshyn:

这完全取决于蜱虫的使用,历史的深度,工具的数量。只要看看任务管理器,你就可以看到总的内存大小减去1-2GB的操作系统除以一个代理使用的大小。每个人的情况都不同。

如果将RAM的一个区域用于报价,或许还用于指标,那么开发者确实可以改善这种情况。

你在向我解释吗?我在向一个人解释这个问题,现在我对结果感兴趣。没有反馈。

而且我们已经多次讨论过终端对内存的低效使用,MQ几次承诺要改变每个代理重复的tick历史和临时文件的情况,以及在每次tick 优化前长时间创建这些文件。就我个人而言,多年来我不得不禁用几乎一半的代理和勾选优化功能。我有8GB和8个代理。但现在我们使用我们所拥有的,我们可以增加内存大小或禁用代理。

 
Edgar Akhmadeev:

你在向我解释吗?我向那人解释了这个问题,现在我想知道结果。没有反馈。

终端对内存的低效使用我们已经讨论过很多次了,而MQ几次承诺要改变这种情况,为每个代理复制tick历史和临时文件,并在每次tick 优化前长时间创建这些文件。就我个人而言,多年来我不得不禁用几乎一半的代理和勾选优化功能。我有8GB和8个代理。但现在我们使用我们所拥有的,我们可以增加内存大小或禁用代理。

>你只需要让我们知道问题是如何解决的。我们很担心你。

>我向他解释了这个问题,现在我对这个结果很感兴趣没有反馈。

我很抱歉,我在工作,我没有时间。

我已经优化了该EA。为了让优化器工作,我删除了一些 "不重要 "的部分(特别是与OpenCL和SQLite有关的一切)。我现在没有内存溢出。但是...当然,这不是一个解决方案。

在另一台电脑上,我不得不禁用一些核心,以避免冻结......。因此,例如,在3950X(16核心/32线程)和32GB上的系统,使用所有线程只是挂起。此外,它在代理上挂起,并挂起,直到你通过任务管理器手动杀死该进程....。我禁用了一些核心,计算继续进行。我认为开发者应该做一些事情来明确这个问题。如果优化器真的需要超过10G的内存进行计算,应该在类似警报的地方明确写出来。但我要再次提醒你关于交换的问题。我已经安装了Xmeters...所以我可以在任务栏上直观地看到内存负载。

我认为还有一些专门与amdc CPU有关的故障,而且以前并不存在--尽管顾问是一样的。症状如下 - 只有5个核心....和错误的计算挂在...而且也不完全是内存的问题,即同样的专家顾问强制16个线程没有问题,而问题是浮动的,现在又不是。如果我不在优化器中运行测试,它运行得很好。我不止一次注意到这一点。所以我得去看看。

关于网络代理的刹车问题,我还是没能找到。"一个核心--一个工作 "是开发商无法理解的。和以前一样,10个核心将各得到30个工作,另外30个网络代理将得到闲置。需要很长的时间来分配任务,思考一些问题。因此,总的来说,有很多滞后性。

对了,我忘了:非常感谢大家的参与、帮助和建议。
 

Renat Fatkhullin

不过,我还是想再次提出这个问题,并专门向雷纳特-法特库林 提出一个问题

1.我正在优化一个由几台性能迥异的服务器组成的本地农场,在优化过程中我看到了一些由不同性能的CPU造成的非常可怕的延迟。假设有CPU Xeon E5-2620 v2(2.1 GHz)、Xeon E5-2620 0(2.00 GHz)、i7-3820(3.6 GHz)、Xeon E3-1245(3.7 GHz)、Ryzen 7 2700、Ryzen 9 3900X、Ryzen 9 3950X的服务器。目前的算法是这样工作的:它形成一个作业栈,将该作业栈平均分配给每个可用的核心。由于低速至强E5-2620 0(2.00GHz)和至强E5-2620 v2(2.1GHz)CPU,农场空闲时计算其任务,但这两个CPU甚至没有计算一半的任务。因此,整个农场就这样闲置着。这种情况发生了,并将继续发生,因为CPU有不同的速度,只要工作是以数据包形式分布的。经验表明,网络延迟一点都不重要,可以忽略不计。是否已经有可能重新设计作业分配算法:不把几个作业分配给每个可用的核心,而是"给每个被释放的核心从当前一代堆栈中提供一个作业"?

2.是否可以增加每10分钟将测试结果保存到xml文件....,并从上次保存开始运行?

Renat Fatkhullin - MetaQuotes
  • www.mql5.com
Профиль трейдера
 

我们已经对测试器和优化器进行了全面重写。

我们将大刀阔斧地进行检修,解决积累的问题。

 
Renat Fatkhullin:

我们已经对测试器和优化器进行了全面重写。

我们将大刀阔斧地进行检修,解决积累的问题。

会不会有。

1.对代理退出的反应更快,比如说,如果没有代理退出,数据包的传送会中断几分钟,数据包会重新分配。

2.是否可以在一个实例中上传远程机器 上所有代理的数据?

3.当与代理的连接中断时,在没有下载优化所需的所有数据(文件)的情况下,是否会出现传输大量数据的问题?

 

还有一件事困扰着我 ....

比方说,优化正在进行,在那一刻,代理的metatrader被更新 ....代理人有一个工作(或者说是一批工作),会不会丢失或重新计算?