文章 "您应该知道的 MQL5 向导技术(第 04 部分):线性判别分析"

新文章 您应该知道的 MQL5 向导技术(第 04 部分):线性判别分析已发布:

今天的交易者都是哲学家,几乎总是在寻找新的想法,尝试提炼它们,选择修改或丢弃它们:一个探索性的过程,肯定会花费相当的勤奋程度。 这些系列文章将提出 MQL5 向导应该是交易者在此领域努力的中流砥柱。

LDA 与 PCA 非常相似:事实上,有些人问 PCA 之后再执行 LDA 正则化(避免曲线拟合)是否有意义。 这是一个冗长的话题,也许应该改天写一篇文章。

但对于本文,二维降维方法之间的关键区别在于 PCA 试图找到整个数据集具有最大方差的轴,假设数据越分散,可分离性越大,而 LDA 试图依据分类找到将数据实际分开的轴。

lda

所以从上图中不难看出,PCA 会给我们 LD2,而 LDA 会给我们 LD1。 这导致 PCA 和 LDA 之间的主要差异(因此 LDA 偏好)非常明显:仅仅因为特征具有高方差(离散),并不意味着它在预测类时就会更有用。

作者:Stephen Njuki

你好,斯蒂芬、

好文章,好内容我也很喜欢学习您以前的文章。


我目前正在将我的 mq4 EA 转换为 mq5,并希望在转换过程中加入这些内容,以增强信号、止损和资金管理。 由于您没有加入 EA,是否可以发布一个 EA,作为学习 DA 技术应用的学习范例?


我期待着您的下一篇文章。

干杯,科达角

干得漂亮


我将其添加到 Expert 中,但在编译时得到了这样的信息。


operator[]' - 常量变量不能作为引用传递

1.

for(int v=0;v<__S_VARS;v++)

{

_xy[p].Set(v, Data(Index+p+v+1));

2.

_xy[p].Set(__S_VARS,Data(Index+p,false));


3.

for(int v=0;v<__S_VARS;v++)

{

_z[0].Set(v,Data(Index));

选个有趣的主题,坚持到底,然后发布一些没人能用的代码。很好。魔方突然变得无聊了。
Livio Alves #:

干得漂亮!!!


我把它添加到一个Expert中,编译时收到了这条消息。


'operator[]' - 常量变量不能作为引用传递

1.

for(int v=0;v<__S_VARS;v++)

{

_xy[p].Set(v, Data(Index+p+v+1));

2.

_xy[p].Set(__S_VARS, Data(Index + p, false));


3.

for(int v=0; v<__S_VARS; v++)

{

_z[0].Set(v, Data(Index));


你必须重写该方法。

_xy[p].Set(col, row, double) 是行或列的方法,其中一个参数是通过“[]”运算符输入的。它似乎已被废弃了,我不确定……

当你这样写时,它就能正常工作:

_xy.Set(p,__S_VARS,Data(Index+p,false)); 这样写反而能正常工作。这是 CMatrixDouble 类的 Set() 方法,该方法同时将行和列作为参数。