Практическое применение нейронных сетей в трейдинге
В данной статье я хочу поднять тему применения нейронных сетей при создании торговых роботов. Это в узком понимании данной проблемы. В более широком аспекте — попытаться ответить на ряд вопросов и рассмотреть несколько проблем:
- Возможно, ли построить прибыльную систему используя машинное обучение?
- Что мы можем получить от нейронной сети?
- Логическое обоснование обучения нейронных сетей на принятие решения.
- Нейронная сеть — это сложно или просто?
- Как интегрировать нейронную сеть в торговый терминал?
- Как тестировать нейронную сеть? Этапы тестирования.
- Об обучающих выборках.
1. Возможно ли построить прибыльную систему используя машинное обучение?
Наверное, каждый новичок, который приходит на валютный рынок и пытается реально на нем торговать, не имея какой либо системы, брал в руки лист бумаги и рисовал на нем таблицу понравившихся индикаторов. Далее напротив каждого из этих индикаторов ставил либо плюсики и минусики, либо стрелочки, либо проценты вероятности движения цены, исходя из графика индикатора в терминале. Потом он подводил итог своим наблюдениям и принимал определенное решение на вхождение в рынок в определенном направлении, а если продвинулся еще дальше, то и решение входить ли в рынок вообще или оставаться вне него.
И здесь мы задумаемся — а, что же происходит в самой совершенной нейронной сети — нашем мозге. А, оказывается, все довольно просто — пронаблюдав эти индикаторы, у нас в голове складывается образ, какого-то одного, общего индикатора, подающего нам сигнал, на основе которого мы и принимаем решение. А если хотите, то цепочка сигналов складывается в индикатор. И тут нам приходится задуматься — если мы изучаем индикаторы в определенный момент времени и заглядываем в прошлое максимум на несколько периодов — как нам исследовать эти индикаторы одновременно на протяжении нескольких предшествующих лет и на основании этого исследования построить единый индикатор с дальнейшей возможностью его оптимизации.
Итак, мы получили ответ на второй вопрос — что мы можем получить от нейронной сети в результате ее обучения? И даже в большей мере надо вопрос перефразировать — что мы хотим получить от нейронной сети в результате ее обучения? А логически подумав, мы можем ответить и на первый вопрос положительно. Поскольку технически и программно это сделать возможно. Как это реализуется на практике, вы можете увидеть в видеоролике на моем канале в https://youtu.be/5GwhRnSqT78. А также посмотреть плейлист с видео онлайн теста нейросетевых модулей на этом же канале https://youtu.be/3wEMQOXJJNk
2. Логическое обоснование обучения нейронных сетей на принятие решения
Прежде чем приступать к разработке любой торговой системы, мы задаемся вопросом — на каких принципах данная система будет функционировать? У нас есть два основополагающих принципа использования флетов и продолжение тенденции. Не будем рассматривать более узкие производные от них, внутридневная торговля или нет, на фундаментальных данных, на новостях, на открытии рынков и т.д. Мне пришлось сталкиваться с описанием нейросетевых продуктов, где их авторы в примерах использования предлагали прогнозирование каких либо курсов — акций, валют и т.д.
1. График отклика нейросети обученной на прогнозе цены
Рассмотрев график отклика нейронной сети, обученной на прогноз цены, мы видим, что хоть он и повторяет график цен, но на один шаг от него отстает. Причем это не зависит от того, прогнозируем ли мы ценовые данные или производные от них. Исходя из этого, мы можем это заключение постулировать. Например: “То, что для нас вчера, для нейронной сети — сегодня”. Согласитесь, что здесь, в принципе, ни о какой полезности речи идти не может. Однако отмечу, что данный вариант при определенной доработке мы так же можем использовать.
Но мы, конечно, хотели бы использовать постулат :“То, что для НС сегодня, для нас — завтра”. Машина времени какая-то. Однако мы понимаем, что все-таки самая лучшая нейронная сеть — это наш мозг. И мы можем использовать этот постулат максимум с 50% успехом (если мы говорим о вероятности да или нет), а то и хуже. Но ведь есть еще и третий вариант: “То, что для НС вчера, для нас — сегодня”. Или так: “ То, что для нас сегодня, для НС— вчера”. Разберем, что для нас означают эти постулаты в трейдинге:
- первый — мы совершаем сделку и завтра получаем ответ от НС — открылись в правильном направлении или нет. Хотя мы это уже знаем и без НС.
- второй — мы получаем информацию от НС, совершаем сделку и завтра видим, правильная рекомендация была или нет.
- третий — мы получаем информацию от НС, когда нам надо совершить ту или иную сделку вернее надо ли нам совершать сделку в настоящий момент, и в каком направлении.
Первый вариант, естественно, мы отбрасываем сразу. А вот второй и третий для торговли подходят. Однако второй вариант — вариант как бы заглядывания в будущее. Утрировано этот вариант торговли заключается в том, что мы получаем сигнал от НС в определенный момент времени, например, по закрытию дня с прогнозом, как закроется следующий день (и в данный момент времени нас не интересует движение цены до закрытия сделки). Реализовать его для чисто механической торговли на данном этапе сложно (для прибыльной торговли). Смысл третьего варианта заключается в том, что мы отслеживаем отклик НС на протяжении торговой сессии и покупаем либо продаем, интерпретируя его. И здесь нам надо понять основное.
Какой из вариантов мы сможем реализовать, зависит от того, как мы будем обучать нейронную сеть. И согласитесь, что третий вариант реализовать все-таки легче. Если во втором мы будем использовать какую-либо информацию с прицелом на получение результата на следующий день — его закрытия (день выбран как пример, естественно, может быть какой-либо другой период), то в третьем варианте мы используем информацию, пришедшую за шаг до принятия решения — куда двинется цена в этот момент времени. В своих системах я придерживаюсь третьего варианта.
3. Нейронная сеть это сложно или просто?
Если мы говорим о разработке системы торговли с помощью нейронных сетей, то естественно возникает вопрос – а где же нам взять саму нейронную сеть, как ее обучить и интегрировать в торговый терминал. На данном этапе я пока использую готовые НС “NeuroSolutions” и Matlab. Эти платформы позволяют выбрать подходящую вам нейронную сеть, обучить и довести ее до исполняемого файла с подходящим вам интерфейсом. В результате сама программа нейронной сети может выглядеть вот так:
2. Модуль нейронной сети, созданный в среде Matlab
3. Модуль нейронной сети, разработанный с помощью Neuro Solutions
Изучая возможности применения нейронных сетей на финансовых рынках, я пришел к заключению, что сети необходимо использовать не только в качестве основного поставщика сигналов на принятие решения, но также и как прекрасную возможность разгрузить программную часть эксперта торгового терминала. Представьте, что вы решили написать эксперт, который будет использовать десяток индикаторов, а у индикаторов различные параметрами, плюс их надо будет анализировать и сравнивать на какой-то временной глубине, плюс вы будете использовать несколько временных окон.… Получится довольно-таки перегруженный эксперт для реальной торговли, и что немаловажно, его будет сложно протестировать.
Но мы можем переложить функцию терминала по расчету индикаторов на нейронную сеть, обучив их определенным образом. И далее обучать нейронную сеть уже на этих индикаторах. То есть от эксперта нам понадобится передать в модуль нейронной сети только относительные ценовые данные, которые используются в формулах индикаторов. И впоследствии принять от нейронной сети несколько “единичек” и “ноликов” и, сравнив их, принять решение.
Давайте посмотрим на примере стохастического осциллятора, что у нас получится. Вот такие ценовые данные мы будем использовать в качестве входов, и в качестве одного обучающего примера мы будем использовать сам индикатор.
4. Ценовые данные
После обучения нейронной сети, она нам выдаст вот такой результат.
5. Отклик нейросети
Для лучшего визуального исследования мы перенесем эти данные в виде индикатора в торговый терминал.
6. Стохастик и нейросетевой индикатор
В верхнем окне мы наблюдаем индикатор, построенный терминалом, а ниже – нейронной сетью.Даже визуально можно понять, что индикатор, построенный нейронной сетью, имеет все характеристики стандартного индикатора – уровни, пересечения, развороты, дивергенции и т.д. Хотя мы для обучения сети не использовали ни одной сложной формулы.
Таким образом, мы можем нарисовать вот такую блок схему торговой системы.
7. Блок-схема торговой системы
Блоки “MT4” – это наш торговый эксперт. Файл цен – “Input_mat”. Файл сигнала – “Open1,2,3”. Примеры этих файлов представлены в следующем разделе.
Основная работа у нас предстоит с блоками “Net1” и “Net2”. Подготавливая их, нам надо будет использовать несколько скриптов и экспертов для подготовки исторических данных и для тестирования сигналов от этих блоков нашим торговым экспертом. Но на самом деле, когда наша система готова как комплекс, ее модификация, развитие, экспериментирование с ней не занимает много времени. В качестве примера вы можете просмотреть видео https://youtu.be/k_OLEKJCxPE . То есть подготовка файлов, обучение “Net1” и “Net2” и первый этап тестирования на котором мы можем оптимизировать нашу систему, занимают 10 минут.
4. Интеграция нейронной сети в торговый терминал
Интеграция нейронной сети и торгового терминала особой проблемы не составляет. Этот вопрос я решил путем передачи информации через файлы, создаваемые терминалом и программой нейронной сети. Если кто-то скажет, что это замедляет действия системы на принятие решения, то я остановлюсь на основных достоинствах такого способа передачи информации. Ну, во-первых, информация, передаваемая терминалом, минимальна – всего несколько десятков байт. Посмотрите на строку файла, который записывается терминалом.
8. Файл нормализованных цен
Хотя сам способ передачи информации программно нам дает возможность открываться только на следующем тике после прихода сигнала от нейронной сети. Но если система не использует супер краткосрочные моменты совершения сделок, это не существенно. Забегая вперед, отмечу, что в данной статье я рассматриваю систему “по ценам открытия”. И опять-таки, забегая вперед и исходя из вышесказанного, мы приходим к выводу, что системы с таким способом передачи информации требуют тестов либо по контрольным точкам, либо по всем тикам. Тесты систем на нейронных сетях на контрольных точках и всех тиках практически идентичны. Хотя ранее, при разработке традиционных торговых роботов, я сталкивался с проблемой значительного ухудшения итогов торгов при переходе на тест по всем тикам.
Но основным достоинством такого способа передачи информации является то, что мы на каждом этапе можем контролировать передаваемые и получаемые данные. Это я считаю одним из основ дальнейшей успешной торговли с использованием нейронной сети. И кажущаяся громоздкость подготовки самой нейросетевой системы, в результате оборачивается достоинством при реальной работе, так как мы уменьшим до минимума вероятность получения программной ошибки либо ошибки логико структурной схемы системы. Все-таки сама система перед ее применением требует поэтапного тройного тестирования. На этом мы остановимся подробнее позднее.
На рисунке ниже мы видим файлы “Input_mat” и “Bar”. Эти файлы формируются торговым терминалом. Файлы “Open1,2,3” формируются программой НС. Единственное небольшое неудобство заключается в том, что в программе НС нам надо явно задавать пути, к этим файлам исходя из того, в каком качестве мы используем эксперт – тестируя его или реально с его помощью торгуя.
9. Файлы сформированные нейросетевым модулем и экспертом
Файл “Bar” – вспомогательный и используется в качестве счетчика.
В файлы “Open1,2,3” мы непосредственно получаем отклик НС. Первая строка – предшествующий отклик. Вторая – отклик в реальном времени. Данный формат является частным случаем. В зависимости от условий ведения торгов он может отличаться. Как и само количество файлов откликов. В данном случае это обусловлено тем, что в самом модуле НС используется три сети, обученные на разных временных отрезках.
10. Отклик НС модуля в файлах Open 1,2,3
5. Как тестировать нейронную сеть? Этапы тестирования
При подготовке торговых систем на основе нейронных сетей я использую три этапа тестирования. Первый этап я назвал быстрым тестированием. Это основной этап подготовки системы в смысле ее общей работоспособности. На этом этапе мы систему можем оптимизировать, и на оптимизацию у нас не уходит много времени. Здесь мы используем скрипт или эксперт для подготовки файла исторических данных после “истории”, на которой мы обучали нейронную сеть и по текущее время. Потом мы по этим данным получаем отклики от сети с помощью скрипта из среды матлаб и по ним строим индикатор. С помощью этого индикатора мы и оптимизируем наши НС отклики на вхождение в рынок и выход из него. На рисунке ниже приведен пример этого индикатора. Этот индикатор является интерпретацией 52 производных от 12 пользовательских индикаторов. Хотя это могут быть и стандартные индикаторы терминала.
11. Индикатор построенный по откликам нейросети
Далее мы можем оптимизировать нашу стратегию торговли.
12. Результаты тестирования откликов нейросети
Второй этап проведения тестов заключается в том, что мы должны обучить и записать нейронные сети в среде Matlab с помощью Neural Network Toolbox.
13. Neural Fitting
14. Полученные нейросети
Получить отклик от этих нейронных сетей из командного окна.
15. Получаем отклики от нейронных сетей
Таким образом, мы получим еще один индикатор, причем он должен быть идентичным предыдущему. Естественно, идентичным должен быть тест стратегии, построенной на его основе.
Если у нас все получится, то можно двигаться далее.
И протестировать эти НС с помощью скрипта модуля нейронной сети, который мы будем использовать в системе. Протестировать их на каком либо временном отрезке по контрольным точкам. Если этот тест совпадет с идентичным временным отрезком предыдущего теста индикатора, то мы движемся в правильном направлении. Мы запускаем этот скрипт в среде Matlab. Одновременно с этим запускаем наш рабочий эксперт в торговом терминале.
16. Запустим скрипт в рабочей среде Matlab
17. Запустим эксперт в терминале
Получим примерно такой результат.
18. Результат тестирования скрипта Matlab и эксперта MT4
Далее нам надо оформить интерфейс пользователя, скомпилировать модуль нейронной сети и протестировать его предыдущим способом.
19. Тестируем скомпилированный нейросетевой модуль
Если мы получим схожий с предыдущим результат, то можно приступать к реальной торговле по нашей нейросетевой системе.
5. Об обучающих выборках
В зависимости от того, на каких обучающих выборкам мы будем подготавливать нейронную сеть, мы получим различные индикаторы отклика сети. И, следовательно, сможем строить различные стратегии торгов. А комбинация различных стратегий даст нам более стабильный конечный результат. Один вариант я представил в предыдущих разделах. Там мы делали выборку по экстремумам торгового периода. Приведу еще один пример.
20. Индикатор откликов нейронной сети обученной по иной выборке
В данном случае я обучал две нейронные сети. Одну на покупку, вторую на продажу. Тренировку проводил на выборках, когда минимальная цена достигнута, а максимальная еще нет. И наоборот. В двух индикаторах, представленных на рисунке, интерпретированы двенадцать пользовательских индикаторов. Максимумы красной линии показывают, когда достигнута минимальная цена. Максимумы серой – максимальная цена. Как мы видим, теперь есть возможность оптимизировать данные индикаторы либо отдельно каждый или в паре. Например, по пересечению друг с другом, по разнице значений, по пересечению определенных уровней и т.д.
Согласитесь, что двенадцать индикаторов оптимизировать гораздо сложнее.
Заключение
На тему применения нейронных сетей в трейдинге написано много статей. Литературы, в которой бы полностью раскрывалась данная тема на предмет доведения системы построенной на нейронных сетях до реального ее применения, очень мало. Да и многие описания предназначены в основном для пользователей со специальными знаниями в программировании. В одной статье, да и в нескольких, данную тему раскрыть сложно. Но я попытался это сделать без нагромождения теоретического и специального материала в книге “Нейросетевая торговая система. MetaTrader 4 + MATLAB. Пошаговая разработка. Издание второе”.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Нейросетевые советники (на основе нейронной сети)
Открываю новую, нераскрытую до сих пор в полной мере тему: «Советники на основе нейронных сетей» или «нейросетевые советники«.
Давайте делиться результатами, нейросетевыми советниками, писать свой опыт создания нейросетевых советников, опыт обучения, тестирования и т.п.
- [*]_ http://articles.mql4.com/ru/770
[*]_ http://articles.mql4.com/ru/876
[*]_ http://codebase.mql4.com/755
[*]_ http://codebase.mql4.com/ru/756
[*]_ http://codebase.mql4.com/ru/2719
[*]_ http://codebase.mql4.com/ru/6288
[*]_ http://codebase.mql4.com/ru/8080
[*]_ http://reshetov.xnet.uz/
[*]_ http://ruforum.mt5.com/threads/15644-sovetnik-rnn
Для новичков: просьба не задавать глупых вопросов что это за советники, сначала почитайте статьи про них и сами что-то попробуйте сделать, потом пишите. С негативом просьба тут не шастать — если не получилось у вас, то у нас точно получится!
Опытым по данной теме — вэлкам.
Итак, поехали.
Sergey.77
Заблокирован
Здрасьте, приехали.
Все нейронные системы гральны только на истории, для неё они и созданы — забудьте про них.
e-partner
Местный знаток
Здрасьте, приехали.
Все нейронные системы гральны только на истории, для неё они и созданы — забудьте про них.
Я по-моему по поводу отрицательных отзывов писал. читайте выше. Не сбивайте людей с толку, это ваше мнение. Следующий!
Активный участник
Вложения
e-partner
Местный знаток
Нормуль! За полтора мес. — увеличение в 2+ раза.
Напиши где брал советник (или приложи — другим тоже интересно будет, а тебе: «+»), как именно помогаешь ручками, как обучал, какие результаты получал, с какими трудностями столкнулся?
Расскажи про свой опыт работы с нейросоветниками вообще.
Активный участник
Нормуль! За полтора мес. — увеличение в 2+ раза.
Напиши где брал советник (или приложи — другим тоже интересно будет, а тебе: «+»), как именно помогаешь ручками, как обучал, какие результаты получал, с какими трудностями столкнулся?
Расскажи про свой опыт работы с нейросоветниками вообще.
NeuroNirvamanEA. Нейронные сети в автоматической торговле на форекс.
Практически ежедневно можно слышать о различных открытиях, которые касаются искусственного интеллекта.
То лучший шахматист умудрился проиграть роботу, то Илон Маск вовсе заявил о том, что искусственный интеллект в будущем может стать причиной гибели человечества.
А недавняя история о том, как боты на основе искусственного интеллекта в Фейсбук создали свой язык и начали на нем общаться между собой.
Вы думаете, только высокий мир инноваций и информационных технологий применяет способности машин к обучению?
Торгуй по крупному только с ведущим брокером
Нет, в биржевой торговле уже на протяжении многих лет активно ведутся работы над созданиями советников, которые способны обучится торговать на бирже.
Конечно, степень их самостоятельности далека от желаемого, но тем не менее они есть и в этой статье вы познакомитесь с одним из них.
Советник NeuroNirvamanEA – это полностью автоматический торговый эксперт для торгового терминала МТ5, который построен на нейронных сетях, что позволяет его обучать торговле на финансовых рынках в том числе и форекс.
Особенностью NeuroNirvamanEA является тот факт, что он использует нейронную сеть не в качестве основы, а в качестве фильтра.
Если же выделить саму концепцию, то автор робота заложил в эксперт трендовую индикаторную стратегию, которая по понятным причинам приносит плохие результаты во флете.
Благодаря нейронной сети происходит обучение торговать трендовой стратегией во флете, а именно грамотно фильтровать убыточные ситуации.
Сам же советник вполне универсален, поскольку его можно применять абсолютно на всех валютных парах или тайм фреймах, однако это можно делать лишь в том случае если вы правильно оптимизируете настройки и обучите нейронную сеть.
Установка советника NeuroNirvamanEA
Для применения торгового робота NeuroNirvamanEA вам потребуется произвести установку. Стоит заметить что советник NeuroNirvamanEA был создан в 2018 году, более того он библиотеке разработчиков МТ5 что позволяет нам его применять совершенно бесплатно.
Также из-за того что робот был помещен в библиотеку доступно два способа установки.
Для того чтобы установить советник через библиотеку запустите ваш торговый терминал и переместите свой курсор мышки в панель «Инструменты», где находится актуальная информация по балансу.
Затем следующим шагом вам потребуется переместиться в «Библиотеку» и выполнить простую сортировку, теперь в списке появятся только советники.
В отсортированном списке найдите NeuroNirvamanEA и с помощью дополнительного меню как это показано на изображении ниже произведите загрузку:
Если у вас возникнут проблемы с установкой советника через библиотеку, произведите инсталляцию по стандартной схеме.
Для этого переместитесь в конец статьи и произведите скачивание файла робота вместе с индикаторами, после чего поместите их в соответствующие папки каталога данных терминала.
После установки советника обязательно произведите перезапуск торгового терминала, либо обновите его в панели навигатор, поскольку в противном случае робот не появится в списке советников.
Для того чтобы эксперт начал самостоятельную торговлю перетащите его название на график выбранной вами валютной пары.
Стратегия советника. Настройки
Как мы уже отмечали в самом начале статьи, советник NeuroNirvamanEA построен на трендовой стратегии с применение нейронной сети.
Так робот использует два индикатора, а именно Laguerre_PlusDi и SilverTrend_Signal. В качестве сигнального инструмента выступает SilverTrend_Signal, в то время как Laguerre_PlusDi служит лишь для подтверждения сигнала.
Советник не применяет мартингейла, а у каждой выставленной сделки присутствует стоп приказ и профит.
В настройках советника можно влиять как на саму стратегию, так и непосредственно на нейронную сеть, которую необходимо оптимизировать.
Так в переменной SilverTrend #1,2,3: RISK вы можете задать ключевой параметр для расчета данных индикатора SilverTrend Signal. Переменная Laguerre #1,2,3: Period позволяет изменять периоды индикатора Laguerre.
Переменные x11 и x12 отвечают за обучение нейросети. Переменные Take Profit и Stop Loss позволяют задавать профит и стоп приказ в пунктах для позиций.
Тестирование и оптимизация
Прежде чем приступить к использованию советника в реальном рынке автор настоятельно требует произвести обучение нейроных сетей советника путем оптимизации.
Стоит заметить, что в настройках советника присутствует три блока с одинаковыми переменными, но у каждой из них проставлены цифры 1,2,3. Оптимизацию каждого блока необходимо делать поочередно, а не одновременно.
Так в качестве эксперимента мы провели обучение нейронной сети советника за 2017 год на часовом тайм фрейме валютной пары Евро/Доллар. Результаты после обучения эксперта выглядят следующим образом:
В заключение стоит отметить, что NeuroNirvamanEA обладает огромным потенциалом и устойчивостью к переменам на рынке форекс, что обеспечивает нейронная сеть и способность к обучению.
Также представленный робот отлично подойдет трейдерам с небольшим капиталом, так как в роботе присутствует четкая фиксация рисков.
Предупреждение о рисках.
Начиная торговлю CFD на любом из финансовых рынков вы должны четко понимать, что такой вид деятельности может привести не только к прибыли, но и к убыткам.
Источник https://www.mql5.com/ru/articles/7031
Источник https://forexsystemsru.com/threads/nejrosetevye-sovetniki-na-osnove-nejronnoj-seti.68608/
Источник http://forexluck.ru/mt-5/neuronirvamanea