В статье описан способ быстрой оптимизиции методом роя частиц, представлена его реализация на MQL, готовая к применению как в однопоточном режиме внутри эксперта, так и в параллельном многопоточном режиме в качестве надстройки, выполняющейся на локальных агентах тестера.
关于交易、自动交易系统和交易策略测试的论坛
讨论文章 "群体优化算法:微型人工免疫系统 (Micro-AIS) 算法"
fxsaber, 2024.01.21 01:38 AM
IWO 的最佳坐标与返回值不匹配。
把它拉进来
据我所知,自定义优化只在一个内核的终端图上完成,而我在测试器中讨论的是多线程优化(对于我在文章 中描述的粒子群算法,对于大多数其他算法,通过类比也应该是可行的,因为通常有一个将任务划分为代理组的原则)。但是,测试器只停留在最原始的例子上(我给出了上面的测试),这就把这个想法扼杀在了萌芽状态。
我已经组装并编译了该项目。从技术上讲,一切都运行得很好,只是从 Stanislav 处获取 的 PSO 算法出现了错误,所以没有记录在日志中,我将在下面给出。
在查看源代码时,有一个关于 FF 运行次数的问题,默认值是 1000。这是非常低的,结果不会比随机的好多少。内部测试人员进行了 19968 次 FF 运行,因此我将源代码设置为 20000 次。
我在工作人员中做了 5 次优化,结果显示是最好的。在文章中,使用了 10 次优化,显示的是平均结果。
接下来,我使用了 FF Megacity,这是最接近实际离散交易策略问题的离散函数(Hilly 和 Forest 比较平滑,更适合评估执行 MO 任务的能力)。
测试仪中的设置:
5 次运行后的优化结果:
自定义运行 #1 的结果:
定制发射 2 的结果:
自定义运行 #3 的结果:
100%收敛的结果以黄色标出。
我们可以看到,在如此粗的步长下,即使是 RND 算法也能收敛。但是,只有多次运行(这在文章中已经提到)并考虑平均结果,才能使结果更加可靠。我们可以看到,在突出显示的算法中,并非所有算法都能重复收敛。
结论
1. 算法只有在多次测试中才能充分展示自己(在单次测试中,结果可能是偶然的)。
2. 只有在变量多、步骤小的情况下,算法的能力才能得到体现,否则结果往往是随机的(以 RND 为例,它在一次测试中就显示了 100% 的收敛性)。
3.运行次数要多,约为 10000 次(例如,人口数量为 50 时,历时次数为 10000/50=200,运行 1000 次,历时次数仅为 20),FF 运行次数越少,结果越趋于随机,原因显而易见。
工作人员用光标高亮显示的结果中,第一个结果为 0.666,第四个结果的最大值为 0.97。在结果列表中,最佳结果显示为 0.97。
据我所知,自定义优化只在一个内核的终端图上完成,而我在测试器中讨论的是多线程优化(对于我在文章 中描述的粒子群算法,对于大多数其他算法,通过类比也应该是可行的,因为通常有一个将任务划分为代理组的原则)。但是,测试器只支持最原始的示例(我给出了上面的测试),这就把这个想法扼杀在了萌芽状态。
除了从斯坦尼斯拉夫(Stanislav)那里获得的 PSO 算法之外,其他一切都运行得很好。
最好能弄清这个问题。
这些是错误
此类错误
从此处 获取TypeToBytes.mqh。