Поиск набора индикаторов для подачи на входы в нейросеть. Дискуссия. Инструмент оценки результатов. - страница 10

 
marketeer писал(а) >>
... Подгонка подразумевает подстраивание под тестовый набор, а здесь уже готовая система только проверяется на нем...
Подстраивание под тестовый набор, или сравнение с тестовым набором - не вижу разници. ИМХО
 
rip >>:

На аттракторах работает великолепно :) На картинках не пробовал. Думаю вопрос в структуре ряда. Я его предварительно не обрабатывал.

Если найду, скину. Там, правда, делфи...

 
TheXpert >>:

Баловался, но в совсем другой области применения. Кстати, нелинейный PCA заставить заработать у меня так и не получилось. А линейный, имхо, слабоват.


В расширенное пространство по теореме Мерсера попробуйте ваши данные загнать и решить ту же самую задачу, по идее то же самое, что и обсуждаемая тут тема ассоциации в нейросети.

 
joo >>:
Подстраивание под тестовый набор, или сравнение с тестовым набором - не вижу разници. ИМХО

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

 
TheXpert >>:

Если найду, скину. Там, правда, делфи...

Буду признателен. Думаю вопрос был в предобработке. Я ее не делал, так как только проверял работу сети.

 
поставил Deductor Academic (http://www.basegroup.ru/download/deductor/ ), разумеется, в академических целях . Делает корреляционный и факторный анализ, рисует карты Кохонена. Умеет еще много чего... разбираюсь как и что.
 
iliarr >>:

Приветствую всех участников и посетителей форума.


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

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


У меня есть самописный (на java) персептрон с произвольным количеством слоев и нейронов в каждом слое обучаю его генетическим алгоритмом из библиотеки JGAP (http://jgap.sourceforge.net/).

В первом слое количество нейронов равно количеству входов.Во втором слое - произвольно, в 3-м слое - 1 нейрон. Нейросеть выдает торговые сигналы ( Выход нейросети >0.5 - покупка, Выход нейросети<-0,5 - продажа ). сигналы отрабатывает самописный торговый тестер, который по сигналу нейросети разворачивает позицию ( или входит в рынок, если открытых позиций нет). Целевая функция генетического алгоритма - итоговая прибыль. Подобный подход, как мне кажется, позволяет минимизировать все возможные ошибки и максимально приблизить обучение к реальной торговле. Обученную сеть экспортирую в советника MQL4 и проверяю работу на тестере стратегий MT4. Входы для нейросети формирую в индикаторе МТ4 и выгружаю в файл.Индикатор и советник формирует программа и записывает в файлы ( так меньше путаницы и меньше ошибок).

по моим наблюдениям, 4-х слойные сети не дают больше прибыли (обычно меньше) чем 3-х слойные, но дольше обучаются.
я обучал сеть 8-10-1 4 дня на Core2 Quadro 2.3. 10 параллельных потоков с различными начальными популяциями соревнуются между собой "у кого больше прибыль". за 4 дня прошло около 4000 поколений при 200 хромосомах в популяции. Максимальная прибыль была поучена в первые 2000 поколений, дальше, прибыль не увеличивалась. Наибольший прирост прибыли был в первые 100 поколений.

Я посмотрел результаты этой сети в тестере стратегий MT4. Обнаружилось, что сеть почти никогда не достигает порога +-0,5 и торговый сигнал не срабатывает. Причину я не понял т.к. правильность экспорта в MQL4 я проверял ( при одинаковых значениях входов в программе на java и на MQL4, сеть выдает одинаковые значения. может,надо было подать весь входящий поток, а не несколько произвольных значений ). Снизил порог до 0,4 и, вроде, заработало... Дальше, обнаружил, что советник не может в 1 заход развернуть позицию... у меня эксперт срабатывает по закрытию бара и до следующего бара цена успевает уйти. но это тоже не столь важно... На периоде обучения (я учу на с 1-08-09 по 1-10-09) прибыль в MT4 была меньше чем в моем тестере, на проверочном периоде в МТ4 ( с 1-10-09 по 1-11-09), сеть была прибыльной. Я посмотрел в какие моменты происходят убыточные входы и у меня сложилось впечатление что входящие в нейросеть данные несут в себе недостаточно информации...

На вход нейросети подавал: (k=100)

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

Я стал искать на форуме и нашел (автора поста из которого я взял идею, к сожалению, не запомнил ):

учил в 10 потоков, 200 поколений, размер популяции 200 за период с 1-08-09 по 1-10-09 (результаты выдает мой тестер на java):
сеть 9-10-1 : прибыль 10521
сеть 9-20-1 : прибыль 10434
сеть 9-30-1 : прибыль 10361
сеть 9-50-1 : прибыль 10059
результат хороший, но с предыдущем вариантов, вроде, лучше было... надо будет поставить с пердыдущими входами (результаты прошлых обучений я не сохранил)

добавочные множители нужны для приведения значений в диапазон от -1 до +1


Прочитав написанное, задумался о возможной ошибке в экспорте обученной нейросети в советник.Надо будет еще потестировать...

P.S. Сейчас пишу рекуррентную нейросеть произвольной структуры (как я понимаю, рекуррентная нейросеть учитывает не только значение, но и угол наклона).


Среди таких блестящих теоретиков нейросетей я наверно покажусь серой вороной. Но кому то надо готовить гамбургеры, а кому то их есть. Поэтому рискну дать заинтересованый совет. Вы могли бы использовать для обучения нейросети два индикатора Force Index.mq4( период 3.53), DeMarker.mq4( период 3.53) и связать изменения в этих индикаторах с обычным течением времени - время это будет третий индикатор. Индикаторы простые и предсказывают изменения рынка со 100% надёжностью. В Force Index введите уровень 0.0, а в DeMarker уровни 0.1 и 0.9. Понятно, что в коде этих индикаторов надо изменить размерность периодов из int в double.

 
Avelox >>:

Среди таких блестящих теоретиков нейросетей я наверно покажусь серой вороной. Но кому то надо готовить гамбургеры, а кому то их есть. Поэтому рискну дать заинтересованый совет. Вы могли бы использовать для обучения нейросети два индикатора Force Index.mq4( период 3.53), DeMarker.mq4( период 3.53) и связать изменения в этих индикаторах с обычным течением времени - время это будет третий индикатор. Индикаторы простые и предсказывают изменения рынка со 100% надёжностью. В Force Index введите уровень 0.0, а в DeMarker уровни 0.1 и 0.9. Понятно, что в коде этих индикаторов надо изменить размерность периодов из int в double.

столько времени уже прошло... генетический алгоритм я свой написал, сделал рекуррентную сеть прямого распространения с обратной связью из любых последующих слоев в любые предыдущие... а вот экспорт новой нейрости в mql4 не сделал... руки все не доходят... если сделаю, буду иметь в виду ваши индикаторы. :)

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