错误、漏洞、问题 - 页 673

 

雷纳特,零--非常感谢你对这个话题的关注和你的建设性的回应!

下一步。

1.关于x64

Renat:

更正确的选择是升级到x64。

...

当然,如果有人要在市场扫描模式下调用数百个指标而不卸载,他们应该直接使用64位版本+安装额外内存。

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

切换到x64是正确的行动方案。但是。一个并不排除另一个。即使是我的16G(我有),我也不想把它们挥霍在一些不必要的数据上。我还有其他要并行工作的东西--MSVS、Matlab等,我也想在它们上面计算大量的任务。我很高兴你能理解这一点,并愿意寻找省钱的方法。

2.关于历史的一个固定起点。


雷纳特

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

但问题是,在测试过程中,累积模式下的指标缓冲区将与历史一起增长,而且没有保存。

完全(几乎)同意。免责声明:在许多情况下,优化是在上一个故事的一小块上进行的。在这种情况下,节省的费用可能是相当可观的。不过,我还是认为这个方案相对可行--特别是如果你有一个好的工作或对实施的估计。 例如,对我来说,这个方案似乎不是很成熟--很多劳动,而且结果不是很激进。一半的解决方案。

3.这里有一个想法!:

雷纳特

rltime中修剪指标的历史,同时保持设定的深度 充满了美丽的故障,将直接击倒 计算/习惯于图表和指标缓冲区的条形同步的 程序员。

不! 如果图表条的行为方式相同--同步 的话,就不会有什么问题。换句话说--如果环形缓冲区(即使大小不同) 始终(强行)使用AsSeries标志--预计不会给用户 带来大量麻烦。

// 在这种情况下,使所有呈现给用户的历史缓冲区成为指标(即循环,AsSeries=true)是很方便的。

在这个变体中。

(1)有一个指标和价格数组的内部表示(在你这边):从左到右的索引(AsSeries==false),大小与用户无关,而且确实"禁止进入"。

而(2)有一个用户方面--所有的缓冲区都是圆形的(在实现中,用户看到的是一个虚拟的线性数组),索引是从右到左(AsSeries==true),大小由用户设定。

这里用户的屋顶是什么? 没有。超出范围时--标准响应 阵列超出范围。

只有你有困难(说实话,不小的困难)。 但是!考虑到计划的普遍性--你只需要紧张一次。并在测试版调试时将所有 "漂亮的小毛病 "扼杀在摇篮里。 之后--普遍的幸福和非常经济的 建设。

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

好主意,我赞成。但它并没有取消环形方案的实施,而只是很好地补充了它。
 
MetaDriver:

3.亚兹尔来了!:

不! 它不会--如果图表栏的行为方式相同--同步进行。换言之--如果环形缓冲区(即使大小不同) 始终(强行)使用AsSeries标志--对用户来说,大规模的麻烦是不可预期的。

// 在这种情况下,使提供给用户的所有历史缓冲区具有指示性(即循环,AsSeries=true)是很方便的。

在这个变体中。

(1)有一个指标和价格数组的内部表示(在你这边):从左到右的索引(AsSeries==false),大小与用户无关,而且确实"禁止进入"。

而(2)有一个用户方面--所有的缓冲区都是圆形的(在实现上。用户看到的是一个虚拟的线性数组),索引是从右到左(AsSeries==true),大小由用户设置。

这里用户的屋顶是什么? 没有。当用户超出范围时--标准反应阵列超出范围。

只有你有困难(说实话,不小的困难)。 但是!考虑到计划的普遍性--你只需要紧张一次。而所有的 "漂亮的小毛病 "都必须在测试版调试期间扼杀在萌芽状态。 之后,每个人都很高兴,建设也非常经济

好主意,我很赞成。但它并没有取消环形方案的实施,只是很好地补充了它。

让我描述一下测试条件。

  • 在M1上的条形历史从2000.01.01到2012.01.01,按顺序排列。
  • 专家顾问使用10,000条的短指标工作,指标的历史被修剪为不超过10,000-15,000条。

由于指标的自动下调,我们

  • 破坏累积性(这一点可以容忍,尽管结果会有抖动,这将导致不可避免的--"是的,在MT5中,甚至电感也会出现故障!")。
  • 我们在指标历史的不可避免的转移中失去了速度(记忆拷贝是昂贵的,尽管内存容量更加昂贵)。
  • 真的让程序员们大跌眼镜,他们会设法使用记忆中的计数器(这可以用个人护理来处理)。
 
Renat:

我将描述测试的条件。

  • 在M1上,酒吧的历史是按顺序从2000.01.01到2012.01.01的。
  • 专家顾问使用10,000条的短指标,为了不超过10,000-15,000条,指标的历史被修剪。

由于指标的自动下调,我们。

1.

  • 我们破坏了累积性(它可以被容忍,尽管结果会有抖动,这将导致不可避免的--"在MT5中,即使是电感也会出现故障!")。

是的,它是可以容忍的。没有人禁止通过安装一个巨大的MaxBar来浪费内存,这几乎不会引起大众的不满,相反,经济将非常有吸引力。

// 但是,由于跳杠,指标出现了故障。这就是不满情绪的合理性所在!

// 所以你甚至容忍了......。:)嗯,我们必须...:(

2.

  • 我们在指标历史的不可避免的转移中失去了速度(记忆拷贝是昂贵的,但内存容量更加昂贵)。

这恰恰是不对的,也是不对的!循环计划恰恰导致了在历史班次上复制的巨大节省。实际上,当移位一个柱子(N个柱子)时,我们必须准确地复制一个值(N个值)。索引虚拟化的(用户)成本可以忽略不计。事实上,它们在压力测试中甚至很难被发现 处理器在一个时钟周期内计算除法的剩余部分+在历史上每次移位时转移虚拟缓冲区的起点需要另外几个时钟周期)。因此,几乎 没有速度损失。不可能发现这种减速,它是如此之小。而在节省大量内存的背景下,这些损失与收益是不可比拟的。

3.

  • 我们真的让那些设法使用记忆中的计数器的程序员大跌眼镜(这一点可以个人谨慎对待)。
我甚至不明白我们在这里谈论什么。 也许它只是在这个地方的健康。
 

Ehhh, a face...

出于某种原因,有那么多关于指标在无限条上窒息的舞蹈和叫喊,但没有一个字是关于跳舞的图形对象。试着在无限期(例如在MN1)上建立超级大的Andrews'Pitchfork,然后在终端设置 中限制条数,转到低时间段并倒退到锚点。其中一些将与极值有巨大的时间差(这是当所有三个点的干草叉完全位于真正的M1条 的区域,而没有超出更高时间段的假条的边界!)。这又是为什么呢?显然,因为我们没有足够的M1 的历史数据来计算一些自动结合点的准确M1值。但历史数据与此有什么关系?好吧,也许他们已经足够了,但橱窗里展示的酒吧却没有,因此才有了这些转变。也就是说,有些点 "并不真正知道自己在哪里"。

我希望有人能自己检查一下,也许只有我一个人有这样的麻烦......。

 

我注意到一个奇怪的现象!

在形成一个新条形 的时刻,如果你读到以前条形的开盘和收盘值(例如10个以前的条形),然后5秒钟后再次得到它们,那么其中一些值是不同的,然后如果你在一个新条形形成时得到它们,那么一切都很好,但在最初的几秒钟,由于某些原因,这些值是不同的。

我希望我解释得很清楚。

你能告诉我,在从一个新的条形图开始读取开盘和收盘的数值之前,是否应该有一个超过5秒的延迟?

下面是一个操作的例子。


上图是延迟后正确触发的,下图是在一个新的条形图后立即触发的,有一个错误,右边是第六行的基准值。

 
pusheax:
也许是不同步的问题,一个新的条形图 最好是在所有使用的仪器中进行跟踪。
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Swan 2012.03.19 13:34

也许问题是不同步的,一个新的酒吧 最好能被所有正在使用的工具所追踪。

是的,事实证明你是对的,谢谢你!

 
我不明白。要么我有问题,要么我没有问题。当我在出现的编辑器窗口中点击 "回复 "时,相关的帖子被复制成了一个引用。现在几天前,这个功能已经消失了。打开一个空窗口。在Opera和IE中试过。
 
同样,歌剧也是如此。
 
220Volt:
同样,歌剧也是如此。
我在FF中很好。