Обсуждение статьи "Пишем глубокую нейронную сеть с нуля на языке MQL" - страница 5

 
Параметры глубокой сети в виде внешних переменных слишком негибки.
 

Я изменил входной параметр "bodyPer". Вместо того чтобы загружать просто относительную длину тела, я вычисляю это значение: bodyPer=0,5+((close-open)/p100)/2;

Таким образом, помимо относительной длины, переменная также фиксирует направление свечи. Это освобождает слот для 4-й переменной, я полагаю.

 

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

Тут передаются данные ещё не сформировавшейся свечи. Ведь в реале на открытие свечи все параметры будут одинаковые. Все будут =  rates[0].open

 
Vasily Pototsky #:

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

Тут передаются данные ещё не сформировавшейся свечи. Ведь в реале на открытие свечи все параметры будут одинаковые. Все будут =  rates[0].open

Неверно!

int copied=CopyRates(_Symbol,0,1,5,rates);

Здесь копирование происходит не с нулевого бара, а с первого, поэтому здесь:

CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

будут значения прошлого бара...

А вот копировать 5 баров, думаю, совсем необязательно, достаточно будет скопировать 1 прошлый бар так:

int copied=CopyRates(_Symbol,0,1,1,rates);
 

Привет, Энди, вы проделали отличную работу!!!

Я анализирую твой код, чтобы адаптировать его к своей стратегии, и пока могу сказать, что твой DNN просто великолепен! Спасибо, что поделились.

У меня только один вопрос: я не понимаю, как можно использовать "yValues[2]>0.6" в любой ситуации. После нескольких попыток с разными активами ни одна сделка не была закрыта из-за этого условия. Правильно ли это?

Спасибо!

Best,
Alexandre

В этом форуме, пожалуйста, комментируйте на португальском языке. Используйте инструмент автоматического перевода или комментируйте на одном из форумов на другом языке.

 
Странное поведение при любом изменении переменной trend, результаты обучения всегда разные, почему?

В коде логическая ошибка!

   double trend=0; // также при trend=100 результаты много лучше и больше количество точек оптимизаций!? 
   if(uod>0)
     {
      highPer=high-close;
      lowPer=open-low;
      bodyPer=close-open;
      trend=1;

     }
   else
     {
      highPer=high-open;
      lowPer=close-low;
      bodyPer=open-close;
      trend=-1; // стоял ноль!
     }
 
Nikolai Kalinin #:
Странное поведение при любом изменении переменной trend, результаты обучения всегда разные, почему?

В коде логическая ошибка!

Специфика функции активации. 

Чем больше слоёв, тем больше затухание - значения будут ближе к 0. 

Смещение немного исправляет эту проблему. 

Поэтому, когда порог установлен в 0.6, то большинство возможных сетов откидываются. А если вы на вход подаёте какое-то огромное число или несколько больших чисел, то и при прямом проходе до конца нейросети дойдёт больше возможных значений. 

А чем больше значений дойдёт или пересечёт границу порога - тем больше позиций, либо больше возможностей подогнать (запомнить путь) график цены под нейронку.
 
Ivan Butko #:

Специфика функции активации. 

Чем больше слоёв, тем больше затухание - значения будут ближе к 0. 

Смещение немного исправляет эту проблему. 

Поэтому, когда порог установлен в 0.6, то большинство возможных сетов откидываются. А если вы на вход подаёте какое-то огромное число или несколько больших чисел, то и при прямом проходе до конца нейросети дойдёт больше возможных значений. 

А чем больше значений дойдёт или пересечёт границу порога - тем больше позиций, либо больше возможностей подогнать (запомнить путь) график цены под нейронку.

Так или иначе, результаты обучения всегда очень непостоянны, при любых типах оптимизации, что вызывает определённые сомнения в применимости для реальной торговли - всегда будут существовать лучшие параметры весов в пересортировке комбинаций. Чем объяснить эту особенность работы этой НС?  

 
Nikolai Kalinin #:

Так или иначе, результаты обучения всегда очень непостоянны, при любых типах оптимизации, что вызывает определённые сомнения в применимости для реальной торговли - всегда будут существовать лучшие параметры весов в пересортировке комбинаций. Чем объяснить эту особенность работы этой НС?  

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

Более того, ценообразование - это нестационарный процесс. Каждый раз новые данные, а если разделить график на паттерны, то на истории они будут стремиться к отработке 50 на 50. 

НС - это к стационарным системам, повторяющимся. 

А на форексе и тд нужны более продвинутые, интеллектуальные системы. Что-то вроде нескольких НС, как-то связанных между собой, каким-то волшебным образом адаптирующихся к изменению статистики паттернов и тд. 

НС сама по себе - это запоминание пути цены, либо усреднение результатов, если количество новых данных больше, чем возможных комбинаций чисел, полученных при перемножении (или проще говоря - простейших архитектур НС с двумя-тремя входами). 

В ней интересно копаться, строить архитектуры, прибавлять нейроны и слои. Но, она совершенно бестолковая, не лучше пересечения машек. 
 
Ivan Butko #:

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

Более того, ценообразование - это нестационарный процесс. Каждый раз новые данные, а если разделить график на паттерны, то на истории они будут стремиться к отработке 50 на 50. 

НС - это к стационарным системам, повторяющимся. 

А на форексе и тд нужны более продвинутые, интеллектуальные системы. Что-то вроде нескольких НС, как-то связанных между собой, каким-то волшебным образом адаптирующихся к изменению статистики паттернов и тд. 

НС сама по себе - это запоминание пути цены, либо усреднение результатов, если количество новых данных больше, чем возможных комбинаций чисел, полученных при перемножении (или проще говоря - простейших архитектур НС с двумя-тремя входами). 

В ней интересно копаться, строить архитектуры, прибавлять нейроны и слои. Но, она совершенно бестолковая, не лучше пересечения машек. 

Иван, Благодарю за разъяснения. Любая статистика имеет свойство повторятся. В принципе если используется интегральный показатель при оптимизации (обучении) НС, то видно по точкам как и когда наступает переход от не знания к знанию - как лучше ей торговать. О поисках значимой переменной отдельный разговор. Вам удалось решить проблему с масштабированием входов более 4х?