错误、漏洞、问题 - 页 672

 
MetaDriver:

窗户上的栏杆是多少钱?

酒吧的价值是2000000。
 
papaklass:

问题是,当TF被切换时,终端中没有内存被释放出来。启动任务管理器,把指标到图表上,看着内存的增长。然后切换到另一个TF,你会看到内存又开始增长。但从逻辑上讲,当你切换到另一个TF时,前一个TF的数据应该从内存中卸载。由于前一个TF的数据没有被删除,内存不断增长,直到它重新启动并产生错误。如果你把你的指标从图表上移开,你会看到在一定时间后,内存被清除。但在指标运行时,它不会被清除。

我的观点:解决这个问题的办法是ServiceDec。

谢谢,我将在切换TF之前先删除该指标。此外,我把窗口的最大条数从2000000减少到1000000,显然MetaDriver 想告诉我这一点。

到目前为止,它似乎是有效的。

 
pusheax:

谢谢,我将在切换TF之前先删除该指标。此外,我把窗口中的最大条数从2000000减少到1000000,显然MetaDriver 想告诉我这个。

到目前为止,它似乎是有效的。

你为什么需要10万? 10万对我来说已经足够了。 这就是我想告诉你的。

它不以任何方式限制测试的深度。

它只限制了(1)窗口中的显示(2)指标缓冲区的大小。

我长期以来刻意限制 "可见的历史"。结果是--我在记忆方面没有问题。

 
MetaDriver:

你为什么需要一百万? 10万对我来说已经足够了,这正是我所暗示的。

它不以任何方式限制测试的深度。

它只限制(1)窗口的显示(2)指标缓冲区的 大小。

我长期以来刻意限制 "可见的历史"。结果是,我的记忆力没有问题。

是的,谢谢你,为了避免记忆问题,我会更加限制它,因为我准备在InstaForex公司普遍使用108个货币对。
 
pusheax:
是的,谢谢,我准备在InstaForex公司更多的使用108个货币对,这样我就不会有任何记忆问题。

这是个很好的话题。早在MT5的早期,我就嚷嚷着所有指标都应该有一个新的标准 参数--计算的条数。

否则我们会得到唯一的限制器--TERMINAL_MAXBARS这对于 使用指标 实时分析许多符号的专家顾问来说是不可接受的。在大多数情况下(99%),我在Expert Advisors中需要一个严格指定的最新条数和所有条数。其他的东西对我来说都太多了。当然,不仅仅是对我来说...

它被忽略了。因此,我把这种计算转移到我的专家顾问的代码中。

啊,是的!还有许多自写的补丁的出现。一些聪明的文章甚至被写出来并发表,比如下面这篇文章。

减少辅助指标的内存消耗

通过Zigzag和ATR的例子来实现指标类的实施

...

 
短期历史上的指标无法计算,因为它们是所有进程(终端、窗口、专家)之间的共享资源。而且有许多规则用于更新、同步和重新计算指标上的市场环境。

如果你把常规显示的指标和短线计算的指标分开,就很容易在长线累积指标上出现背离。

同时这也会导致我们这边出现危险的拐杖。

一个好的方法是每张图表设置100000条,或者切换到x64。
 

Renat:
Индикаторы на короткой истории нельзя рассчитывать, так как они являются общим разделяющимся между всеми процессами (терминал, окна, эксперты) ресурсом. Причем на индикаторах действуют множество правил обновления, синхронизации и пересчета рыночного окружения.

Если разделить штатные отображаемые индикаторы и короткие расчетные, то легко будет получить расхождение на длинных кумулятивных индикаторах.

Так же это приведет к опасным костылям на нашей стороне.

Хороший способ - устанавливать 100000 баров на чарт или переходить на х64.

一般来说,没有什么变化。在MQL5中限制指标缓冲区大小的可能性的请求被拒绝,如果您的程序由于使用了许多指标缓冲区而开始消耗大量的内存--那么它就被称为 "编程错误"。

"在专家顾问中,我最经常(99%)需要一个严格的特定数量的最后一条和所有。所有不必要的事情对我来说都太多了。当然,不仅仅是我......"(с)

 
Renat:
2)指标不能被计入短历史,因为它们是所有进程(终端、窗口、专家)之间共享的资源。而在指标上有许多更新、同步和重新计算市场环境的规则。

3. 如果你把常规显示的指标和短线计算的指标分开,就很容易在长线累积指标上出现背离

同时这也会导致我们这边出现危险的拐杖。

1.一个好的方法是每张图表设置100000条,或者切换到x64。

1.这就是我所做的。尽管如此,这仍然是一个令人不舒服的妥协。理想情况下,如果我完全不考虑开发问题(纯粹作为一个用户),我希望在设置计算长度时能有一个选择。对于图表--全长(虽然不一定,但也有严重的大的例外),对于专家--完全是必要的长度。

2.作为一个开发者,我理解 这种方法的困难和同时的局限性,然而内存消耗也是我的问题,它顽固地不想落入后台。我有一个具体的建议--解决方案--将计算周期(让我们这样称呼它)视为一个平等的参数--不比其他参数差。那么具有所有类似参数的两个指标,但计算周期不同,只是两个不同的指标。是的,理论上有一些愚蠢的用例会导致额外的费用(如果用户会乘以计算周期),但在实践中不太可能。 如果有人想顺水推舟,他/她是有罪的。 就像现在所有的用户都有罪,"开了太多的指标,没有注意减少TERMINAL_MAXBARS"。


我知道 在EMA计算中,从时间开始的所有条形都被使用,但我也知道在随机指标、RSI和大量的(主要的)其他指标中,计算是在有机 长度上进行的。而这些知识 使我可以灵活地选择计算周期(MaxBar)。 只要给我一个选择。

 
MetaDriver:

就像现在所有用户 "开了太多的指标而不注意减少TERMINAL_MAXBARS "一样,是他们的错。

是的,特别是在冠军赛条件下,你根本无法影响TERMINAL_MAXBARS的大小。

 
MetaDriver:

1.我已经这么做了。不过,这仍然是一个令人不舒服的妥协。理想情况下,如果我们完全不考虑开发问题(纯粹作为一个用户),我希望在设置计算长度时有一个选择。对于图表--全长(虽然不一定,但也有严重的大的例外),对于专家--完全是必要的长度。

2.作为一个开发者,我理解 这种方法的困难和同时的局限性,然而内存消耗也是我的问题,它顽固地不想落入后台。我有一个具体的建议--解决方案--将计算周期(让我们这样称呼它)视为一个平等的参数--不比其他参数差。那么具有所有类似参数的两个指标,但计算周期不同,只是两个不同的指标。是的,从理论上讲,有一些愚蠢的变体会导致额外的费用(如果用户乘以计算周期),但在实践中不太可能。 如果有人想超过这个坎 - 那是他自己的错。 就像现在所有的用户都犯了 "开了太多的指标而没有注意到减少TERMINAL_MAXBARS"。


我知道 在EMA的计算中,从时间开始的所有条形都被使用,但我也知道在随机指标、RSI和大量的(主要的)其他指标是按有机 长度计算的。而这些知识 使我可以灵活地选择计算周期(MaxBar)。 只要给我一个选择。

这个信息很清楚。

我们自己也想减少资源的消耗。也许解决方案可以是一些函数IndicatorMaxDepth(uint len),它将只作用 于该EA中创建的指标。

但问题是,在测试过程中,累积模式下指标的缓冲区会与历史一起增长,而且不会有保存。实时修剪指标的历史,同时保持指定的深度,充满了美丽的故障和打击程序员的头脑,他们计数/习惯于图表和指标缓冲区的条形同步。

一个更好的选择是转移到x64。


我们将修改指标的缓存,现在使用的是最大效率原则与节省内存原则。我们将尝试立即卸载被拒绝的指标,而不是像现在这样在内存中保留一段时间。这将使我们有可能通过IndicatorRelease直接卸载,连续调用数百个指标。

当然,如果有人会在市场扫描模式下调用数以百计的指标而不卸载它们,那么他们必须直接使用64位版本+安装额外内存。

现在,坐在X32上做大规模的测试,这很奇怪。任何像样的x64电脑,16GB内存(不对显卡和显示器狂热),15000卢布就可以买到。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5