使用自定义指标时的EA加速理论(功能-iCustom)。 - 页 3 123456789 新评论 Dmitry Fedoseev 2015.01.15 21:14 #21 -Aleks-: 那么,必要指标的大杂烩会比单独使用指标工作得更快--关于报价的信息会被要求得更少?不是必须的。确保计算结果不重复。如果两个指标的初步计算结果相同,应合并为一个。你不应该只是把所有的指标粘贴到一个。在要求报价方面没有任何问题。它们不需要被要求,它们自己就会出现。 Aleksandr Prishenko 2015.01.19 10:47 #22 试着用一个时间延迟来重新计算指标。int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { static datetime prevtime; datetime per=15; //задержка секунд if((TimeCurrent()-prevtime)<per) { return(rates_total); //прошло мало секунд - поэтому выходим } //--- main cycle .................... prevtime=TimeCurrent(); return(rates_total); }当在 "OHLSnaM1 "上测试时,几乎没有差别,也许在 "所有ticks "上测试会更快。 Sergey Dzyublik 2015.01.19 11:17 #23 我对iCustom工作方式的印象(如果在过去两个月中没有任何改变的话) 当你 从iCustom中调用该指标 时 一个可能的历史的所有缓冲区和存储在缓存中的结果将被计算,缓存将被绑定到参数和指标名称上 如果你下次调用相同的指标和相同的参数,用于第二个索引阵列--结果将从缓存中返回(+对新的历史数据的修正)。 如果你调用同一个指标,但只改变一个参数--对所有缓冲区可能的历史进行全面计算,并保存另一个缓冲区,但与新的参数绑定,将被执行。 你可以指定应该从专家顾问那里下载多少历史记录,如果你在指标中设置这样一个参数,但在这个调用中,你应该始终传递相同的数字--历史记录的大小。(它将影响iCustom第一次调用的速度)。如果可能的话,你可以尝试在指标中或通过指标参数删除不必要的缓冲区的计算,如在历史尺寸的例子中(减少缓存大小 - 提高计算速度) Aleksey Vyazmikin 2015.01.21 23:01 #24 谢谢大家提供的信息。我想澄清一下,如果在一个有5个图形缓冲区的指标中,不使用图形缓冲区,而是使用普通数组--通过图形缓冲区输出数据,就像我建议的那样,在优化过程中指标的速度会更快,因为为指标分配的内存会更少,因此用它工作的时间会更少?如果进行了优化,每次都不改变指标设置,那么指标是否会被重新计算? Andrey Khatimlianskii 2015.01.21 23:23 #25 -Aleks-:谢谢大家提供的信息。我想澄清一下,如果在一个有5个图形缓冲区的指标中,不使用图形缓冲区,而是使用普通数组--通过图形缓冲区输出数据,就像我建议的那样,在优化过程中指标的速度会更快,因为为指标分配的内存会更少,因此用它工作的时间会更少?如果进行了优化,每次都不改变指标设置,那么指标是否会被重新计算?缓冲区是一个数组,只是方便显示数据。在优化过程中,该指标每次都会被重新计算。 Aleksey Vyazmikin 2015.01.21 23:58 #26 komposter:缓冲区是一个数组,只是在显示数据时很方便。我理解数组,但用于计算指标的数组可以小得多--通常是动态的。例如,在1000条的历史中 -自定义指标 绘制了3条SMA - 5/8/10。在标准情况下,我们将有一个近3000-10-8-5的图形缓冲区。而如果我们用我的方法为了计算SMA(5),我们需要一个大小为4条的数组(抱歉用了这个术语)。为了计算SMA(8),我需要一个 大小为7条的数组(请原谅我的术语)。为了计算SMA(10),我们需要一个由9根 柱子组成的数组(抱歉用了这个术语)。和一个1000条的图表数组,结果是你需要1000+4+7+9,因为数组会直接覆盖它们。我哪里错了? Алексей Тарабанов 2015.01.22 00:00 #27 -Aleks-:谢谢大家提供的信息。我想澄清一下,如果在一个有5个图形缓冲区的指标中,不使用图形缓冲区,而是使用普通数组--通过图形缓冲区输出数据,就像我建议的那样,在优化过程中指标的速度会更快,因为为指标分配的内存会更少,因此用它工作的时间会更少?如果进行了优化,每次都不改变指标设置,那么指标是否会被重新计算? 更重要的是要明白,当你再次调用该指标时,它不会被重新加载到内存段(覆盖)。与之相比,其他一切都不算什么。 Andrey Khatimlianskii 2015.01.22 04:57 #28 -Aleks-:我理解数组,但用于计算指标的数组可以小得多--通常是动态的。例如,在1000条的历史中 -自定义指标 绘制了3条SMA - 5/8/10。在标准情况下,我们将有一个近3000-10-8-5的图形缓冲区。而如果我们用我的方法为了计算SMA(5),我们需要一个大小为4条的数组(抱歉用了这个术语)。为了计算SMA(8),我需要一个 大小为7条的数组(请原谅我的术语)。为了计算SMA(10),我们需要一个由9根 柱子组成的数组(抱歉用了这个术语)。和一个1000条的图表数组,结果是你需要1000+4+7+9,因为数组会直接覆盖它们。我哪里错了?如果你需要在一个条上的值,你真的不需要一个缓冲区。指标也不是;)如果你需要在每个条形上都有一个指标值,那么通常更经济的做法是计算所有数据,然后只额外计算新条形。 而且,并不是所有的算法都像SMA那样简单,它们根本不可能 "为5个柱子 "计算。至少看一看 "之 "字形。最让我困惑的是,你没有尝试在实践中应用这些答案。似乎没有实际的任务,只有理论上的窍门。 那我就不明白为什么我参加了。 Andrey Khatimlianskii 2015.01.22 04:58 #29 顺便说一下,MT4可以很好地应对只计算部分历史数据的情况,并且不消耗整个缓冲区的内存,如果循环经过最后1000个条形(即使有50000个条形 "在窗口")。然而,我在MT5中遇到了这个问题 - 它为所有50000个条形图分配内存,即使只计算最后100个条形图。 Aleksey Vyazmikin 2015.01.22 07:52 #30 komposter:如果你需要在一个条上的值,你真的不需要一个缓冲区。指示器也没有;)为什么是一个酒吧?我只是说,为了计算一个指标的价值,你很少需要知道它在整个时间历史中的所有指标。这就是为什么我写道,缓冲区(数组)将只用于计算,而3个MA的计算结果将被存储在一个图形缓冲区 中。关于Zig-zag--这是我现在头疼的问题--它需要一些答案,但我要单独开一个主题。康帕斯。最让我困惑的是,你没有尝试在实践中应用这些答案。感觉好像没有实际的任务,只有理论上的猜测。那我就不明白我为什么要参加了。问题是,我自己不是一个程序员--我的调查将帮助我起草需求说明。现在我正在开发一个指标,它将是EA引擎的一个组成部分--它有大量的缓冲区,所以我在考虑如何加快EA的速度,不是通过将指标整合到代码中,而是通过其他方法。而且我还希望有人有兴趣在实践中尝试这样的算法--比较操作的速度 ...康帕斯。顺便说一下,MT4完全可以只计算历史的一部分,不会占用整个缓冲区的内存,如果循环经过最后1000个柱子(即使在 "窗口 "中有50000个)。然而,我在MT5中遇到了这个问题--它为所有50000个条形图分配了内存,即使我只计算最后100个条形图。这是5的悲哀,难道开发商不解释一下这其中的神圣含义吗? 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
那么,必要指标的大杂烩会比单独使用指标工作得更快--关于报价的信息会被要求得更少?
不是必须的。确保计算结果不重复。如果两个指标的初步计算结果相同,应合并为一个。你不应该只是把所有的指标粘贴到一个。
在要求报价方面没有任何问题。它们不需要被要求,它们自己就会出现。
试着用一个时间延迟来重新计算指标。
当在 "OHLSnaM1 "上测试时,几乎没有差别,也许在 "所有ticks "上测试会更快。
我对iCustom工作方式的印象(如果在过去两个月中没有任何改变的话)
当你 从iCustom中调用该指标 时
一个可能的历史的所有缓冲区和存储在缓存中的结果将被计算,缓存将被绑定到参数和指标名称上
如果你下次调用相同的指标和相同的参数,用于第二个索引阵列--结果将从缓存中返回(+对新的历史数据的修正)。
如果你调用同一个指标,但只改变一个参数--对所有缓冲区可能的历史进行全面计算,并保存另一个缓冲区,但与新的参数绑定,将被执行。
你可以指定应该从专家顾问那里下载多少历史记录,如果你在指标中设置这样一个参数,但在这个调用中,你应该始终传递相同的数字--历史记录的大小。
(它将影响iCustom第一次调用的速度)。
如果可能的话,你可以尝试在指标中或通过指标参数删除不必要的缓冲区的计算,如在历史尺寸的例子中
(减少缓存大小 - 提高计算速度)
谢谢大家提供的信息。
我想澄清一下,如果在一个有5个图形缓冲区的指标中,不使用图形缓冲区,而是使用普通数组--通过图形缓冲区输出数据,就像我建议的那样,在优化过程中指标的速度会更快,因为为指标分配的内存会更少,因此用它工作的时间会更少?
如果进行了优化,每次都不改变指标设置,那么指标是否会被重新计算?
谢谢大家提供的信息。
我想澄清一下,如果在一个有5个图形缓冲区的指标中,不使用图形缓冲区,而是使用普通数组--通过图形缓冲区输出数据,就像我建议的那样,在优化过程中指标的速度会更快,因为为指标分配的内存会更少,因此用它工作的时间会更少?
如果进行了优化,每次都不改变指标设置,那么指标是否会被重新计算?
缓冲区是一个数组,只是方便显示数据。
在优化过程中,该指标每次都会被重新计算。
缓冲区是一个数组,只是在显示数据时很方便。
我理解数组,但用于计算指标的数组可以小得多--通常是动态的。
例如,在1000条的历史中 -自定义指标 绘制了3条SMA - 5/8/10。
在标准情况下,我们将有一个近3000-10-8-5的图形缓冲区。
而如果我们用我的方法
为了计算SMA(5),我们需要一个大小为4条的数组(抱歉用了这个术语)。
为了计算SMA(8),我需要一个 大小为7条的数组(请原谅我的术语)。
为了计算SMA(10),我们需要一个由9根 柱子组成的数组(抱歉用了这个术语)。
和一个1000条的图表数组,结果是你需要1000+4+7+9,因为数组会直接覆盖它们。
我哪里错了?
谢谢大家提供的信息。
我想澄清一下,如果在一个有5个图形缓冲区的指标中,不使用图形缓冲区,而是使用普通数组--通过图形缓冲区输出数据,就像我建议的那样,在优化过程中指标的速度会更快,因为为指标分配的内存会更少,因此用它工作的时间会更少?
如果进行了优化,每次都不改变指标设置,那么指标是否会被重新计算?
我理解数组,但用于计算指标的数组可以小得多--通常是动态的。
例如,在1000条的历史中 -自定义指标 绘制了3条SMA - 5/8/10。
在标准情况下,我们将有一个近3000-10-8-5的图形缓冲区。
而如果我们用我的方法
为了计算SMA(5),我们需要一个大小为4条的数组(抱歉用了这个术语)。
为了计算SMA(8),我需要一个 大小为7条的数组(请原谅我的术语)。
为了计算SMA(10),我们需要一个由9根 柱子组成的数组(抱歉用了这个术语)。
和一个1000条的图表数组,结果是你需要1000+4+7+9,因为数组会直接覆盖它们。
我哪里错了?
如果你需要在一个条上的值,你真的不需要一个缓冲区。指标也不是;)
如果你需要在每个条形上都有一个指标值,那么通常更经济的做法是计算所有数据,然后只额外计算新条形。
而且,并不是所有的算法都像SMA那样简单,它们根本不可能 "为5个柱子 "计算。至少看一看 "之 "字形。
最让我困惑的是,你没有尝试在实践中应用这些答案。似乎没有实际的任务,只有理论上的窍门。
那我就不明白为什么我参加了。
顺便说一下,MT4可以很好地应对只计算部分历史数据的情况,并且不消耗整个缓冲区的内存,如果循环经过最后1000个条形(即使有50000个条形 "在窗口")。
然而,我在MT5中遇到了这个问题 - 它为所有50000个条形图分配内存,即使只计算最后100个条形图。
如果你需要在一个条上的值,你真的不需要一个缓冲区。指示器也没有;)
为什么是一个酒吧?我只是说,为了计算一个指标的价值,你很少需要知道它在整个时间历史中的所有指标。这就是为什么我写道,缓冲区(数组)将只用于计算,而3个MA的计算结果将被存储在一个图形缓冲区 中。
关于Zig-zag--这是我现在头疼的问题--它需要一些答案,但我要单独开一个主题。
最让我困惑的是,你没有尝试在实践中应用这些答案。感觉好像没有实际的任务,只有理论上的猜测。
那我就不明白我为什么要参加了。
问题是,我自己不是一个程序员--我的调查将帮助我起草需求说明。现在我正在开发一个指标,它将是EA引擎的一个组成部分--它有大量的缓冲区,所以我在考虑如何加快EA的速度,不是通过将指标整合到代码中,而是通过其他方法。
而且我还希望有人有兴趣在实践中尝试这样的算法--比较操作的速度 ...
顺便说一下,MT4完全可以只计算历史的一部分,不会占用整个缓冲区的内存,如果循环经过最后1000个柱子(即使在 "窗口 "中有50000个)。
然而,我在MT5中遇到了这个问题--它为所有50000个条形图分配了内存,即使我只计算最后100个条形图。
这是5的悲哀,难道开发商不解释一下这其中的神圣含义吗?