Станиславу больше спасибо! Наконец-то написана статья про нейросети с использованием нативных матриц...
К слову. Буквально сегодня обнаружил, что в Документации появился новый блок, касающийся ML.

- www.mql5.com
"Те вещи, которые я забыл, ты еще даже не знаешь" - так мог бы ответить автор на подобную критику.
Там два аспекта и это важно:
1. Исполнение, техническая часть, универсальность, похвалили даже матёрые программисты. И здесь действительно, я не могу и не буду и не пытался критиковать код. Я ведь о другом:
2. Тестирование. Автор указал на работоспособность всех своих моделей. На деле же при нажатии кнопки "Старт" в тестере появляется рандомная картинка на форвард в 2 недели, из 10 нажатий 5 - слив, 5 - прибыль. Естественно, если поставить такое на реал - 50 на 50 жизнеспособность твоего депо. Это не дело. На мои вопросы о том, что это такое и как исправить, автор сказал, что так должно быть, это принцип работы модели. Ну тут я выпал просто, нет слов.
Два месяца пытался завести эти сети, никак не хотели работать на NVIDIA, спасибо Aleksey Vyazmikin, переписал код автора и всё заработало на 3080. А в итоге - неработоспособные модели. Вдвойне обидно.
Но если обидел/задел, прошу извинить, не имел такой цели.
Your efforts to put Neural Network concept with MQL is well appreciated. This is really a great piece of work to start with for beginners like me. Kudos :)
Thanks for updating the file with bug fixed. However, I would suggest to replace the file in the download area.
Luckily I went through the Discussion on the topic and found there is a bug in the file. And than now I was trying to look for the fix, I found this file link here.
I hope there are only these places for bugfix at line number 490-493, 500, 515-527, I could with //* marking. If anywhere else please mention line numbers or mark //*BugFix ...
Regards
Для работы на неттинг-счетах необходимо добавить в функцию ClosePosition явное указание символа:
bool ClosePosition() { // определяем пустую структуру MqlTradeRequest request = {}; ... // заполняем требуемые поля request.action = TRADE_ACTION_DEAL; request.position = PositionGetInteger(POSITION_TICKET); request.symbol = _Symbol; const ENUM_ORDER_TYPE type = (ENUM_ORDER_TYPE)(PositionGetInteger(POSITION_TYPE) ^ 1); request.type = type; request.price = SymbolInfoDouble(_Symbol, type == ORDER_TYPE_BUY ? SYMBOL_ASK : SYMBOL_BID); request.volume = PositionGetDouble(POSITION_VOLUME); ... // отправляем запрос ... }
Статья, достойная внимания.
Спасибо!
Спасибо, очень добротная статья!
Почему-то упустил её из виду.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Нейронные сети обратного распространения ошибки на матрицах MQL5:
Статья описывает теорию и практику применения алгоритма обратного распространения ошибки на MQL5 с помощью матриц. Прилагаются готовые классы и примеры скрипта, индикатора и эксперта.
Как мы увидим далее, MQL5 предоставляет большой набор встроенных активационных функций. Выбор конкретной функции следует делать на основе специфики задачи (регрессия, классификация). Как правило, для любой задачи можно подобрать несколько функций и далее экспериментальным путем найти оптимальную из них.
Популярные функции активации
Активационные функции могут иметь различные диапазоны значений — ограниченные или неограниченные. В частности, сигмоида (3) отображает данные в диапазон [0,+1] (лучше подходит для задач классификации), а гиперболический тангенс — в диапазон [-1,+1] (лучше подходит для задач регрессии и прогнозирования).
Автор: Stanislav Korotky