有点惊讶 :)我想我应该分享并提出一个非反问的问题。 - 页 14 1...789101112131415161718192021...25 新评论 hrenfx 2011.03.31 15:46 #131 Renat:优化器并不完全是一个 "线性比例的测试器",它有自己的优化方法,在大规模的重复计算中有效工作。我们现在只是忙于加快质量计算。这里有一个过去结果 的链接, 计算速度更快的新版本已经准备好了。我同意,不完全是一个 "线性比例的测试器"。你做明确的优化,这是一件非常好的事情。然而,我无法想象你如何对一个非常频繁的情况的单变量案例进行优化。优化有两个参数,一个参数(100个值的范围)不涉及指标的调用,第二个参数(5个值的范围)涉及。在这种情况下,你将计算指标值500次,同时搜索500个变体。在这种情况下,你实际上会进行大量的重新计算。这是因为第二个变量的范围只有5,而不是500。这只是最简单的例子。也许你已经想出了一些办法,如何规避优化器的测试器的这种线性扩展性。P.S. 正是这样的例子让你在自己的计算器中获得数量级的速度优势,而不是百分比。但这些计算器并不通用,所以这种比较从一开始就不正确。 hrenfx 2011.03.31 15:51 #132 Academic:好吧--假设有一个没有云计算的优化器,但是是多线程的,并且支持C++和MT4(及其所有子系统),并且比它快100倍,纯靠MT5代码快6倍,是...并不仅用蛮力和GA来 "解决",而且还用大约50种变体来解决。你会用多少钱买下它?你会用1000美元买它吗?为什么这么贵? 你和其他十个人将是唯一的买家。:) 如果优化器是通用的,并且有这样的特点,我会买下它。 hrenfx 2011.03.31 16:06 #133 hrenfx:然而,我无法想象你将如何优化单变量的情况,这是一个非常频繁的情况。我已经可以想象到一些东西(但不完全是)。在运行优化器之前,你应该对要优化的输入参数进行依赖性分析(在上面的例子中,两个变量是完全独立的)。接下来,首先通过自变量从最小的范围到最大的范围进行优化(并不总是正确的,因为它也取决于相同指标的资源强度。有时数100次轻的指标,比5次重的指标要好),缓存结果。很明显,这种优化的实现是非常复杂的(尤其是对于云的情况)。但是,如果实施的话,那么至少绝对所有在MQL5向导中创建的专家顾问将被优化得更快。因为MQL5向导是大量的指标之间的组合(即有大量的输入参数是相互独立的)。另一件事是,这样的活动对盈利的交易没有意义......。 Renat Fatkhullin 2011.03.31 16:35 #134 在巨大的(几百万和几千万)样本上,缓存后的采样结果比直接计算更昂贵。 hrenfx 2011.03.31 18:41 #135 Renat:在巨大的(几百万和几千万)样本上进行后续的结果采样的缓存比直接计算更昂贵。我相信要实现一个完美的通用优化器,使其像我上面描述的那样 "聪明",这几乎是不现实的。当然,还有改进的余地,但在任何情况下都不可能做到完美。巨大的样本(数以千万计),当然,你大大地夸大了。根本不需要缓存这种东西。我想你们都完全理解我的意思。而许多人确实如此。甚至没有人会因此批评你,否则就是程序员对批评家的无知。因为那些足够的人很清楚实施这种事情的难度。让我用同一个例子来解释缓存的概念。如果指标没有被重新绘制,那么在测试器中单次运行结束时,你将有一个完整的指标所有值的缓冲器。你已经有了。而且,如果下一次传递使用相同的指标值(第二个变量没有变化),我们就不必再读它。你可以从已经计算好的缓冲区中取值(你已经有了,不需要缓存,之前运行的内存并没有完全释放)。 --- 2011.03.31 18:58 #136 hrenfx:如果指标没有重绘,那么 这是一个 "如果",它使任何进一步的搜索失效。 hrenfx 2011.03.31 19:21 #137 是的,正是因为不可能写出这么快的通用优化器,所以非通用的数字研磨器在速度方面总是胜出。而这并没有什么好坏之分。 Renat Fatkhullin 2011.03.31 19:32 #138 hrenfx:我相信要实现一个完美的通用优化器,使它像我上面描述的那样 "聪明",这几乎是不现实的。当然,有很多改进的余地,但无论如何不可能做得完美。巨大的样本(数以千万计),当然,你大大地夸大了。根本不需要缓存这样的东西。例如,过去11年的欧元兑美元测试给出了超过5000万个刻度。 这意味着像MA这样简单的单缓冲区指标将不得不存储5000万个状态(5000万*8字节(双)=400MB缓冲区),这太多了。如果使用更复杂或数量更大的东西,事实上缓存将无法装入内存,更不用说多核代理。我们正在研究指标缓存的想法,结果发现,计算下一个指标值(甚至用一种经济的方法)要比建立缓存快得多,而且耗费的资源也少。 Renat Fatkhullin 2011.03.31 19:38 #139 hrenfx: 是的,正是因为不可能写出这么快的通用优化器,所以非通用的数字研磨器在速度方面总是胜出。而这并没有什么好坏之分。他们没有赢得任何东西。他们没有市场环境,没有基础设施,没有指标,没有分析。而这比一次性的周期更重要(甚至没有代表)。 hrenfx 2011.03.31 19:55 #140 Renat:例如,在过去11年里,欧元兑美元的测试给出了超过5000万个点位。我们谈论的是一个优化器,而不是像许多单一的测试器运行。优化器的概念是完全不同的。在那里,以牺牲结果中的小误差为代价实现了显著的速度提升。优化器根本不需要基于ticks的模型。最多,它们是基于开盘价。优化器不是测试器,它完全是另一回事。你的方法是不同的,而且也很有逻辑性。Renat: 他们没有赢得任何东西。他们没有市场环境,没有基础设施,没有指标,没有分析。而这比一次性的循环更重要(甚至没有代表)。他们赢在速度上,因为没有什么能比单独的for循环更快。有时速度正是你所需要的,而计算器在速度上会胜过任何通用测试器(但在其他参数上则不然)。不仅是来自MetaQuotes。我无法证明我的论断,原因如下。我的计算器只是我的EA的一个C++实现,其中所有的操作都专门做成了整数(价格是整数),其中不必要的传递等完全减少到零。那里没有接口,什么都没有。唯一的输出是一个带有优化结果 的文件。也就是说,我可以用C++编写一个带有算法优化的EA,而我的测试人员不会做任何交易检查(例如,检查是否有足够的保证金,等等)。它不会模仿历史,也不会计算指标。在MT5测试器的通用性方面,没有什么通用性。计算器的唯一任务是快速计算,尽可能快地计算。而且它的计数速度比MT4测试器快一百倍,产生的误差<1%。我不明白我在这里想说明什么。很明显,没有检查的for循环和只有整数的for循环总是比通用测试器的计数快。 1...789101112131415161718192021...25 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
优化器并不完全是一个 "线性比例的测试器",它有自己的优化方法,在大规模的重复计算中有效工作。
我们现在只是忙于加快质量计算。这里有一个过去结果 的链接, 计算速度更快的新版本已经准备好了。
我同意,不完全是一个 "线性比例的测试器"。你做明确的优化,这是一件非常好的事情。然而,我无法想象你如何对一个非常频繁的情况的单变量案例进行优化。
优化有两个参数,一个参数(100个值的范围)不涉及指标的调用,第二个参数(5个值的范围)涉及。
在这种情况下,你将计算指标值500次,同时搜索500个变体。在这种情况下,你实际上会进行大量的重新计算。这是因为第二个变量的范围只有5,而不是500。
这只是最简单的例子。也许你已经想出了一些办法,如何规避优化器的测试器的这种线性扩展性。
P.S. 正是这样的例子让你在自己的计算器中获得数量级的速度优势,而不是百分比。但这些计算器并不通用,所以这种比较从一开始就不正确。
好吧--假设有一个没有云计算的优化器,但是是多线程的,并且支持C++和MT4(及其所有子系统),并且比它快100倍,纯靠MT5代码快6倍,是...并不仅用蛮力和GA来 "解决",而且还用大约50种变体来解决。你会用多少钱买下它?你会用1000美元买它吗?为什么这么贵? 你和其他十个人将是唯一的买家。:)
然而,我无法想象你将如何优化单变量的情况,这是一个非常频繁的情况。
我已经可以想象到一些东西(但不完全是)。在运行优化器之前,你应该对要优化的输入参数进行依赖性分析(在上面的例子中,两个变量是完全独立的)。接下来,首先通过自变量从最小的范围到最大的范围进行优化(并不总是正确的,因为它也取决于相同指标的资源强度。有时数100次轻的指标,比5次重的指标要好),缓存结果。
很明显,这种优化的实现是非常复杂的(尤其是对于云的情况)。但是,如果实施的话,那么至少绝对所有在MQL5向导中创建的专家顾问将被优化得更快。因为MQL5向导是大量的指标之间的组合(即有大量的输入参数是相互独立的)。另一件事是,这样的活动对盈利的交易没有意义......。
在巨大的(几百万和几千万)样本上,缓存后的采样结果比直接计算更昂贵。
在巨大的(几百万和几千万)样本上进行后续的结果采样的缓存比直接计算更昂贵。
我相信要实现一个完美的通用优化器,使其像我上面描述的那样 "聪明",这几乎是不现实的。当然,还有改进的余地,但在任何情况下都不可能做到完美。
巨大的样本(数以千万计),当然,你大大地夸大了。根本不需要缓存这种东西。
我想你们都完全理解我的意思。而许多人确实如此。甚至没有人会因此批评你,否则就是程序员对批评家的无知。因为那些足够的人很清楚实施这种事情的难度。
让我用同一个例子来解释缓存的概念。
如果指标没有被重新绘制,那么在测试器中单次运行结束时,你将有一个完整的指标所有值的缓冲器。你已经有了。而且,如果下一次传递使用相同的指标值(第二个变量没有变化),我们就不必再读它。你可以从已经计算好的缓冲区中取值(你已经有了,不需要缓存,之前运行的内存并没有完全释放)。
如果指标没有重绘,那么
我相信要实现一个完美的通用优化器,使它像我上面描述的那样 "聪明",这几乎是不现实的。当然,有很多改进的余地,但无论如何不可能做得完美。
巨大的样本(数以千万计),当然,你大大地夸大了。根本不需要缓存这样的东西。
例如,过去11年的欧元兑美元测试给出了超过5000万个刻度。
这意味着像MA这样简单的单缓冲区指标将不得不存储5000万个状态(5000万*8字节(双)=400MB缓冲区),这太多了。如果使用更复杂或数量更大的东西,事实上缓存将无法装入内存,更不用说多核代理。
我们正在研究指标缓存的想法,结果发现,计算下一个指标值(甚至用一种经济的方法)要比建立缓存快得多,而且耗费的资源也少。
是的,正是因为不可能写出这么快的通用优化器,所以非通用的数字研磨器在速度方面总是胜出。而这并没有什么好坏之分。
他们没有赢得任何东西。
他们没有市场环境,没有基础设施,没有指标,没有分析。而这比一次性的周期更重要(甚至没有代表)。
例如,在过去11年里,欧元兑美元的测试给出了超过5000万个点位。
我们谈论的是一个优化器,而不是像许多单一的测试器运行。优化器的概念是完全不同的。在那里,以牺牲结果中的小误差为代价实现了显著的速度提升。优化器根本不需要基于ticks的模型。最多,它们是基于开盘价。优化器不是测试器,它完全是另一回事。你的方法是不同的,而且也很有逻辑性。
他们没有赢得任何东西。
他们没有市场环境,没有基础设施,没有指标,没有分析。而这比一次性的循环更重要(甚至没有代表)。
他们赢在速度上,因为没有什么能比单独的for循环更快。有时速度正是你所需要的,而计算器在速度上会胜过任何通用测试器(但在其他参数上则不然)。不仅是来自MetaQuotes。
我无法证明我的论断,原因如下。
我的计算器只是我的EA的一个C++实现,其中所有的操作都专门做成了整数(价格是整数),其中不必要的传递等完全减少到零。那里没有接口,什么都没有。唯一的输出是一个带有优化结果 的文件。也就是说,我可以用C++编写一个带有算法优化的EA,而我的测试人员不会做任何交易检查(例如,检查是否有足够的保证金,等等)。它不会模仿历史,也不会计算指标。在MT5测试器的通用性方面,没有什么通用性。计算器的唯一任务是快速计算,尽可能快地计算。而且它的计数速度比MT4测试器快一百倍,产生的误差<1%。我不明白我在这里想说明什么。
很明显,没有检查的for循环和只有整数的for循环总是比通用测试器的计数快。