文章 "可控优化: 模拟退火" - 页 2

 
MetaQuotes Software Corp.:

新文章:受控优化:模拟退火》一文已经发表:

作者: Aleksey ZinovikAleksey Zinovik

我还没有开始使用 mt5,但我猜想(可能会有一些改动和/或有条件的编译)我也可以在 mt4 的策略测试器中使用这个功能。

mt4 的遗传优化有一个小问题,可能也存在于 mt5 中,可能也适用于你的方法。

如果我在 OnInit() 中检查参数集,发现实际参数集不值得检查,我就会从 OnInit() 返回INIT_PARAMETERS_INCORRECT。这样就不会进行优化,从而节省了时间:

  1. mt4 的遗传算法认为这是一次有效的通过
  2. 因此会增加计数器,这样
  3. 遗传算法停止的时间大大提前 (我认为停止的标准是运行次数和目标值的变化)。

你有没有处理过这种情况?从 OnInit()返回尽管没有错误(如:找不到文件......),只是因为参数设置不应该被测试,在这种情况下,不应该增加数量和降低温度

无论如何,感谢您提供这篇有趣的文章!

古利

 
Carl Schreiber:

我还没有开始使用 mt5,但我猜想(可能要做一些改动和/或有条件的编译),我也能在 mt4 的策略测试器中使用这个方法。

mt4 的遗传优化有一个小问题,可能也存在于 mt5 中,而且可能也适用于您的方法。

如果我在 OnInit() 中检查参数集,发现实际参数集不值得检查,我就会从 OnInit() 返回INIT_PARAMETERS_INCORRECT。这样就不会进行优化,从而节省了时间:

  1. mt4 的遗传算法认为这是一次有效的通过
  2. 因此会增加计数器,这样
  3. 遗传算法停止的时间大大提前 (我认为停止的标准是运行次数和目标值的变化)。

你有没有处理过这种情况?从 OnInit()返回,尽管没有出错(如:找不到文件......),只是因为不应该测试参数设置,而在这种情况下,参数设置不应该增加次数和降低温度

无论如何,感谢您提供这篇有趣的文章!

古利

我不检查参数的正确性,也不会在参数不正确时中断 OnInit() 函数。在 OnTesterInit() 函数中,需要使用策略测试器 进行优化的参数值将被禁止优化。在每次新的迭代中,都会从文件中读取参数,而在 OnTester() 函数中,新的参数值会写入文件。这样就可以不使用策略测试器生成的参数值,而是将必要的参数独立输出到 OnInit() 函数中。
对不起,我的英语不好
 
Aleksey Zinovik:
我不会检查参数的正确性,也不会在参数不正确时中断 OnInit() 函数。在 OnTesterInit() 函数中,需要使用策略测试器 进行优化的参数值将被禁止优化。在每次新的迭代中,都会从文件中读取参数,而在 OnTester() 函数中,新的参数值会写入文件。这样就可以不使用策略测试器生成的参数值,而是将必要的参数独立输出到 OnInit() 函数中。
对不起,我的英语不好

我现在明白了 - 谢谢!我只需在下一次迭代的参数设置写入文件之前,检查该设置的合理性,以便下一次运行。这样就可以避免 "我的问题 "了!

感谢您的建议和文章!

 

您好、

您说"'可以通过开发一个通用模块来消除缺点,该模块将包括优化专家参数 的各种算法'"。

您能提供更多关于通用模块的详细信息吗? 还有哪些优化专家参数的算法?

 
nevar:

嗨 、

您说''可以通过开发一个通用模块来消除这些缺点,该模块将包括优化专家参数的各种算法''。

您能提供有关通用模块的更多细节吗? 还有哪些优化专家参数的算法?

这篇文章介绍了如何将新的优化算法连接到策略测试器。同样,在 AnnealingMethod.mqh 类中添加新方法或创建新类,也可以连接其他算法,例如蚂蚁算法(蚁群优化)。我计划测试此类算法并分享结果。