Индикаторы: Предсказатель на основе самообучающейся нейронной сети - страница 7

 
Mixogen83:

А вот такой вопрос: почему при каждой инициализации индикатора (допустим, даже цвет линии любой меняешь) показания индикатора в корне меняются? Данные-то не менялись никакие абсолютно... Или я не понимаю чего? :-)


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

  1. Попробуйте сгладить входные данные скользящей средней. Хотя мне этот метод не очень нравится из-за вносимой задержки.
  2. Увеличите количество эпох (nep) до 100000 или даже 1мил. Алгоритм, который я использую, в конце концов способен найти выход из локального минимума, но нужно долго ждать. В литературе утверждается что этот алгоритм самый надёжный среди всех методов градиентного спуска (даже лучше чем BFGS, хотя мне этому трудно поверить)
  3. Нужен новый алгоритм обучения, который гарантировал бы схождение к глобальному минимуму. По одному широкому мнению в литературе, методы градиентного спуска не могут быть использованы для обучения сетей на хаотических данных, к которым относятся цены. Нужно использовать генетический алгоритм.

Я сейчас пытаюсь приделать генетический алгоритм к своему коду. Увидим что получится.

 

Огромное спасибо за ответы! Удачи Вам довести хорошее начинание до тех пор, чтобы себе нравилось! :-)

 

Посмотрите на английскую версию этой страницы. Там я поместил то что вам нужно. Данные задаются в строке

// First smooth prices
for(i=0;i<n;i++) x[i]=Open[lb+i]; // меняйте здесь

Простите, не понял, где смотреть. В английской части сайта этого кода нет, а в коде, который здесь, нет таких строк. :-)

 
Mixogen83:

Простите, не понял, где смотреть. В английской части сайта этого кода нет, а в коде, который здесь, нет таких строк. :-)

Не готов код ещё.

 
gpwr:
Mixogen83:

Простите, не понял, где смотреть. В английской части сайта этого кода нет, а в коде, который здесь, нет таких строк. :-)

Не готов код ещё.

Уфф... Не смог я добиться сглаженности... Блин, запал мне этот индикатор, что есть в нем... При определенных настройках получалось что-то вроде пивота: линия выше цены - вниз, линия ниже цены - вверх. Но зигзаги сводят на нет все качество! А если просто усреднять выходные точки, навроде машки?

 

1.40 спрогнозировал +100п

1.41 спрогнозировал +100п 

так же есть пару замечаний, в целом +10

 

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

Origato gozaimasu (^__^) +10

 

Красивые картинки, а кто по ним работает? Каков результат?

 
Mixogen83:
gpwr:
Mixogen83:

Простите, не понял, где смотреть. В английской части сайта этого кода нет, а в коде, который здесь, нет таких строк. :-)

Не готов код ещё.

Уфф... Не смог я добиться сглаженности... Блин, запал мне этот индикатор, что есть в нем... При определенных настройках получалось что-то вроде пивота: линия выше цены - вниз, линия ниже цены - вверх. Но зигзаги сводят на нет все качество! А если просто усреднять выходные точки, навроде машки?


Я добавил сглаженную версию. Чтобы сделать предсказания более устойчивыми в версии без сглаживания, измените входые данные таким образом

extern int numLayers =2; // # of layers including input, hidden & output (4 max)
extern int numInputs =12; // # of inputs
extern int numNeurons1 =1; // # of neurons in the first hidden or output layer
extern int numNeurons2 =0; // # of neurons in the second hidden or output layer
extern int numNeurons3 =0; // # of neurons in the third hidden or output layer

 

Автору. Вот вы говорите, что индикатор самообучающийся. А как долго надо ему на графике работать, чтобы начать хорошо предсказывать?


А то я вот тестирую на разных инструментах 15и минутку и 30и минутку. 15 через правильно направление подсказывает, а 30 вообще никак.

Причина обращения: