在Metatrader 5中你的符号和你的数据源 - 页 4

 
zaskok:

有一些启发式的方法最适合于优化交易系统。这正是它们的开发目的,与通用的GA不同。你认为是否有可能用你自己用MQL5编写的启发式方法取代测试器中的唯一启发式方法?如果我们要在输入数据的定制方面大幅改进测试器,那么定制优化方法(定制优化标准早就有了)以使其具有最佳性能是合理的。

如果你想要与GA不同的东西,那么请准确地指明这些方法的名称,并给出有直接证据的优势的论据,谢谢。

但最重要的问题是--究竟是什么让你对GA不满意?它没有为你找到解决方案的区域?即使用10次连续摸索的方法,你也没有得到具有所需特征的集群的想法?

你当然会这样做。非常迅速和有效。比通常的蛮力快几十倍或几十万倍。

你用其他方法(例如蒙特卡洛或退火)是否能更快或更好地得到结果?不是一个事实。

但这里的事实是,我们的遗传算法 自己的 运行评估标准 给了每个程序员实现他或她自己的选择变化的自由。这种机制本质上是创造我们自己的启发式方法的关键。

除此之外,我们还有用于输入参数的MQL5控制/覆盖函数,这使得我们可以通过将非数字/非线性参数虚拟成特殊的线性数字计数器来实现对这些参数的枚举。例如,取30个非数字参数,包括来自文件的数据,将其转换为64位的计数器[i],并将其扭曲为一个工作参数。由程序员来决定里面有什么。而你自己的评价标准的功能也有助于创造你自己的启发式方法。

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
zaskok:

有一些启发式的方法 最适合于优化交易系统。这正是它们的开发目的,与通用的GA不同。你认为是否有可能用你自己用MQL5编写的启发式方法取代测试器中的唯一启发式方法?如果我们要在输入数据的定制方面大幅改进测试器,那么定制优化方法(定制优化标准早就有了)以使其具有最佳性能是合理的。

我运用这种方法来寻找极值。例如,对函数最大值的搜索是这样的。

而这就是搜索本身。

 

这是在MT5测试器中,包括3D可视化。

 
Renat:
我们决定开放接口,为MT5编写我们自己的数据源。

你将可以自由地编写你自己的数据源,包括rltime数据源。这将允许任何数据被插入,包括详细的历史和Level2的滚珠。

默认情况下,我们将提供一些内部数据文件,包括离线的数据文件。虚拟人物也将在测试器中提供。

当然,所有这些都是免费的。

哈里路亚!问了多少年,我们终于来了......。甚至流下了喜悦和感动的泪水:)

就我个人而言,我总是因为MT5缺乏历史记录而受到阻碍。我不得不在Wealth-Lab等第三方程序中进行研究,并使用MT5来编写交易机器人。现在将不需要第三方程序了。

 
forexman77:

当有太多的变量需要优化时,很有可能会出现与历史相适应的情况。

随着变量的增加,优化时间也会成倍增长,这是无法回避的。

有一个办法,一个超级强大的计算机,有房子那么大)

我对这个问题很熟悉,而且我已经想出了解决这个问题的算法。 我不明白的是,他们又强行为我决定,遗传学比蛮力更好......我不这么认为,而且还有一些原因和正面的例子,例如Profinity正是通过尝试变体而创造出来的,现在它的意义已经成为过去。但尽管如此。

同样,也不清楚为什么这么大的远程代理市场要被切断,他们是不是想怎么忙就怎么忙....。并非如此,现有的80%(我认为)是闲置的,然后他们切断了他们潜在的工作前线......

 
Renat:

这是在MT5测试器中,包括3D可视化。

这很好,我不知道这个东西,只是它对我不起作用,3D中的开关位置是不活动的,代码中应该有一些特殊的东西?
 
IvanIvanov:
很好,我不知道这个东西,但它对我不起作用,在3D中切换位置是不活跃的,是不是代码中有什么特别的东西?
MetaTrader 5策略测试仪3D可视化
 

О !好样的,管理员们!

我理解,对历史数据的调试最终会出现?

 
Renat:

如果你想要与GA不同的东西,那么请准确地说出这些方法的名称,并给出有直接证据的好处的论据,谢谢。

但最重要的问题是,你对GA的问题到底是什么?它没有为你找到解决方案的区域?即使用10次连续摸索的方法,你也没有得到具有所需特征的集群的想法?

你当然会这样做。非常迅速和有效。比通常的蛮力快几十倍或几十万倍。

你用其他方法(例如蒙特卡洛或退火)是否能更快或更好地得到结果?并非如此。

只为你带来一个证明是相当有问题的,因为你不太正确地回应公众对你在某些事情上的短视的论证。而这个由你自己发起的主题,不幸地成为这一论断的最终证明。当然,不是别人多年来一直在呼吁和要求这样做,而你据说已经被击退了....。但过去的事情就是过去的事情。然而,证明你错了似乎有些毫无意义,因为进行评估的是人的因素,而不是逻辑。

这就是为什么我将给出支持启发式优化方法的逻辑论据,这些方法与GA有些不同,不是为你而是为论坛用户。下面是我前面引用的文章的一些节选+我的强调,你应该特别注意。

所有的随机优化方法都有一个共同的缺点--它们可能会停在某个局部极值上,而忽略了最佳的一个。为了避免这种情况,有必要最大限度地扩大样本区域和迭代次数。但这损害了计算速度。因此,我们必须始终寻找黄金分割点。


然而,如果我们仔细想想, 如果没有收敛到全局极值,我们就不需要全局极值本身。也就是说,如果在极值周围没有条件性的均匀减少,那么这个全球极值很可能是随机的,对我们没有什么用处,因为它是不充分的,会破坏我们的计算。这就是为什么研究极值周围的参数是如此重要。如果有收敛性,就意味着有一个系统,这个策略可以进一步研究

正如我在上面已经提到的,研究极值周围的区域很重要,因此我决定收敛到最后,并在最后一次迭代中测试所有相邻的策略。我没有玩弄梯度,并使收敛性静态为初始样本的百分比。这意味着我们在一开始就决定在每次迭代后将多维矩阵削减1%或20%的程度。另外,考虑到时间限制,我们马上决定在每个迭代中从矩阵中抽取多少个策略进行测试。因此,矩阵的大小对我们来说根本不重要,我们清楚地知道我们将迭代多少次和以何种体积进行迭代! 这就是随机方法的魅力。

在第一次迭代之后,当最开始的空间已经被探索过,我们必须以某种方式减少下一个样本的探索区域。但是我们对这个空间几乎一无所知,在我看来,切断未知区域 是相当鲁莽的。一般来说,该算法旨在寻找全局最大值,而我们对所有的局部和全局最大值都感兴趣

我们需要知道该策略能够获得利润的所有参数。也许一个策略在某些参数下能产生很好的利润,但风险更大,而在其他参数下,它产生的利润略小,但结果是更稳定,风险更小,如果我们按照我们的算法,我们可能会忽视它

我们有意义地将最差的策略从研究空间中移除。因此,在接下来的迭代中,我们用更有利可图的策略来探索那些领域,而不会浪费宝贵的测试时间来探索我们不需要的领域。最终,我们的研究区域收敛于空间的所有最大值。

假设我们已经探索了这个空间,对有多少个高点有了大致的了解。那么,这给了我们什么?到目前为止,几乎没有什么...
我们需要调查这些最大值,并找出它们是随机性质还是系统性的。为此,优化器测试仪允许我们选择最佳策略,并进一步调查其周围的领域。 调查那些我们在优化过程中遗漏的策略。我们现在几乎知道了关于空间极值的所有情况!"。获得的数据可以进一步调查聚类、过度优化等问题。但这是另一个故事了!

这不是关于这篇文章,而是关于搜索和优化TC的一般原则,这一点几乎没有人讨论。因此,GA并不是我们想要在TS优化的武器库中拥有的东西。

但这里的事实是,我们的遗传算法 中专有的运行评估标准使每个程序员可以自由地实现自己的选择变化。这种机制本质上是创造我们自己的启发式方法的关键。

除此之外,我们还有用于输入参数的MQL5控制/覆盖函数,这使得我们可以通过将非数字/非线性参数虚拟成特殊的线性数字计数器来实现对这些参数的枚举。例如,取30个非数字参数,包括来自文件的数据,将其转换为64位的计数器[i],并将其扭曲为一个工作参数。由程序员来决定里面有什么。而你自己的评价标准的功能也有助于创造你自己的启发式方法。

我从来没有听说过 "管理/重新定义输入参数的MQL5函数"--给我一个链接。
 
event:

我运用这种方法来寻找极值。例如,这就是寻找一个函数的最大值的样子。

谢谢你!你能否提供你的近似函数的公式,以尝试在OnTester中找到其与常规GA的局部极值--供比较。

如果能听到你对该方法的一些建设性意见(描述、来源、优点/缺点),那将是很有意思的。