Советники: Примеры из книги "Нейросети в алготрейдинге на MQL5" - страница 3

 
Luiz Godoy #:
При запуске скрипта gpt_test_not_norm.mq5 я получил выход за пределы диапазона.

В 40-й строчке программы:

if(!loss_history.Resize(0,Epochs))

Меняем на:

if(!loss_history.Resize(Epochs))

 

Привет. Написано много, получилась книга. Начал читать, думал, щас как запилю ченидь для маркета.

Это хороший труд. Потому что больше нет ничего настолько универсального, что объяснило бы, как подойти к машинному обучению средствами mql5.

Однако...

Выборка делится на 3 части - 60% обучение, 20% валидация и 20% тест. Из 40 баров каждой цепочки баров повторяется 35. Мораль - вы обучаете и проверяете, используя одни и те же данные. Я нарисовал картинку. Это не только беда этой книги, я встречаю это снова и снова. 

Сначала я подумал, что индикатор Зигзаг - это то самое, что позволяет выделить неповторяющиеся движения. Типа от вершины к впадине, от впадины к вершине. Это были бы уникальные паттерны, как это названо в книге. Но нет, автор строит паттерны побарно, и в этом конечно грубейшая ошибка. И Зигзаг для этого не нужен. Можно просто смотреть вперед на 10 баров и считать, куда пошел рынок.

Это первый пункт - практический. И второй пункт технический - тоже не то. Автор проводит обучение с валидацией только в Тензорфлоу? Это круто, Тензорфлоу - библиотека машинного обучения, которую делает Гугл. Но ведь цель этого труда была в том, чтобы показать, как это сделать средствами mql5?

В mql5 нет примеров обучения с валидацией. Я пока не нашел примеров с валидацией. Потом допишу есливче. Конечно, надо пробовать делать самому. Конечно, надо. Работы много, чтобы подготовить историю и подобрать параметры обучения. Вот и в Тензорфлоу вроде все есть, а сколько всего нужно делать. А здесь получается, что и техническая часть не доделана.

Это те самые 95%, которые без 5% теряют ценность?

Я пока остановлюсь на том, что это хороший труд. Потому что больше нет ничего подобного.


 
Сколько я ни пробовал, историю нельзя выбрать по датам, если между датами больше 1 года. Иногда пролезает 2 года. Но если график пустой, и ты в пустой график заряжаешь, то сразу только 1 год. Чтобы надежно собрать данные за любой период, нужен "холостой" тест в тестере стратегий от одной даты к другой. Тогда сколько угодно лет, и в файл.

Разве метод оптимизации Adam не корректирует learning_rate исходя из скорости обучения? Там еще используется "потолок", а не постоянное значение.

Если делать рекуррентную сеть, зачем добавлять скрытые полносвязные слои? Полносвязная тема уничтожает тему lstm. Конечно, в конце сети нужен 1 полносвязный нейрончик для активации.

Dropout - это свойство слоя в любой нейронной сети. Например, в lstm свойство dropout обязательно должно быть, иначе привыкает к данным за несколько эпох. Я знаю, что в pytorch свойство dropout можно использовать только в переходе между двумя одинаковыми слоями, таким образом нужно 2 рекуррентных слоя. А в tensorflow любой слой может иметь dropout. Очевидное преимущество tensorflow перед pytorch.

Пакетная обработка в обратном распространении. Почему у автора пакет - это любое число?! Получается, что в каждую эпоху он выбирает случайное количество данных для обучения. Пакет - это количество! Например, выборка 1000 элементов, и это 10 пакетов по 100 значений. Каждая эпоха - это разные пакеты, но значений там всегда по 100. Я провожу обучение попакетно, и в конце каждого пакета корректирую веса. Это может гарантировать, что я не застряну в локальном минимуме. И я использую все данные выборки, а не какие-нибудь.
 

Еще не работает оптимизация торговли. Вылетает странная ошибка в диалоговом окне. Один раз выключился комп. То есть если обучить сеть, и потом с ней пытаться проводить оптимизацию торговли.

На мой взгляд, неправильно использовать графический стимулятор для форекса. Как ни крути, данных не много. Правильнее, на мой взгляд, было бы использовать агентов метатрейдера в оптимизаторе, чтобы запускать разные потоки обучения разных сетей. Например, в тензорфлоу я обучаю 7 потоков. Один закончился, добавился другой. И так по порядку 100 вариантов. Потом по ним прогон на истории.

Тут тема в том, что нейронная сеть может и хорошая. Но не любая нейронная сеть способна пройти свою историю обучения. Поэтому нужно много вариантов сетей.

 

ChatGPT подсказывает, что для классификации между двумя лучше всего использовать сигмоид. И его-то как раз я не нашел. А еще функции активации разные. Но функция потери одна и та же - MSE?

Тангенс все равно это не классификация, а регрессия. От -1 до 1 это не вероятность, а расчет значения.

Короче, сойдет. Больше ничего нет. Поэтому труд, безусловно, хороший. Буду использовать.

 
Joseph Bervell остановлен, так как OnInit возвращает ненулевой код 1

LG 2 10:07:44.216 Core 1 отключен

KP 0 10:07:44.216 Core 1 соединение закрыто

Удалось ли вам найти решение? Если я найду его, я опубликую его .

Нет файла"our_model.net " IMO

 
اللعبه :

MQL5 :

المؤلف: MetaQuotes

اخرزميات انا عالم التكنولوجيا الجديدة ومطور برامج ومنشء تطبيقات 
 
Спасибо огромное автору за книгу! Единственный минус))) - моя Алиса Про потеряла для меня магию "сознания") С уважением, Игорь.