Добрый день.
У меня есть 3 слойная нейросеть, 5 нейронов в каждом слое, на выходе 2 нейрона - структура 5-5-2;
Обучаю по зигзагу и по индикатору RSI: когда по ZigZag вершина, даю нейросети на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 10 (SELL); Когда по ZigZag впадина, даю на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 01 (BUY).
Однако, сеть так никогда не обучится, так как данные в обучающей выборке для сигнала BUY и данные для сигнала SELL должны отличаться. Поэтому поставил условие, подавать 5 последних значений RSI в том случае, если все 5 больше 60 (для SELL) и меньше 40 (для BUY). Но в этом случае опять проблема: в случае флета все хорошо, но на тренде, если тренд вниз, в обучающей выборке остаются только сигналы на покупку, если тренд вверх, остаются сигналы только на продажу. То есть получается, даже на обучающем периоде советник сливает.
Поэтому встал вопрос, на каких данных и каких образом обучать нейросеть?
вам сюда))
https://www.mql5.com/ru/forum/86386
- www.mql5.com
вам сюда))
https://www.mql5.com/ru/forum/86386
Я конечно прочитаю эти 261 страниц, вдруг найду ответ на свой вопрос.
Но хотелось бы, чтоб помогли с решением здесь.
Я конечно прочитаю эти 261 страниц, вдруг найду ответ на свой вопрос.
Но хотелось бы, чтоб помогли с решением здесь.
Как вариант - ограничение времени работы, которое также можно оптимизировать. Еще можно доливаться по сигналам и закрывать сетку ордеров по безубытку на откатах.
Добрый день.
У меня есть 3 слойная нейросеть, 5 нейронов в каждом слое, на выходе 2 нейрона - структура 5-5-2;
Обучаю по зигзагу и по индикатору RSI: когда по ZigZag вершина, даю нейросети на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 10 (SELL); Когда по ZigZag впадина, даю на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 01 (BUY).
Однако, сеть так никогда не обучится, так как данные в обучающей выборке для сигнала BUY и данные для сигнала SELL должны отличаться. Поэтому поставил условие, подавать 5 последних значений RSI в том случае, если все 5 больше 60 (для SELL) и меньше 40 (для BUY) (здесь без учета нормализации, в коде нормализация входных сигналов есть). Но в этом случае опять проблема: в случае флета все хорошо, но на тренде, если тренд вниз, в обучающей выборке остаются только сигналы на покупку, если тренд вверх, остаются сигналы только на продажу. То есть получается, даже на обучающем периоде советник сливает.
Поэтому встал вопрос, на каких данных и каких образом обучать нейросеть?
Такой подход не сработает. В такого рода данных очень много "шума", который нейросеть пытается выучить, из-за того, что его больше чем возможных полезных данных. Нейросети нужны "чистые" данные.
Попробуйте, для начала, использовать кластеризацию...
Такой подход не сработает. В такого рода данных очень много "шума", который нейросеть пытается выучить, из-за того, что его больше чем возможных полезных данных. Нейросети нужны "чистые" данные.
Попробуйте, для начала, использовать кластеризацию...
Добрый день.
У меня есть 3 слойная нейросеть, 5 нейронов в каждом слое, на выходе 2 нейрона - структура 5-5-2;
Обучаю по зигзагу и по индикатору RSI: когда по ZigZag вершина, даю нейросети на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 10 (SELL); Когда по ZigZag впадина, даю на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 01 (BUY).
Однако, сеть так никогда не обучится, так как данные в обучающей выборке для сигнала BUY и данные для сигнала SELL должны отличаться. Поэтому поставил условие, подавать 5 последних значений RSI в том случае, если все 5 больше 60 (для SELL) и меньше 40 (для BUY) (здесь без учета нормализации, в коде нормализация входных сигналов есть). Но в этом случае опять проблема: в случае флета все хорошо, но на тренде, если тренд вниз, в обучающей выборке остаются только сигналы на покупку, если тренд вверх, остаются сигналы только на продажу. То есть получается, даже на обучающем периоде советник сливает.
Поэтому встал вопрос, на каких данных и каких образом обучать нейросеть?
Мне интересны нейросети, но пока не знаю, как к ним подступиться.
Мои соображения сводятся к тому, что для обучения должна быть заложена скрытая логика закономерности, т.е. поиск каких либо значений индикатора после которых наступает ожидаемое движение.
ЗигЗаг по сути - хранитель истории движения цены - он показывает точки разворота, но сам по себе не может предсказывать движение цены, однако формация истории, возможно, на это способна.
RSI - очень интересный индикатор, не раз убеждался, что рынок (Форекс) его чувствует - очевидно, что значимыми являются уровни 30/70/50 даже 30 и 70 более значимы так как от них как правило происходит отскок, а так же именно их пересекает чаще всего последнии свечи максимума/минимума тренда. Рынок реагирует на RSI - можно ожидать прогнозирование движения цены, но сомнительно что стоит обращать внимание на динамику пробития уровней RSI (если это не 30 или 70), а интересней обратить внимание на то как часто подряд были пробиты уровни 70 и 30 без возврата к противоположным и какое расстояние между этими уровнями в пунктах (при флэте расстояние сужается).
В итоге, нейросеть должна работать с разными видами индикаторов и отдельно учитывать их показатели не взаимоисключая, а обобщая. Требуется учитывать, что логически показывает индикатор.
И, важно находить закономерность влияния входной точки (теоретически - открытие позиции) и целевой (тейк профит) - такая классификация позволит, думаю, ожидать тренд или флэт и в зависимости от этих ожиданий работать с разными группами паттернов (трендовых и флэтовых) либо игнорировать входы при тренде или флэте.
Можно по подробнее?
Это как один из возможных вариантов исследования.
Например:
1. Собираете некоторое множество входных данных(записи, в которых, возможно, по вашему мнению, есть некоторые устойчивые паттерны), каждая запись может состоять из нескольких значений индикаторов(не "перерисовывавшихся" на тех барах, которые идут в качестве входа) - это будет как входной вектор, в качестве выходного - некоторые характеристики изменения цены в "будущем" которые связаны с прибылью потенциальной сделки
2. Выполняете кластеризацию методом k-средних, используются только входные векторы, в итоге получаем записи, каждая из которых принадлежит определённому кластеру.
3. Далее надо проанализировать результат каждого кластера(выходные векторы), только брать не все записи, а те, в которых номер кластера отличается от предыдущей записи. Анализ распределений/прибыльности/... Выбрать лучшие кластеры, если они подходят.
4. На новых данных(по отношению к анализируемым) можно проверить устойчивость распределений необходимых кластеров.
5. Если всё окей, то можно использовать в торговле. Можно ещё попробовать каждый используемый кластер дать нейросети, для повышения точности.
Данных надо много(зависит от количества кластеров).
Хорошо помогает статистика в этом деле, подходов довольно много....
Такой подход не сработает. В такого рода данных очень много "шума", который нейросеть пытается выучить, из-за того, что его больше чем возможных полезных данных. Нейросети нужны "чистые" данные.
Попробуйте, для начала, использовать кластеризацию...
Это как один из возможных вариантов исследования.
Например:
1. Собираете некоторое множество входных данных(записи, в которых, возможно, по вашему мнению, есть некоторые устойчивые паттерны), каждая запись может состоять из нескольких значений индикаторов(не "перерисовывавшихся" на тех барах, которые идут в качестве входа) - это будет как входной вектор, в качестве выходного - некоторые характеристики изменения цены в "будущем" которые связаны с прибылью потенциальной сделки
2. Выполняете кластеризацию методом k-средних, используются только входные векторы, в итоге получаем записи, каждая из которых принадлежит определённому кластеру.
3. Далее надо проанализировать результат каждого кластера(выходные векторы), только брать не все записи, а те, в которых номер кластера отличается от предыдущей записи. Анализ распределений/прибыльности/... Выбрать лучшие кластеры, если они подходят.
4. На новых данных(по отношению к анализируемым) можно проверить устойчивость распределений необходимых кластеров.
5. Если всё окей, то можно использовать в торговле. Можно ещё попробовать каждый используемый кластер дать нейросети, для повышения точности.
Данных надо много(зависит от количества кластеров).
Хорошо помогает статистика в этом деле, подходов довольно много....
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
У меня есть 3 слойная нейросеть, 5 нейронов в каждом слое, на выходе 2 нейрона - структура 5-5-2;
Обучаю по зигзагу и по индикатору RSI: когда по ZigZag вершина, даю нейросети на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 10 (SELL); Когда по ZigZag впадина, даю на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 01 (BUY).
Однако, сеть так никогда не обучится, так как данные в обучающей выборке для сигнала BUY и данные для сигнала SELL должны отличаться. Поэтому поставил условие, подавать 5 последних значений RSI в том случае, если все 5 больше 60 (для SELL) и меньше 40 (для BUY) (здесь без учета нормализации, в коде нормализация входных сигналов есть). Но в этом случае опять проблема: в случае флета все хорошо, но на тренде, если тренд вниз, в обучающей выборке остаются только сигналы на покупку, если тренд вверх, остаются сигналы только на продажу. То есть получается, даже на обучающем периоде советник сливает.
Поэтому встал вопрос, на каких данных и каких образом обучать нейросеть?