Скачать MetaTrader 5

Обсуждение статьи "Нейросеть: Самооптимизирующийся советник"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как установить MetaTrader на Linux
MetaQuotes Software Corp.
Модератор
181282
MetaQuotes Software Corp. 2016.10.03 09:33 

Опубликована статья Нейросеть: Самооптимизирующийся советник:

Возможно ли создать советник, который согласно командам кода автоматически оптимизировал бы критерии открытия и закрытия позиций с определенной периодичностью? Что произойдет, если реализовать в советнике нейросеть (многослойный персептрон), которая, будучи модулем, анализировала бы историю и оценивала стратегию? Можно дать коду команду на ежемесячную (еженедельную, ежедневную или ежечасную) оптимизацию нейросети с последующим продолжением работы. Таким образом возможно создать самооптимизирующийся советник.

После выполнения скрипта с заданными параметрами (НС без скрытых слоев, 10 нейронов входа, 20 нейронов в первом скрытом слое и 1 в слое выхода) результат получается хуже, чем в предыдущей задаче. Файл "ScriptNumPrimo-infRN.csv", сгенерированный в папке "Terminal\Common\Files", дает нам следующую информацию:

Автор: Jose Miguel Soriano

fxsaber
4522
fxsaber 2016.10.03 20:23  

Самооптимизации любой целевой функции, к сожалению, не увидел.

Vladimir Perervenko
2320
Vladimir Perervenko 2016.10.04 09:32  

Может недостатки перевода, но я не понял :

Чему Вы учите нейросеть?

Что на входе и какая целевая?

Что конкретно Вы оптимизируете? 

Сумбурная статья.  

Ну вот и  преимущество применения Alglig в МТ5.  

Alexey Volchanskiy
16678
Alexey Volchanskiy 2016.10.13 16:44  

Хотелось бы в статьях, посвященных созданию советников, увидеть результаты в тестере и торговли на демо. А то опять сферический конь в вакууме. Еще не одной дельной статьи по использованию нейросетей в трейдинге не было. Одни теории.
Vladimir Perervenko
2320
Vladimir Perervenko 2016.11.08 10:10  
Замечания по статье.
1. Нейросети не оптимизируют! (в общем случае любые модели машинного обучения) обучают, тестируют и могут дообучать. 
2.Подготовка данных. Перед нормализацией входных/выходных данных набор необходимо разделить на train/test   и иногда на valid части в необходимых пропорциях. Параметры нормализации определяются на тренировочном наборе! При решении задач классификации разделение должно быть (желательно) стратифицированным. И конечно учитывать разбалансированность классов.
В статье не приведены конкретные данные входа и выхода, но этот пассаж: " Переменная "nVelasPredic" позволяет экстраполировать эти значения индикаторов на n свечей вперед." вызывает немой вопрос.
Заключительный абзац раздела: "То есть, в каждой строке массива "arDatos" класса CMatrixDouble будет столько же колонок, сколько и входных данных или индикаторных значений используется в стратегии, и сколько выходных данных ею определяется." А сколько выходных данных определяется? Как можно догадаться решается задача регрессии и количество  выходов = 1.
Вообще входные и выходные данные в сnатье - какая то абстракция, тем не менее приводится ошибка обучения RMSE. 
3. "Перебор входных/выходных данных."
"Чтобы избежать тенденций, связанных с наследованием значений внутри массива данных, мы можем произвольно изменять (перебирать) порядок строк внутри масcива. Для этого применим функцию "barajaDatosEntra", которая проходится по строкам массива CMatrixDouble, определяет для каждой строки новую целевую строку, соблюдая позицию данных каждой колонки и выполняя перемещение данных при помощи пузырькового метода " Вы говорите о сортировке?
При решении задач классификации перемешивание строк  в случайном порядке (не перебор) желательно, для регрессии не обязательно.
4. "3.6.Обучение/оптимизация нейросети". Повторюсь - нейросеть не оптимизируют, не настраивают - её обучают. Методов обучения на сегодня существует достаточно много. Каждый со своими преимуществами и недостатками.
"Проведенные мною тесты не показали улучшения результатов при увеличении количества эпох обучения. "
"Эти алгоритмы выполняют настройку таким образом, что реитерация циклов обучения (переменная "ciclosEntrena") практически не влияет на полученную ошибку, в отличие от алгоритма "back propagation", где реитерация может существенно изменить полученную точность".
Если Ваша нейросеть не реагирует на изменение количества эпох обучения - Это неработающая нейросеть. 
"Сеть из 4 слоев с 35, 45, 10 и 2 нейронами и входной матрицей из 2000 строк можно оптимизировать при помощи вышеописанной функции за 4 - 6 минут (I5, core 4, RAM 8 gb) с ошибкой порядка 2 — 4 стотысячных (4x10^-5)." - Как видно из статьи Вы говорите об ошибке обучения которая всегда очень хороша. Но показательна все таки ошибка тестирования, которое Вы очевидно не проводили. Не имея коyкретных данных по входам и выходам приведенная Вами цифра ни о чем не говорит. Кроме того я не увидел в статье сдвига выходных данных при обучении.
5."3.7. Сохранение сети..."
Для дальнейшей работы нужно сохранить не только саму сеть, но и параметры нормализации, которые были получены на тренировочном наборе. Иначе дальнейшая работа будет пустой тратой времени.
"В данной функции (respuestaRed()) предполагается возможность поменять нормализацию, примененную к выходным данным в обучающей матрице." Это как? Параметры нормализации устанавливаются на этапе обучения и не могут быть изменены на этапе тестирования или прогноза.
6. "Самооптимизация" Нет здесь ни оптимизации ни самооптимизации. У Вас  нейросеть обучается периодически на новых данных.

Суммируя могу сказать: как упражнение по программированию наверное полезно, но как руководство по теме создание и использование нейросети - абсолютно неприемлемо. Автору (или переводчику) нужно придерживаться устоявшихся терминов и определений в этой области дабы не вводить в заблуждение пользователей. И думаю предварительное рецензирование текстов  перед публикацией очень желательно. Я не говорю об отсутствии графиков, рисунков иллюстрирующих текст. Без них это простынь с кодом.

Удачи 




Vladimir Perervenko
2320
Vladimir Perervenko 2016.11.09 11:31  

Alexey Volchanskiy:
Хотелось бы в статьях, посвященных созданию советников, увидеть результаты в тестере и торговли на демо. А то опять сферический конь в вакууме. Еще не одной дельной статьи по использованию нейросетей в трейдинге не было. Одни теории.

Заявление сильное, но беспочвенное. 

В приложении к статьям (моим по крайней мере) приведены коды советников. Ставите на демо и тестируете. Или Вы предпочитаете верить чужим картинкам? Не ленитесь, пробуйте.

Цель статей дать Вам новые идеи, способы и методы, которые можно применить в экспертах. А вот настроить для продуктивной работы - это самостоятельно. Это в маркете Вас могут заманивать красивыми картинками. 

Удачи 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий