Очень хорошая статья, я буду учиться на этой неделе, чтобы попытаться реализовать то, что определено в статье.
Но у меня есть вопрос, как мне реализовать больше нейронов?
Osb: Я все еще новичок в программировании.
У меня есть несколько основных вопросов, и некоторые из них появятся в процессе разработки, которую я буду пытаться сделать. Могу ли я проконсультироваться с вами?
Я новичок в программировании, почти ничего не знаю, но я изучаю и адаптирую ваш советник для нескольких тестов. Эта задача очень интересная.
Сейчас я думаю о системе самооптимизации и нашел интересную статью об этом. Можно ли реализовать структуру вашего советника. На данный момент у меня нет возможности для этого.
Será que é possível criar um Expert Advisor que, de acordo com os comandos do código, otimize os critérios de abertura e fechamento das posições automaticamente e em intervalos regulares? O que acontecerá se nós implementarmos no EA uma rede neural (um perceptron multi-camada) que, sendo módulo, analise o histórico e avalie a estratégia? É possível dar ao código um comando para uma otimização mensal (semanal, diária ou por hora) de rede neural com um processo subsequente. Assim, é possível criar um Expert Advisor que se auto-otimize.
Изменение крутизны функции активации совершенно не нужно делать!
Смотрим формулу:
for(int n=0; n<10; n++)
{
NET+=Xn*Wn;
}
NET*=0.4;
При обучении сеть должна подбирать множители Wn. Если для сети выгоднее чтобы итог был *0,4, то она просто подберет все веса Wn, каждый из которых уже будет * 0.4. Т.е. просто внесем общий множитель в скобки, который сам и определится по минимуму ошибки.
В данной реализации можно просто уменьшить шаг для подбора весов. В более серьезных нейросетях нужные коэффициенты найдутся сами.
Нормализация проводится неверно, а потом еще коэффициент 0.4 зачем-то...
Предположим, есть ряд значений: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Значения из этого ряда нужно привести к последовательности [0,1]. Логично предположить, что это будет ряд: 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.
Однако по вашей методике получаются просто случайные числа. Предположим, мы получаем значения из индикатора: 6, 7, 8, 9, 10. Упрощая вашу формулу:
Мы получаем:
6 >> 0
7 >> 0.25
8 >> 0.5
9 >> 0.75
10 >> 1
В этом ряду, нормализованном согласно указаниям из вашей статьи, верно только последнее значение.
Если у вас был в жизни курс линейной алгебры и вы можете отличить косинус от тангенса, то непонятно как можно так напортачить с такой простой задачей. Результаты вашей работы носят исключительно случайный характер!!
Но признаю, я использовал именно эту публикацию в качестве отправной точки. Распечатал, внимательно перечитывал, делал пометки ручкой. Потом пошел в Дом книги и купил Осовского "Нейронные сети для обработки информации". Прочитал, стал очень умным, и вот пишу...
Спасибо за это понятное введение в искусственный интеллект для торговли на MT5. Итак, "веса" находятся путем оптимизации, что Кагатай назвал подгонкой кривых. В действительности нейронные сети (их веса) "обучаются" путем ввода огромного количества обучающих данных, помеченных человеком, и пометки результатов как правильных или неправильных. Есть ли эффективный способ сделать это в MT5?
Nice Post, В ваших кодах, вы упомянули Trade\Trade.mqh и Trade\PositionInfo.mqh, не могли бы вы предоставить ссылку на скачивание этих двух? большое спасибо!
Объясните пожалуйста:
Допустим, обучил я перцептрон1 тестовой выборкой из файл1. Он научился предсказывать на 100% правильно этот же файл1.Потом протестировал этот перцептрон1 на новых данных (файл2). Их он предсказал правильно на 95% процентов.
Как можно доучить перцептрон1?
Вариант 1:
Я склеиваю файл1 и файл2 = файл12. Обучаю с нуля перцетпрон2 скармливая ему файл12 + правильные ответы.
Вариант 2:
Я вручную корректирую правильные ответы в файл2 и дообучаю перцептрон1.
Вариант 1 понятен. Это просто с нуля обучение нового перцептрона.
А как осуществить вариант 2 ? Осуществим ли он?
=========
Сейчас экспериментирую в Jupyter-е на Питоне с библиотекой scikit-learn. Там у перцептрона нет метода чтобы доучить его новыми данными..
http://scikit-learn.org/dev/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier
Статья супер, наверно пока единственная с более менее подробным и понятным изложением,
хотелось бы попросить автора исправить картинку, все таки в этом примере рассматривается не сеть, а перцептрон,
и очень ждем примера именно нейронной сети, например: 2 нейрона на входе, 3 в скрытом слое, 1 на выходе
большое спасибо за статью!
Osb: Я все еще новичок в программировании.
У меня есть несколько основных вопросов, и некоторые из них появятся в процессе разработки, которую я буду пытаться сделать. Могу ли я проконсультироваться с вами?
Было бы вам интересно развивать эту работу?
https://www.mql5.com/ru/articles/2279
Изменение крутизны функции активации совершенно не нужно делать!
Смотрим формулу:
При обучении сеть должна подбирать множители Wn. Если для сети выгоднее чтобы итог был *0,4, то она просто подберет все веса Wn, каждый из которых уже будет * 0.4. Т.е. просто внесем общий множитель в скобки, который сам и определится по минимуму ошибки.
В данной реализации можно просто уменьшить шаг для подбора весов. В более серьезных нейросетях нужные коэффициенты найдутся сами.
Нормализация проводится неверно, а потом еще коэффициент 0.4 зачем-то...
Предположим, есть ряд значений: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Значения из этого ряда нужно привести к последовательности [0,1]. Логично предположить, что это будет ряд: 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.
Однако по вашей методике получаются просто случайные числа. Предположим, мы получаем значения из индикатора: 6, 7, 8, 9, 10. Упрощая вашу формулу:
Мы получаем:
6 >> 0
7 >> 0.25
8 >> 0.5
9 >> 0.75
10 >> 1
В этом ряду, нормализованном согласно указаниям из вашей статьи, верно только последнее значение.
Если у вас был в жизни курс линейной алгебры и вы можете отличить косинус от тангенса, то непонятно как можно так напортачить с такой простой задачей. Результаты вашей работы носят исключительно случайный характер!!
Но признаю, я использовал именно эту публикацию в качестве отправной точки. Распечатал, внимательно перечитывал, делал пометки ручкой. Потом пошел в Дом книги и купил Осовского "Нейронные сети для обработки информации". Прочитал, стал очень умным, и вот пишу...
Почему при бэктестинге я получаю только 365 долларов прибыли?