Обсуждение статьи "Возможности Мастера MQL5, которые вам нужно знать (Часть 04): Линейный дискриминантный анализ"

 

Опубликована статья Возможности Мастера MQL5, которые вам нужно знать (Часть 04): Линейный дискриминантный анализ:

Современный трейдер почти всегда находится в поиске новых идей. Он постоянно пробует новые стратегии, модифицирует их и отбрасывает те, что не оправдали себя. В этой серии статей я постараюсь доказать, что Мастер MQL5 является настоящей опорой трейдера в его поисках.

LDA очень похож на PCA. Иногда даже возникает вопрос, имеет ли смысл выполнять PCA с последующей регуляризацией LDA (чтобы избежать подгонки кривой). Это обширная тема, которая, возможно, будет рассмотрена в другой статье.

Решающее различие между методами уменьшения двумерности заключается в том, что PCA пытается найти оси с максимальной дисперсией для всего набора данных с предположением, что чем более разбросаны данные, тем больше их разделимость, тогда как LDA пытается найти оси, которые фактически разделяют данные на основе классификации.

lda

На рисунке выше ясно видно, что PCA даст нам LD2, тогда как LDA даст нам LD1. Это делает главное различие (и, следовательно, преимущество LDA) между PCA и LDA абсолютно очевидным: только потому, что функция имеет высокую дисперсию, не означает, что она будет полезна для прогнозирования классов.

Автор: Stephen Njuki

 

Привет, Стефан,

Отличная статья и отличный контент! Я с удовольствием изучал и ваши предыдущие статьи.


В настоящее время я конвертирую свой советник mq4 в mq5 и хотел бы включить этот контент в конвертацию, чтобы улучшить сигналы, стоплоссы и управление капиталом. Поскольку вы не включили советник, возможно ли разместить один, который можно было бы использовать в качестве учебного примера для изучения применения методов DA?


С нетерпением жду ваших следующих статей.

С уважением, CapeCoddah

 

Отличный вариант!!!


Я добавил его в 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));