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

 

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

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

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

Автор: Jose Miguel Soriano

 

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

 

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

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

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

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

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

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

 

Хотелось бы в статьях, посвященных созданию советников, увидеть результаты в тестере и торговли на демо. А то опять сферический конь в вакууме. Еще не одной дельной статьи по использованию нейросетей в трейдинге не было. Одни теории.
 
Замечания по статье.
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. "Самооптимизация" Нет здесь ни оптимизации ни самооптимизации. У Вас  нейросеть обучается периодически на новых данных.

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

Удачи 




 

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

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

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

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

Удачи 

 

статья интересна применением библиотеки НО

ALGLIB Free Edition (download):
 delivered for free under open source license (GPL)
 offers full set of numerical functionality
 single-threaded, without extensive low-level optimizations
 copyleft requirement (GPL) does not suit most commercial applications

если я правильно понял - бесплатная редакция - однопоточна .... а это ставит большой жирный крест на этой библиотеке, я вот жду кто наконец тензор флоу прикрутит к метатрейдеру 5

далее к сожалению к чему эта библиотека применена не понятно вообще ... 

где входные и где выходные данные не понятно, тема настроек раскрыта слабо, присутствующий код нужно вообще убрать ибо это просто функции которым нужно что то дать на вход и получить результат, я думаю достаточно было описать входные и выходные параметры - что кстати почти не сделано,

примеры вообще ни к месту, зачем тут примеры "двоично-десятичный конвертер", "определитель простых чисел"????? 

если кто то хочет писать научные статьи может надо в соответствующие журналы писать, а тут вообще то трейдинг .... как все это применить к трейдингу и на практике ???

статья плохо понятна вообще

 
gedd:

статья интересна применением библиотеки НО

ALGLIB Free Edition (download):
 delivered for free under open source license (GPL)
 offers full set of numerical functionality
 single-threaded, without extensive low-level optimizations
 copyleft requirement (GPL) does not suit most commercial applications

если я правильно понял - бесплатная редакция - однопоточна .... а это ставит большой жирный крест на этой библиотеке, я вот жду кто наконец тензор флоу прикрутит к метатрейдеру 5

далее к сожалению к чему эта библиотека применена не понятно вообще ... 

где входные и где выходные данные не понятно, тема настроек раскрыта слабо, присутствующий код нужно вообще убрать ибо это просто функции которым нужно что то дать на вход и получить результат, я думаю достаточно было описать входные и выходные параметры - что кстати почти не сделано,

примеры вообще ни к месту, зачем тут примеры "двоично-десятичный конвертер", "определитель простых чисел"????? 

если кто то хочет писать научные статьи может надо в соответствующие журналы писать, а тут вообще то трейдинг .... как все это применить к трейдингу и на практике ???

статья плохо понятна вообще

Прикрутить Tensorflow  не проблема (только через R). Но Вы же не думаете, что это самый передовой пакет на сегодня? Пакетов с глубокими нейросетями сейчас в изобилии. Умели бы мы только их пользовать.
 
Vladimir Perervenko:
Прикрутить Tensorflow  не проблема (только через R). Но Вы же не думаете, что это самый передовой пакет на сегодня? Пакетов с глубокими нейросетями сейчас в изобилии. Умели бы мы только их пользовать.

нет не думаю, можно и микрософт и caffe прикрутить, особо неважно

для меня есть несколько параметров которым должен удовлетворять этот пакет:

1. бесплатен

2. многопоточен и работает с видеокартами, крайне желательно возможность задействования распределенных сетей ибо одного CPU не хватает как ни крути

3. нет никаких прослоек типа R/pyton, прямая интеграция dll, код на С#

4. пакет поддерживает все современные виды нейронных сетей и методов обучения

5. есть примеры и развитая документация (желательно на русском)

 
gedd:

нет не думаю, можно и микрософт и caffe прикрутить, особо неважно

для меня есть несколько параметров которым должен удовлетворять этот пакет:

1. бесплатен

2. многопоточен и работает с видеокартами, крайне желательно возможность задействования распределенных сетей ибо одного CPU не хватает как ни крути

3. нет никаких прослоек типа R/pyton, прямая интеграция dll, код на С#

4. пакет поддерживает все современные виды нейронных сетей и методов обучения

5. есть примеры и развитая документация (желательно на русском)

Тогда Вам нужно почитать здесь 

Удачи

CNTK — нейросетевой инструментарий от Microsoft Research
CNTK — нейросетевой инструментарий от Microsoft Research
  • habrahabr.ru
2015 год был очень богат на события, связанные с нейросетевыми технологиями и машинным обучением. Особенно заметный прогресс показали сверточные и рекуррентные...
 

Можно ли привести пример для любого простого индикатора типа RSI, CCI, MACD без использования всякого рода скриптов

с целью поиска оптимальных значений ... например можно взять любой встроенный эксперт типа "MACD Sample.mq5" и находить оптимальные параметры InpTakeProfit, InpTrailingStop скажем раз в неделю в субботу

что то тема затухла, а ведь это самая перспективное направление

Причина обращения: