Кормить надо тем что легче поддаётся прогнозу :)
Данные: 11,12,35,14,25,37,41,86,48,21,26,13,57 ...
Тогда для 3 входов имеем таблицу обучения
входы/ответ
11,12,35/14
12,35,14/25
35,14,25/37
14,25,37/41
25,37,41/86
37,41,86/48
41,86,48/21
86,48,21/26
48,21,26/13
21,26,13/57
Ну а теперь прогноз
26,13,57/ ???
не, два выхода: открыть (держать) позицию / закрыть. Посмотри советника, все станет понятно.
И обучение сети не по back propagation, а генетикой. Так что задача выглядит несколько иначе :)
ИМХО, слишком разные задачи для одной НС - и вход и выход...
Для начала лучше упростить и разделить - чем "проще" задача, тем лучше можно обучить НС.
Очень интересная тема, только совершенно не раскрыта.
может у кого-то найдутся ответы на этот вопрос
что подавать на вход НС?
которыми он готов поделиться?
MaStak немного неправ. Так кормить - отравить сетку можно.
Система питания для НС - дело реально очень сложное.
Есть одно мудрое золотое правило: если знаешь чем кормит НС и требовать от неё на выходе, то НС уже ненужна, так как ты и так знаешь чему обучать.
Я как то поднимал на форуме этот вопрос: Как правильно сформировать входные значения для НС. https://forum.mql4.com/ru/13787
и понял одон - должно быть ка можно меньше противоречивых данных. Ведь сеть это классификатор (сумматор, аппрокисмато, статист кому как нравится), но по сути она подстраивается под то большинство значений, которые есть. А это значит, что если у вас будут противоречивые данные, то сеть выберет для себя тот выход, который отвечает статистическому большинству входов.
Поэтому Самое Первое Правило для составления входов - постаратся МАКСИМАЛЬНО УМЕНЬШИТЬ противоречивость данных.
То есть чтоб двум одинаковым входным векторам не отвечали противоположные значения выходов.
Мастак предложил такую схему - но она очень плохая. Ведь вы собираетесь работать с двумя знаками + и - (вверх/вниз покупать/продавать). А значит, что вам также надо входные вектора задавать (преобразовывать) в аналогичное пространство. Чтоб вектора были направлены как в + так и в -. Тогда сетке легче будет их аппроксимировать к выходам и ошибки считать.
Для таких вариантов я бы порекомендовал в качестве входного вектора задавать данные из только одного закрытого бара. (например разницу 20 МА)
Dima_S прав - чем проще задача, те легче найти непротиворечивые пары.
Чтоб быстрее понять что происходит у вас в сети на входе и выходе я бы вам порекомендовал создать мониторинг процесса обчучения. То есть сделать обозначающие значки (объекты стрелочки) над барами и их степень соответствия (можно в цветовой градации) требуемым выходам.
Если вы уже немного ладите с MQL5. то можете воспользоваться моим мониторингом (объяснять ничего не будут, в коде всё сами поймёте, там просто).
А ещё постарайтесь в своём воображении визуализировать будущую работу сети. Что она принимает на вход и что должна выдать на выходе. Это тоже поможет правильно задать пары вход/выход.
Например я предложил брать разницу МА. Ну допустим. А вот теперь посмотрим на график валюты и построим эти разницы МА. Видите? Противоречие есть между входами и выходами? Если есть, то думаем дальше. как эти противоречия уменьшить. Может внести дополнительные индикаторы или анализ баров сделать и менять знаким для выхода. Вобщем думать надо но не забывайте золотое правило....
Я чувствую себя пойманным в том таймфрейме, в котором работает советник. Не придумаю, как из него выбраться. Суть в том, что для обучения используются данные из истории. Можно, например, посчитать iStochastiс[n] (я знаю, что это неправильное написание!). Так как советник работает на каждом новом баре, то iStochastiс[n] в реальной торговле выглядел совершенно иначе (не было еще всех данных по бару n). В итоге сеть воспитуется на неправильных данных. По этой же причине не получается работать со старшими таймфреймами. Запрос iMA[0] старшего таймфрейма в начале нового бара и в начале следующего бара дает совершенно разные результаты. А история даст третий.
Уважаемый, попробуйте воспользоваться для выгрузки данных советником на открытие бара.
Пусть он сохранит файл. Этот файл можно потом сравнить с тем, что записывает скрипт.
В реальной торговле также можно добавить контроль на открытие бара.
Есть одно мудрое золотое правило: если знаешь чем кормит НС и требовать от неё на выходе, то НС уже ненужна, так как ты и так знаешь чему обучать.
задача обучения НС как раз состоит в поиске зависимости между входами и выходами - функции НС
если функция проста и поддаеться осмыслению человеком - правило работает
иначе - именно нейросеть лучше подходит для поиска этой функции
и понял одон - должно быть ка можно меньше противоречивых данных. Ведь сеть это классификатор (сумматор, аппрокисмато, статист кому как нравится), но по сути она подстраивается под то большинство значений, которые есть. А это значит, что если у вас будут противоречивые данные, то сеть выберет для себя тот выход, который отвечает статистическому большинству входов.
Поэтому Самое Первое Правило для составления входов - постаратся МАКСИМАЛЬНО УМЕНЬШИТЬ противоречивость данных.
То есть чтоб двум одинаковым входным векторам не отвечали противоположные значения выходов.
...
Например я предложил брать разницу МА. Ну допустим. А вот теперь посмотрим на график валюты и построим эти разницы МА. Видите? Противоречие есть между входами и выходами? Если есть, то думаем дальше. как эти противоречия уменьшить. Может внести дополнительные индикаторы или анализ баров сделать и менять знаким для выхода. Вобщем думать надо но не забывайте золотое правило....
дополнительные индикаторы - вот эта идея мне нравится
а если бороться с противоречивостью данных путем увеличения входного вектора?
то есть
в обучающей авыборке на входе MA2, MA4, MA8, MA12 - имеем 2 противоречивых выхода
тогда увеличиваем количество входов добавив например Momentum5 - и надеемся что противоречивость уходит
и все же что именно подавать в сеть?
Ребята, вы реально не понимаете возможностей нейросетей.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здрассте всем,
я тут последнее время "бодаюсь" с НС (я уже об этом как-то писал). Написал, в общем, engine на java, который воспитывает НС, а также советника, который общается с НС и воплощает в жизнь ее команды купи/продай. Этот же советник сохраяет данные для тренировки. Следующий этап, собственно, подборка вводных величин. Но тут проблема:
Может, у кого-то есть опыт, чем кормить НС...
Для справки код советника: