Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 320

 
Mihail Marchukajtes:

<Графики>

Я бы сократил даты оптимизации в шесть раз, чтоб оптимизатор видел только кончик всех этих графиков, и оптимизировать с датой переворота в параметрах как я выше написал.

А потом для проверки самых лучших найденных результатов уже запускать тест на нескольких месяцах данных, чисто визуально оценить.

 
Mihail Marchukajtes:

Дело в том что речь сейчас пойдёт не о НС, а о Секвенте, вот посмотрите какие по ней эквити с разными входными значениями на одном и том же периоде работы. Это я не оптимизировал, просто руками перебирал.

5-5

6-6

7-7

А вот этот случай куда интересней с параметром 4-8, период тотже. Причём работа со стоплосом в 300 пипсов.

Это с первого января и по сей день. Признаюсь последний скрин подобрал оптимизатором, ну так там в оптимизаторе всего 49 проходов. То есть по сути нужно научится правильно выбирать нужные параметры не из безразмерного множества, а из конечного множества, да ещё с таким маленьким количеством вариантов. Так что..........


А почему ты не используешь RNN Решетова, а классификатор? у него там интересное логическое ядро, и бота по дефолту можно заставить зарабатывать

сейчас есть такая задача, подать на вход НС осциллятор и наклон регрессии по заданному кол-ву баров. В теории, осцилляторы работают только во флэте а в тренде льют. Если добавить нормированные значения наклона регрессии, то сетка будет учитывать наклон тренда. Здесь я пока не придумал, брать значения в градусах или пунктах, пока что в пунктах, и от скольки до скольки нормировать :)

double CalcRegression(double &PricesArray[])
     {
      double Summ_x=0.0;
      double Summ_y=0.0;
      double Summ_xy=0.0;
      double Summ_x_2=0.0;
      int jcount;
      for(int xcount=1; xcount<=глубина_анализа && !IsStopped(); xcount++)
        {
         jcount=глубина_анализа-xcount;
         Summ_x+=xcount;
         Summ_y+=PricesArray[jcount];
         Summ_xy+=xcount*PricesArray[jcount];
         Summ_x_2+=MathPow(xcount,2);
        }

      double bcoef=(глубина_анализа*Summ_xy-Summ_x*Summ_y)/(глубина_анализа*Summ_x_2-MathPow(Summ_x,2));  
      return(bcoef);
     }

А это сам нейрон RNN, на вход подается только 3 значения осциллятора, что, само собой, не очень-то правильно

double RNN(double p1,double p2,double p3)
  {
//--- вероятности для правил из базы знаний экспертной системы
   double y0 = x0; // Вероятность правила №0 в процентах
   double y1 = x1; // Вероятность правила №1 в процентах
   double y2 = x2; // Вероятность правила №2 в процентах
   double y3 = x3; // Вероятность правила №3 в процентах
   double y4 = x4; // Вероятность правила №4 в процентах
   double y5 = x5; // Вероятность правила №5 в процентах
   double y6 = x6; // Вероятность правила №6 в процентах
   double y7 = x7; // Вероятность правила №7 в процентах

//--- база знаний, состоящая из набора взаимоисключающих правил
   double probability=
                      (1.0 - p1) * (1.0 - p2) * (1.0 - p3) * y0 + // Правило №0
                      (1.0 - p1) * (1.0 - p2) * p3 * y1 +         // Правило №1
                      (1.0 - p1) * p2 * (1.0 - p3) * y2 +         // Правило №2
                      (1.0 - p1) * p2 * p3 * y3 +                 // Правило №3
                      p1 * (1.0 - p2) * (1.0 - p3) * y4 +         // Правило №4
                      p1 * (1.0 - p2) * p3 * y5 +                 // Правило №5
                      p1 * p2 * (1.0 - p3) * y6 +                 // Правило №6
                      p1 * p2 * p3 * y7;                          // Правило №7

//--- конвертируем проценты в вероятности 
   probability=probability/100.0;

//--- возвращаем результат в виде вероятности
   return(probability);
  }
 
Maxim Dmitrievsky:


А почему ты не используешь RNN Решетова, а классификатор? у него там интересное логическое ядро, и бота по дефолту можно заставить зарабатывать

сейчас есть такая задача, подать на вход НС осциллятор и наклон регрессии по заданному кол-ву баров. В теории, осцилляторы работают только во флэте а в тренде льют. Если добавить нормированные значения наклона регрессии, то сетка будет учитывать наклон тренда. Здесь я пока не придумал, брать значения в градусах или пунктах, пока что в пунктах, и от скольки до скольки нормировать :)

А это сам нейрон RNN, на вход подается только 3 значения осциллятора, что, само собой, не очень-то правильно


Спасибо за подсказку, Сегодня обязательно попробую его на своих данных.

Подскажи пожалуйста откуда качнуть его, что то нахрапом не нашёл. Спасибо!

 
Mihail Marchukajtes:


Спасибо за подсказку, Сегодня обязательно попробую его на своих данных.

Подскажи пожалуйста откуда качнуть его, что то нахрапом не нашёл. Спасибо!

Там RNN и RNN3 и его неопубликованная статья на MQL5, а зря. RNN лучше работает в оптимизаторе чем RNN3.
Файлы:
RNN_MT5.zip  223 kb
 
Maxim Dmitrievsky:

А это сам нейрон RNN, на вход подается только 3 значения осциллятора, что, само собой, не очень-то правильно

Интересный код, спасибо. И за статью тоже.


RNN(double p1,double p2,double p3)

Все значения параметров p1, p2, p3 должны быть от 0 до 1. Если в один из этих параметров передавать значение B из регрессии, то его нормировать обязательно в этот-же интервал [0;1].


Вообще, эта стратегия основана на теории что высокое значение RSI означает что цена счас пойдёт вниз. Для точности прогноза - взято целых три значения RSI, и по каким-то правилам теории вероятности из трёх параметров получается одна оценка.
Значит если вы вместо третьего RSI подадите свой собственный сигнал, то высокое значение этого сигнала должно означать что цена счас пойдёт вниз. Иначе сломаете стратегию.

 
Dr. Trader:

Интересный код, спасибо. И за статью тоже.

 Если в один из этих параметров передавать значение B из регрессии, то его нормировать обязательно в этот-же интервал [0;1].


да, верно. Только нужно еще перевернуть значения регрессии, если мы хотим что бы он покупал на растущем рынке а продавал на падающем, потому что он покупает если вероятность <0.5 на выходе нейрона, при этом рси должен стремиться к нолю а регрессия то при <0.5 тоже будет падать, а надо что бы росла >0.5
 
Dr. Trader:

Вообще, эта стратегия основана на теории что высокое значение RSI означает что цена счас пойдёт вниз. Для точности прогноза - взято целых три значения RSI, и по каким-то правилам теории вероятности из трёх параметров получается одна оценка.
Значит если вы вместо третьего RSI подадите свой собственный сигнал, то высокое значение этого сигнала должно означать что цена счас пойдёт вниз. Иначе сломаете стратегию.


Да, именно, выше как раз написал об этом :)

Сетку по дефолту, оптимизированную на м5 поставил в мониторинг https://www.mql5.com/ru/signals/297732

потом еще поэкспериментирую с разными входами для нейрона

Торговые сигналы для MetaTrader 5: NEUROSHELL test
Торговые сигналы для MetaTrader 5: NEUROSHELL test
  • Maxim Dmitrievsky
  • www.mql5.com
Торговый Сигнал NEUROSHELL test для MetaTrader 5: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
 

https://www.mql5.com/ru/code/127

только там в коде ошибка какая-то по-моему, индикатор неправильно нормируется

Наклон линейной регрессии
Наклон линейной регрессии
  • голосов: 24
  • 2010.07.05
  • Vladimir
  • www.mql5.com
Наклон линейной регрессии, нормализованный к SMA
 
Maxim Dmitrievsky:
Там RNN и RNN3 и его неопубликованная статья на MQL5, а зря. RNN лучше работает в оптимизаторе чем RNN3.


Спасибо!!! Жаль конечно что дял пятёрке, но всё равно, попробую со своими данными покрутить....

 
Mihail Marchukajtes:


Спасибо!!! Жаль конечно что дял пятёрке, но всё равно, попробую со своими данными покрутить....


на 5-ке удобно тем, что форвард тесты можно делать, как раз самое оно для НС, а для 4-ки то же самое в кодбазе по-моему было, если поискать

https://www.mql5.com/ru/code/10616

RNN_MT4
RNN_MT4
  • голосов: 2
  • 2012.02.20
  • Yury Reshetov
  • www.mql5.com
Советник со встроенной экспертной системой
Причина обращения: