使用自定义指标时的EA加速理论(功能-iCustom)。 - 页 5

 
Alexander Laur:
你能描述一下这个任务吗。脚本应该如何处理所有的条形图?我认为你是想正面解决这个问题。如果没有看到要解决的问题,就很难给出建议。

我有这个脚本,这里是ToRhttps://www.mql5.com/p/21/234411 , 但由于缺乏内存,在操作上有困难....。或者说,它在短暂的脚本运行后就耗尽了。

 
Alexander Laur:
该页面已被禁止。你有一个脚本,这很好,但它并不能解决问题。脚本是做什么的?
该脚本分析了指标相对于价格的位置。有很多标准--目的是找到指标的最佳设置,其中指标是一个支撑或阻力区。该脚本允许连接任何类似于移动平均线 的指标,并执行参数的枚举。
 
Alexander Laur:

Renat已经回答说,只有一种方法--将指标计算转移到脚本中。

我明白,但这使工作更加复杂,大大增加了我的成本。使得这个工具(脚本)不具有通用性。

亚历山大-劳尔

你也可以进行受虐,将计算出的参数范围分成子范围。并运行脚本,改变每个子范围的参数。我知道这很耗费时间,但我们能做什么呢?

现在我认为解决方案可能是将脚本打开图表的过程自动化,在上面计算一些指标,通过脚本关闭图表并打开一个新的图表--这将允许清除内存?

亚历山大-劳尔

第二个选择是转为5。也就是说,我们应该在第5个指标上寻找最佳参数,然后在第4个指标上替换最佳参数。在5中,有可能管理指标 的装载和卸载。但是加载/卸载操作是相当密集的资源。

我认为有成本的操作总比没有好,我明白在5中可以使用更多的内存,但我需要为4编写的指标,因为我在4上交易...

我的计算是基于第一种,我不知道如何将指标转换为5,但有可能使指标相互兼容,至少在编译后 ...

 
Alexander Laur:

没有找到向图表 添加指标 的命令。通过删除该图表,你当然会释放出内存。但当你关闭图表时,图表上的所有指标都将被关闭。

有一个打开新图表的命令,但没有命令将指标附加到新打开的图表上。这就是为什么真正的自动化在这种情况下也不会起作用。

那么iCustom呢,我们用它来调用指标--这相当于增加了一个图表--事实上,我并没有把图表放在图表上。
 
Alexander Laur:

通过iCustom()调用一个指标,并不是向图表中添加一个图表。

如果你不把图表放在图表上,那么为了释放内存,你要杀死什么图表?

不要浪费你的时间,相信雷纳特。

也许我弄错了。让我们再看一遍。

1.有一个脚本可以调用iCustom指标功能,并在内存中保存图表缓冲区。

2.iCustom函数的调用是多次的--结果是RAM被填满,指标返回0。

终端必须能够与内存一起工作,对吗?要清除缓存,按照我的理解,如果不需要这些数据,是可以的,如果删除了有数据的图表,就不需要这些数据了。

4.删除图表,腾出RAM用于第1点的进一步计算。

我哪里错了?


P.S. 根据我的理解,数据都是与进行计算的图表联系在一起的--不管使用什么报价。

 
-Aleks-:

也许我弄错了。让我们再看一遍。

1.有一个脚本调用iCustom指标功能,并在内存中存储图形缓冲区。

2.iCustom函数被多次调用--结果是RAM被填满,指标返回0。

终端必须能够与内存一起工作,对吗?要清除缓存,按照我的理解,如果不需要这些数据,是可以的,如果删除了有数据的图表,就不需要这些数据了。

4.删除图表,腾出RAM用于第1点的进一步计算。

我哪里错了?


P.S. 根据我的理解,数据是与进行计算的图表联系在一起的--为此使用什么报价并不重要。

在第3点。

终端在关闭后将时间序列和建立在其上的指标的缓存存储一段时间,以便在下一次调用时不需要一次性重新计算所有内容。

 
Andrey Khatimlianskii:

在第3点。

终端在关闭后将时间序列和基于它们的指标的缓存存储一段时间,这样当你再次访问它时,它就不必一次性地重新计算所有内容。

但什么是 "一些 "时间?也许还有其他释放资源的标准/方法(从内存中删除缓存)?
 
-Aleks-:
但什么是 "一些 "时间?也许还有其他释放资源的标准/方法(从内存中删除缓存)?

不,Renat已经回答了。

在MT5中,如果使用指标作为资源的专家顾问被卸载,缓存将被清除。也就是说,你可以用专家顾问加载一个图表,读取其中的一部分,然后关闭该图表。但它仍然不是非常快。

我不知道MT4的情况。

 
Andrey Khatimlianskii:

不,雷纳特已经答复了。

在MT5中,如果使用指标作为资源的专家顾问被卸载,缓存将被清除。也就是说,你可以用专家顾问加载一个图表,读取其中的一部分,然后关闭该图表。但无论如何,它不是非常快。

我不知道MT4的情况。

脚本的操作结束后,内存被释放。所以,用于计算从指标获得的数据的内存被释放,但它不涉及图表缓冲区,对吗?

如果我们不通过图形缓冲区来翻译数据,而是通过其他方式--例如通过全局变量(我不知道是否可以在那里创建一个缓冲区),那么内存不足的影响就可以克服?

 
这里有一个实验。
1. 打开图表和 "任务管理器" - 已用内存215692 kb
2.我应用指标 - 占用内存219612 kb (增加3920 kb)
3.删除指标 - 已用内存217984 kb (已释放1628 kb)
而剩余的2292kb的未释放内存,据我所知,进入了缓存?
缓冲区是不是占用了太多的数据--从2013年2月开始,哨兵的历史。