文章 "在算法交易中 Kohonen 神经网络的实际应用。 第 I 部分 工具"

 

新文章 在算法交易中 Kohonen 神经网络的实际应用。 第 I 部分 工具已发布:

本文依据之前发表文献中所介绍的思路,开发在 MetaTrader 5 中运用 Kohonen 映像。 改进并强化的类提供了解决应用程序任务的工具。

在继承的源代码中,未使用输入数据常规化。 不过,在输入矢量的不同分量(特征)有不同数值范围的情况下,它会非常重要。 这是 EA 的优化结果,并汇集不同指标数据的情况。 至于优化结果,我们可以看到,有数十万的总利润其数值较小,例如锋锐比率的分数,或恢复因子的一位数值。

您不应该使用这种不同规模的数据来教育 Kohonen 网络,因为网络实际上只考虑较大的分量而忽略较小的分量。 您可以在下面的图像中看到这一点,此图利用我们在本文中逐步深入研究的程序获得,该程序附加在文章末尾。 该程序允许生成随机输入矢量,其中三个分量分别定义在 [0, 1000],[0,1] 和 [-1, +1] 范围内。 特殊输入 UseNormalization 允许启用/禁用常规化。

我们来看看 Kohonen 网络的最终结构,它处在与矢量三维相关的三个平面上。 首先,网络学习结果未经常规化。

Kohonen 网络学习结果未经输入常规化

Kohonen 网络学习结果未经输入常规化

现在,同例经过常规化。

Kohonen 网络输入常规化的学习结果

Kohonen 网络输入常规化的学习结果

作者:Stanislav Korotky

 
今后,我们将使用 CSOMDisplay 来完成选择专家最佳参数的任务,并使用 CSOM 来进行预测。

不幸的是,我已经完全忘记了这个主题。阅读链接上的文章也没有任何理解。


假设有三个输入参数需要优化。Kohonen 做了聚类并进行了可视化。找到最优参数有何便利之处?

我完全不懂预测。如果可能的话,也请给我一个简要的想法。

 

今后,我希望能看到这样一个实际例子。


我们在智能交易系统中引入一些额外的输入参数。并评估其对其他参数的依赖性。

 

除了制作相关表和其他东西之外,我对在外汇中使用聚类的实际部分更感兴趣。另外,我还不了解地图在新数据上的稳定性问题,估计泛化能力的方法是什么,以及它们的再训练程度如何。

至少在理论上要了解如何有效地利用这一点。我唯一想到的是将一个时间序列 分成几个 "状态"。

 
fxsaber:

假设有三个输入参数已经优化。Kohonen 进行了聚类和可视化。找到最优参数有什么方便之处?

我完全不懂预测。如果可能的话,请简要介绍一下您的想法。

通常情况下,优化会提供大量可选方案,但却无法对其稳定性做出估计。第二篇文章试图借助Kohonen 地图,部分从视觉上、部分从算法上解决这些问题。这篇文章已被送去验证。

 
fxsaber:

我们在 Expert Advisor 中引入了一些额外的输入参数。并评估其对其他参数的依赖性。

Kohonen 允许我们以地图的形式直观地实现这一点。如果我们讨论的是单个数字,那么这适用于其他方法。

 
Maxim Dmitrievsky:

除了制作相关表和其他东西之外,我对在外汇中使用聚类的实际部分更感兴趣。另外,我还不了解地图在新数据上的稳定性问题,估计泛化能力的方法是什么,以及它们的再训练程度如何。

至少在理论上要了解如何有效地利用这一点。我唯一想到的是将时间序列分成几个 "状态"。

也许第二部分会给出一些答案。如果数据分布规律 得以保留,就应该具有稳定性。为了控制普遍性,建议使用验证抽样来选择地图大小和/或训练持续时间。

第二部分将介绍一些使用案例。

 
Stanislav Korotky:

也许第二部分会提供一些答案。如果数据分布规律得以保留,就应该具有稳定性。为了控制普遍性,建议使用验证抽样来选择地图大小和/或训练持续时间。

第二部分将提供一些使用案例。

是的,对不起,我没注意到已经有了通过验证抽样来停止的方法。那我们就等着看例子吧,有意思:)

 
澄清/增补:到目前为止,移植到 MQL5 的 ALGLIB 版本已经提供了聚类分层聚类 - 参见文件MQL5/Include/Math/Alglib/dataanalysis.mqh 中的ClusterizerRunAHC