遗传算法及其可能的应用 - 页 4 1234567891011...15 新评论 Slava 2020.03.16 19:08 #31 Edgar Akhmadeev: 很久以前我就写过这个问题,当时我在EA中使用框架。我不记得确切的点,但我似乎没有得到所有的框架(和最好的结果)。我将寻找旧的帖子并尝试澄清。 但我清楚地记得,这在我的专家顾问中是可以清楚重现的--只要超调的数量超过一定的数量,并以科学的形式显示出来,我的遗传学就被打破了。重要的是,不仅变量的步数要大,而且变量的数量也要大。 这一切都很有意义。 关于 "大 "遗传学的框架有一个问题。 我们会解决这个问题。 Edgar Akhmadeev 2020.03.16 19:23 #32 Slava: 你说 "完全不能正常工作 "是什么意思? 我们如何才能重现该故障? https://www.mql5.com/ru/forum/321656/page17#comment_13569022 我不再用框架检查,我放弃了。 但是用常规的遗传学,我在最后一次建立时检查了它。下面是没有 "数字溢出 "的结果。 中断后。 2020.03.16 20:50:57.436 Tester genetic optimization finished on pass 646 (of 160164854439975000) 2020.03.16 20:50:57.436 Statistics optimization done in 8 minutes 36 seconds 2020.03.16 20:50:57.436 Statistics shortest pass 0:00:00.002, longest pass 0:00:23.060, average pass 0:00:06.276 有了 "溢出"。 在经历了EA的几次中断后(检查输入变量是否正确),遗传学永远停止了。 中断后。 2020.03.16 20:59:08.235 Tester genetic optimization finished on pass 18 2020.03.16 20:59:08.235 Statistics optimization done in 6 minutes 10 seconds 2020.03.16 20:59:08.235 Statistics shortest pass 0:00:00.003, longest pass 0:00:05.978, average pass 0:00:01.339 没有一个真正的结果。 以Advisors/MAPSARSizeOptimized.ex5为例进行了尝试,它是有效的。很明显,"数字溢出 "和框架问题只在我的EA中再现,但如何找到问题......那里的一切都非常复杂,OnTradeTransaction等等。我还删除了框架。我不能给你看代码,它很庞大,大约一兆字节。而把它切割成一个可复制的例子将需要一个无望的漫长时间。如果我有时间,我将尝试删除OnTradeTransaction,也许还有其他一些技巧。 事实是,如果我们不超过通行证的数量,一切都能正常工作。 帧工作正常(没有超过),直到构建2286(包括)。 Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы 2019.10.16www.mql5.com В настоящий момент тестер стратегий MetaTrader 5 подвергается глубокой переработки командой MQ... Andrey Dik 2020.03.16 20:39 #33 Igor Makanu: ... 到目前为止有一个问题 - GAs可以在一段时间后开始围绕一小群优化参数收敛 - 这在我看来是正常的,所有的GAs都是这样工作的,这是他们使用的一个问题。 ... 收敛到某个极值是任何优化算法的一个完全正常的现象,没有任何建议认为这部分不是/不是全局或局部。 另一个问题是,AO应该有一个允许放大突变百分比的机制(或其他相当于允许放大搜索邻域的逻辑),当开始践踏某些片段时,极值会不会被发现更好--这事先不知道,但肯定需要在其他地方搜索。 例如,设定了一个最大余额的标准,几个或许多点可能在绝对值上与之对应,但只有其中一些是有实际价值的,即在1523次交易中达到了98756423的余额,缩水率为11%,在12次交易中达到了同样的余额,缩水率为95%,两者之间有什么区别? Stanislav Korotky 2020.03.16 20:44 #34 Edgar Akhmadeev: 在经历了专家的几次中断后(检查输入变量是否正确),遗传学已经永远停止了。中断之后。 没有一个真正的结果。 我不记得我是否在论坛上写过这个问题,但这确实是一个问题,而且不清楚为什么在MT中实施。在想法中,如果专家返回错误代码"错误的参数",测试人员有义务生成另一个实例,这样人口就完整了。 Edgar Akhmadeev 2020.03.16 21:14 #35 Stanislav Korotky: 我不记得我是否在论坛上写过这个问题,但这确实是一个问题,而且不清楚为什么在MT中实施。在想法中,如果专家返回错误代码"错误的参数",测试人员有义务生成另一个实例,这样人口就完整了。 如果我为所有不正确的参数组合返回INIT_PARAMETERS_INCORRECT,那么这些参数就太多了,生成将以错误结束。所以,我只在特定的参数出错时返回INIT_PARAMETERS_INCORRECT,如果它超出了范围。如果组合错误(一个参数不应该超过另一个),我就停止传递,返回INIT_SUCCEEDED和Custom = -N。这可能搞砸了遗传学,但我没有看到任何选择。或者说,有一个选项,可以摆脱错误的组合(在特殊情况下--使一个参数成为另一个参数的delta:v1=X,v2=Y+v1),但这是太强的诱变剂。这两个参数将被僵硬地联系在一起,如果你改变了一个,所有的东西都会移位。我已经放弃了这个选项,转而选择了一个假的结果而不是一个错误。 Andrey Dik 2020.03.16 21:19 #36 Edgar Akhmadeev: 如果你对所有错误的参数组合都返回INIT_PARAMETERS_INCORRECT,那么这些参数太多了,生成将以错误结束。所以我只在特定的参数出错时返回INIT_PARAMETERS_INCORRECT,如果它超出了范围。如果组合错误(一个参数不应该超过另一个),我就停止传递,返回INIT_SUCCEEDED和Custom = -N。这可能搞砸了遗传学,但我没有看到任何选择。或者说,有一个选项,可以摆脱错误的组合(在特殊情况下--使一个参数成为另一个参数的delta:v1=X,v2=Y+v1),但这是太强的诱变剂。 这两个参数将被僵硬地联系在一起,改变一个参数就会使所有的东西移位。我已经放弃了这个选项,而选择了一个假的结果而不是一个错误。 一个好的选择是在无效的变体上返回-DBL_MAX而不是错误。 总的来说,我设法实现了外部Ga,同时保留了MT测试器多币种保真度的所有魅力,同时能够使用所有的处理器内核和/或网络代理,包括云代理,同时避免了代理因过早完成通关或Ga人口不足而闲置的情况。 有信息显示,只有tSSSSS....,有计划在常规优化器中实现几种类型的AO,甚至有参数,但这是不准确的。 Igor Makanu 2020.03.16 21:37 #37 Andrey Dik: 一个好的选择是在无效的变体上返回-DBL_MAX而不是错误。 如果你返回一个随机值--对AO来说会更糟吗? Andrey Dik 2020.03.16 21:56 #38 Igor Makanu: 如果你返回一个渲染过的值,对AO来说是不是更糟? 糟糕得多。 如果目标是扰乱AO的头脑,最好的方法是返回一个随机数。 Edgar Akhmadeev 2020.03.16 21:58 #39 Andrey Dik: 一个好的选择是在无效的变体中返回-DBL_MAX,而不是错误。 这太多了,图表的比例太大,以至于你无法看到有用的结果。我返回一个比最坏情况下的Custom略高的值。不过,最主要的是要确定正确的改进方向。 伊戈尔-马卡努。 如果你返回一个渲染过的值--对AO来说会更糟吗? 这有什么意义?最主要的是确定正确的方向,所以你必须向GA表明,他在这里表现出了最差的结果,而不仅仅是一个弱点。 Edgar Akhmadeev 2020.03.16 22:01 #40 Slava: 你说 "完全不起作用 "是什么意思? 我怎样才能重现操作的不正确性? 删除了OnTradeTransaction,没有任何帮助。我将继续思考。 1234567891011...15 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
很久以前我就写过这个问题,当时我在EA中使用框架。我不记得确切的点,但我似乎没有得到所有的框架(和最好的结果)。我将寻找旧的帖子并尝试澄清。
但我清楚地记得,这在我的专家顾问中是可以清楚重现的--只要超调的数量超过一定的数量,并以科学的形式显示出来,我的遗传学就被打破了。重要的是,不仅变量的步数要大,而且变量的数量也要大。
这一切都很有意义。
关于 "大 "遗传学的框架有一个问题。
我们会解决这个问题。
你说 "完全不能正常工作 "是什么意思?
我们如何才能重现该故障?
https://www.mql5.com/ru/forum/321656/page17#comment_13569022
我不再用框架检查,我放弃了。
但是用常规的遗传学,我在最后一次建立时检查了它。下面是没有 "数字溢出 "的结果。
中断后。
有了 "溢出"。
在经历了EA的几次中断后(检查输入变量是否正确),遗传学永远停止了。 中断后。
没有一个真正的结果。
以Advisors/MAPSARSizeOptimized.ex5为例进行了尝试,它是有效的。很明显,"数字溢出 "和框架问题只在我的EA中再现,但如何找到问题......那里的一切都非常复杂,OnTradeTransaction等等。我还删除了框架。我不能给你看代码,它很庞大,大约一兆字节。而把它切割成一个可复制的例子将需要一个无望的漫长时间。如果我有时间,我将尝试删除OnTradeTransaction,也许还有其他一些技巧。
事实是,如果我们不超过通行证的数量,一切都能正常工作。
帧工作正常(没有超过),直到构建2286(包括)。
...
到目前为止有一个问题 - GAs可以在一段时间后开始围绕一小群优化参数收敛 - 这在我看来是正常的,所有的GAs都是这样工作的,这是他们使用的一个问题。
...
收敛到某个极值是任何优化算法的一个完全正常的现象,没有任何建议认为这部分不是/不是全局或局部。
另一个问题是,AO应该有一个允许放大突变百分比的机制(或其他相当于允许放大搜索邻域的逻辑),当开始践踏某些片段时,极值会不会被发现更好--这事先不知道,但肯定需要在其他地方搜索。
例如,设定了一个最大余额的标准,几个或许多点可能在绝对值上与之对应,但只有其中一些是有实际价值的,即在1523次交易中达到了98756423的余额,缩水率为11%,在12次交易中达到了同样的余额,缩水率为95%,两者之间有什么区别?
在经历了专家的几次中断后(检查输入变量是否正确),遗传学已经永远停止了。中断之后。
没有一个真正的结果。
我不记得我是否在论坛上写过这个问题,但这确实是一个问题,而且不清楚为什么在MT中实施。在想法中,如果专家返回错误代码"错误的参数",测试人员有义务生成另一个实例,这样人口就完整了。
我不记得我是否在论坛上写过这个问题,但这确实是一个问题,而且不清楚为什么在MT中实施。在想法中,如果专家返回错误代码"错误的参数",测试人员有义务生成另一个实例,这样人口就完整了。
如果我为所有不正确的参数组合返回INIT_PARAMETERS_INCORRECT,那么这些参数就太多了,生成将以错误结束。所以,我只在特定的参数出错时返回INIT_PARAMETERS_INCORRECT,如果它超出了范围。如果组合错误(一个参数不应该超过另一个),我就停止传递,返回INIT_SUCCEEDED和Custom = -N。这可能搞砸了遗传学,但我没有看到任何选择。或者说,有一个选项,可以摆脱错误的组合(在特殊情况下--使一个参数成为另一个参数的delta:v1=X,v2=Y+v1),但这是太强的诱变剂。这两个参数将被僵硬地联系在一起,如果你改变了一个,所有的东西都会移位。我已经放弃了这个选项,转而选择了一个假的结果而不是一个错误。
如果你对所有错误的参数组合都返回INIT_PARAMETERS_INCORRECT,那么这些参数太多了,生成将以错误结束。所以我只在特定的参数出错时返回INIT_PARAMETERS_INCORRECT,如果它超出了范围。如果组合错误(一个参数不应该超过另一个),我就停止传递,返回INIT_SUCCEEDED和Custom = -N。这可能搞砸了遗传学,但我没有看到任何选择。或者说,有一个选项,可以摆脱错误的组合(在特殊情况下--使一个参数成为另一个参数的delta:v1=X,v2=Y+v1),但这是太强的诱变剂。 这两个参数将被僵硬地联系在一起,改变一个参数就会使所有的东西移位。我已经放弃了这个选项,而选择了一个假的结果而不是一个错误。
一个好的选择是在无效的变体上返回-DBL_MAX而不是错误。
总的来说,我设法实现了外部Ga,同时保留了MT测试器多币种保真度的所有魅力,同时能够使用所有的处理器内核和/或网络代理,包括云代理,同时避免了代理因过早完成通关或Ga人口不足而闲置的情况。
有信息显示,只有tSSSSS....,有计划在常规优化器中实现几种类型的AO,甚至有参数,但这是不准确的。
一个好的选择是在无效的变体上返回-DBL_MAX而不是错误。
如果你返回一个随机值--对AO来说会更糟吗?
如果你返回一个渲染过的值,对AO来说是不是更糟?
糟糕得多。
如果目标是扰乱AO的头脑,最好的方法是返回一个随机数。
一个好的选择是在无效的变体中返回-DBL_MAX,而不是错误。
这太多了,图表的比例太大,以至于你无法看到有用的结果。我返回一个比最坏情况下的Custom略高的值。不过,最主要的是要确定正确的改进方向。
如果你返回一个渲染过的值--对AO来说会更糟吗?
这有什么意义?最主要的是确定正确的方向,所以你必须向GA表明,他在这里表现出了最差的结果,而不仅仅是一个弱点。
你说 "完全不起作用 "是什么意思?
我怎样才能重现操作的不正确性?
删除了OnTradeTransaction,没有任何帮助。我将继续思考。