1) Да возможно вы правы, но эта сеть умеет сама обучаться как принимать решения, те это не обычная классификация без учителя, а значит можно в ней реализовать ту концепцию о которой я давно уже говорил - можно ее учить не стандартной целевой в виде бай-сел-бай или 00011101011, а более абстрактно например тупо поставить условия типа: Сеть! мне пофиг как ты там будешь торговать но я хочу чтоб твой заработок в день составлял не мение 1% просадке 0.5% и она сама будет искать правила , комбинации для решения этой задачи. Если я где то тут не прав и наговорил ахинеи то поправьте меня для моего же блага )
Точно, не подумал об этом, всё правильно. Тогда лучше дать нейронной сети условие на максимизацию sharpe ratio (или recovery factor), и сделать в R что-то вроде простого форекс тестера на реальных котировках для теста модели для оценки эволюции. Но чудо само по себе не произойдёт, проблема переобучения останется, нужно по прежнему делить данные на тренировочную и тестовые выборки, делать кроссвалидации для финальной оценки модели при эволюции. Как работать с sharpe ratio при кроссвалидации я придумать по быстрому не смог, по-моему тут не получится убрать рандомные бары в тестовую выборку, ведь важна будет не точность на каждом баре, а сама непрерывная торговля, со всеми просадками, спредами и комиссиями от каждой новой сделки.
Alexey Burnakov:
Они там вроде пакет для R готовят. Надо взять на заметку.
Пакет уже есть, только не знаю насколько процентов он готов, покачто на гитхабе. Вот более простой пример, продолжение статьи. Учат сеть извлекать корень.
Сделал по примеру классификацию ирисов, код в атачменте (модель не смогла классификацию, я все классы заменил числами для регрессии, и результаты округлил к ближайшим числовым уровням. Наверное это можно было сделать как-то проще). Для тренировки взял всего 50% данных, на валидации успех 95%, вполне хорошо. Судя по графику модель даже сама убрала первый предиктор.
Форекс сложнее ирисов :) , там результат будет гораздо хуже.
Ещё заметил что в 3 и 4 частях статьи используются разные функции для обучения модели. 3 часть для моделирования каких-либо динамических процессов, например модель может наблюдать за форекс графиком, и открывать/закрывать сделки в реальном времени. 4 часть - просто обучить модель на готовых примерах, и спрогнозировать результат
1) Точно, не подумал об этом, всё правильно. Тогда лучше дать нейронной сети условие на максимизацию sharpe ratio (или recovery factor), и сделать в R что-то вроде простого форекс тестера на реальных котировках
2) Ещё заметил что в 3 и 4 частях статьи используются разные функции для обучения модели. 3 часть для моделирования каких-либо динамических процессов, например модель может наблюдать за форекс графиком, и открывать/закрывать сделки в реальном времени. 4 часть - просто обучить модель на готовых примерах, и спрогнозировать результат
1) Абсолютно верно! именно это я и имел ввиду, прибыль/просадка просто для примера , я думал взять фактор восстановления, но и шарп в принципе ничем не хуже
2) Правильно заметили, в 4 статье автор уже создал что то типа пакета при чем по всем стандартам "R" те максимально просто есть модель - есть целевой вектор - через "predict" прогноз - но именно этот подход нам и не подойдет потому что все функции уже скрыты в пакете... Нужно разбираться с исходным кодом и писать все под себя, потому и говорил что помогите разобраться так как тут все гораздо сложнее чем с "готовым пакетом с примерами к нему" Мне кажется что даже функций из 3 части будет не достаточно для того что нам надо. Так что было бы просто сказочно если бы мы все включились в это дело
1) Абсолютно верно! именно это я и имел ввиду, прибыль/просадка просто для примера , я думал взять фактор восстановления, но и шарп в принципе ничем не хуже
2) Правильно заметили, в 4 статье автор уже создал что то типа пакета при чем по всем стандартам "R" те максимально просто есть модель - есть целевой вектор - через "predict" прогноз - но именно этот подход нам и не подойдет потому что все функции уже скрыты в пакете... Нужно разбираться с исходным кодом и писать все под себя, потому и говорил что помогите разобраться так как тут все гораздо сложнее чем с "готовым пакетом с примерами к нему" Мне кажется что даже функций из 3 части будет не достаточно для того что нам надо. Так что было бы просто сказочно если бы мы все включились в это дело
А кто вас научит кроме вас самих? Вот вы возьмитесь за исходный код . Поизучайте. А заодно про дифференцируемость функции. В сеть надо подать какую-то гладкую функцию. И нам расскажете ) а уж мы насоветуем.
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Обычно библиотека может или очень много но средненько, или что-то одно и качественно. Caret это первый случай, с ней легко проверить в деле десятки моделей и сравнить результаты, но сложно что-то улучшить под свою задачу. Я упёрся в огромные сложности при отборе предикторов по моим правилам - caret умеет simulated annealing для их перебора (и генетику), но не умеет просто взять мою фитнесс функцию для оценки. Нужно создавать новую модель для caret с тренировочной, валидационной и фитнесс функциями; но caret при этом всё равно будет контролировать тренировочные и тестовые выборки данных по своим правилам, со своими кроссвалидациями. Мне проще взять пакет GA или GenSA для перебора предикторов, и написать всего одну фитнесс-функцию в которой будет и создание модели, и кросс-валидация по нужным мне правилам.
Нейронка не хуже леса, у меня с ней результаты таки в плюсе, или в худшем случае просто без слива депозита. В силу разных алгоритмов, нейронка будет предпочитать другие предикторы чем лес, но все правила отбора предикторов полностью те же что и для леса.
Перенести нейронку в mt5 советник это дело на пару минут (сохранить веса из R в csv, прочитать их в советнике). Перенести лес в mt5 будет намного сложнее, поэтому я предпочитаю нейронку.
Ещё немного поэкспериментировал с RNeat, пришёл к выводу что с ней нельзя работать также как с обычными нейронными сетями.
1) в отличие от обычных моделей, обучение RNeat не использует исходные данные. Модель как-бы рандомно генерируется, улучшается, и только в конце тестируется на исходных данных. Обычно модели используют исходные данные, строят на них свою логику, а дальше на валидационной выборке можно узнать о том правильна ли логика модели, или она просто заучила исходные примеры. В отличие от остальных, RNeat вообще не способна запоминать исходные данные ибо она не знает о них, всё что модель знает это требуемые результаты и насколько она близка к ним.
2) кроссвалидация не поможет улучшить результаты фронттеста. Мы вроде все согласны что можно обучить обычную модель, провести пару кроссвалидаций, и как-то обработать ошибки на всех выборках для итоговой фитнесс оценки модели. Поскольку RNeat не знает исходных данных, для неё не важно в какой выборке находятся данные - тренировочной или тестовой, она будет подстраивать свою логику на нужный результат в любом случае. Теоретически она будет "обучаться" (точнее мутировать :) ) на всех выборках которые используются в фитнесс функции. Всё что можно - обучить модель до нужной точности, и надеяться что она не переобучилась, довольно рискованный подход для форекса. Кроссвалидацию можно использовать только после обучения, как финальную оценку возможного результата во фронттесте, и ни в коем случае не использовать эту валидационную выборку внутри фитнесс функции.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
1) Да возможно вы правы, но эта сеть умеет сама обучаться как принимать решения, те это не обычная классификация без учителя, а значит можно в ней реализовать ту концепцию о которой я давно уже говорил - можно ее учить не стандартной целевой в виде бай-сел-бай или 00011101011, а более абстрактно например тупо поставить условия типа: Сеть! мне пофиг как ты там будешь торговать но я хочу чтоб твой заработок в день составлял не мение 1% просадке 0.5% и она сама будет искать правила , комбинации для решения этой задачи. Если я где то тут не прав и наговорил ахинеи то поправьте меня для моего же блага )
Точно, не подумал об этом, всё правильно. Тогда лучше дать нейронной сети условие на максимизацию sharpe ratio (или recovery factor), и сделать в R что-то вроде простого форекс тестера на реальных котировках для теста модели для оценки эволюции. Но чудо само по себе не произойдёт, проблема переобучения останется, нужно по прежнему делить данные на тренировочную и тестовые выборки, делать кроссвалидации для финальной оценки модели при эволюции. Как работать с sharpe ratio при кроссвалидации я придумать по быстрому не смог, по-моему тут не получится убрать рандомные бары в тестовую выборку, ведь важна будет не точность на каждом баре, а сама непрерывная торговля, со всеми просадками, спредами и комиссиями от каждой новой сделки.
Они там вроде пакет для R готовят. Надо взять на заметку.
Пакет уже есть, только не знаю насколько процентов он готов, покачто на гитхабе. Вот более простой пример, продолжение статьи. Учат сеть извлекать корень.
http://gekkoquant.com/2016/07/17/rneat-square-root-neural-net-trained-using-augmenting-topologies-simple-example/
Дописал позже:
Сделал по примеру классификацию ирисов, код в атачменте (модель не смогла классификацию, я все классы заменил числами для регрессии, и результаты округлил к ближайшим числовым уровням. Наверное это можно было сделать как-то проще).
Для тренировки взял всего 50% данных, на валидации успех 95%, вполне хорошо. Судя по графику модель даже сама убрала первый предиктор.
Форекс сложнее ирисов :) , там результат будет гораздо хуже.
Ещё заметил что в 3 и 4 частях статьи используются разные функции для обучения модели.
3 часть для моделирования каких-либо динамических процессов, например модель может наблюдать за форекс графиком, и открывать/закрывать сделки в реальном времени.
4 часть - просто обучить модель на готовых примерах, и спрогнозировать результат
1) Точно, не подумал об этом, всё правильно. Тогда лучше дать нейронной сети условие на максимизацию sharpe ratio (или recovery factor), и сделать в R что-то вроде простого форекс тестера на реальных котировках
2) Ещё заметил что в 3 и 4 частях статьи используются разные функции для обучения модели.
3 часть для моделирования каких-либо динамических процессов, например модель может наблюдать за форекс графиком, и открывать/закрывать сделки в реальном времени.
4 часть - просто обучить модель на готовых примерах, и спрогнозировать результат
1) Абсолютно верно! именно это я и имел ввиду, прибыль/просадка просто для примера , я думал взять фактор восстановления, но и шарп в принципе ничем не хуже
2) Правильно заметили, в 4 статье автор уже создал что то типа пакета при чем по всем стандартам "R" те максимально просто есть модель - есть целевой вектор - через "predict" прогноз - но именно этот подход нам и не подойдет потому что все функции уже скрыты в пакете... Нужно разбираться с исходным кодом и писать все под себя, потому и говорил что помогите разобраться так как тут все гораздо сложнее чем с "готовым пакетом с примерами к нему" Мне кажется что даже функций из 3 части будет не достаточно для того что нам надо. Так что было бы просто сказочно если бы мы все включились в это дело
1) Абсолютно верно! именно это я и имел ввиду, прибыль/просадка просто для примера , я думал взять фактор восстановления, но и шарп в принципе ничем не хуже
2) Правильно заметили, в 4 статье автор уже создал что то типа пакета при чем по всем стандартам "R" те максимально просто есть модель - есть целевой вектор - через "predict" прогноз - но именно этот подход нам и не подойдет потому что все функции уже скрыты в пакете... Нужно разбираться с исходным кодом и писать все под себя, потому и говорил что помогите разобраться так как тут все гораздо сложнее чем с "готовым пакетом с примерами к нему" Мне кажется что даже функций из 3 части будет не достаточно для того что нам надо. Так что было бы просто сказочно если бы мы все включились в это дело
В сеть надо подать какую-то гладкую функцию. И нам расскажете ) а уж мы насоветуем.
Простите, что вмешиваюсь, но не только гладкую, но ещё и нормализованную.
Чтобы НС никогда не выходила за пределы известных ей областей.
Как-то так.
Не могу понять, чего вцепились в эти сети?
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Не могу понять, чего вцепились в эти сети?
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Так покажите же скорее ваш caret и полторы сотни моделей в деле! :)
Так покажите же скорее ваш caret и полторы сотни моделей в деле! :)
Кстати, я сам юзаю caret и получаю удовлетворительные результаты на форексе.
Пример кода из моих экспериментов:
Не могу понять, чего вцепились в эти сети?
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Обычно библиотека может или очень много но средненько, или что-то одно и качественно. Caret это первый случай, с ней легко проверить в деле десятки моделей и сравнить результаты, но сложно что-то улучшить под свою задачу. Я упёрся в огромные сложности при отборе предикторов по моим правилам - caret умеет simulated annealing для их перебора (и генетику), но не умеет просто взять мою фитнесс функцию для оценки. Нужно создавать новую модель для caret с тренировочной, валидационной и фитнесс функциями; но caret при этом всё равно будет контролировать тренировочные и тестовые выборки данных по своим правилам, со своими кроссвалидациями.
Мне проще взять пакет GA или GenSA для перебора предикторов, и написать всего одну фитнесс-функцию в которой будет и создание модели, и кросс-валидация по нужным мне правилам.
Нейронка не хуже леса, у меня с ней результаты таки в плюсе, или в худшем случае просто без слива депозита. В силу разных алгоритмов, нейронка будет предпочитать другие предикторы чем лес, но все правила отбора предикторов полностью те же что и для леса.
Перенести нейронку в mt5 советник это дело на пару минут (сохранить веса из R в csv, прочитать их в советнике). Перенести лес в mt5 будет намного сложнее, поэтому я предпочитаю нейронку.
Ещё немного поэкспериментировал с RNeat, пришёл к выводу что с ней нельзя работать также как с обычными нейронными сетями.
1) в отличие от обычных моделей, обучение RNeat не использует исходные данные. Модель как-бы рандомно генерируется, улучшается, и только в конце тестируется на исходных данных. Обычно модели используют исходные данные, строят на них свою логику, а дальше на валидационной выборке можно узнать о том правильна ли логика модели, или она просто заучила исходные примеры. В отличие от остальных, RNeat вообще не способна запоминать исходные данные ибо она не знает о них, всё что модель знает это требуемые результаты и насколько она близка к ним.
2) кроссвалидация не поможет улучшить результаты фронттеста. Мы вроде все согласны что можно обучить обычную модель, провести пару кроссвалидаций, и как-то обработать ошибки на всех выборках для итоговой фитнесс оценки модели. Поскольку RNeat не знает исходных данных, для неё не важно в какой выборке находятся данные - тренировочной или тестовой, она будет подстраивать свою логику на нужный результат в любом случае. Теоретически она будет "обучаться" (точнее мутировать :) ) на всех выборках которые используются в фитнесс функции. Всё что можно - обучить модель до нужной точности, и надеяться что она не переобучилась, довольно рискованный подход для форекса. Кроссвалидацию можно использовать только после обучения, как финальную оценку возможного результата во фронттесте, и ни в коем случае не использовать эту валидационную выборку внутри фитнесс функции.