Создание нейросетевых торговых роботов на базе MQL5 Wizard и Hlaiman EA Generator

Нейросети и трейдинг. Практическая реализация

Мода на трейдинг переживает взлеты и падения вместе с курсом Биткоина. Многие за это время успели познакомиться с криптобиржами — вникали в тему, учились, трейдили, теряли деньги и даже иногда зарабатывали. В итоге, мода прошла, а опыт остался, пусть и негативный. Слова «лонг», «шорт», «спред», «дивер» можно услышать от тех, от кого уж точно этого не ожидаешь. Но не только торговля «руками» приковывала к себе внимание, есть еще торговые боты. Что у нас в этой области, о чем говорит опыт последних 2-3 лет?

К сожалению, в этой области нет ничего интересного. Инструментов для написания торговых ботов много, а стабильно профитных стратегий нет. В лучшем случае работающее решение нужно постоянно обслуживать парой трейдер-программист меняя настройки под текущий рынок. Стандартный результат после подключения полностью автономного бота к депозиту — слив депозита.

Остается последняя надежда — нейросети. Тут уж точно должно получиться, ведь нейросеть учится как человек и сама подстраивается под рынок. Как дела в этой области? Ну… вы уже догадались, ничего хорошего, разговоров много, а работающих решений нет. Яркий тому пример магазин приложений сообщества MQL5. За брендом MQL5 стоит профессиональная платформа для трейдинга — MetaTrader5 плюс огромное сообщество трейдеров и программистов. Так вот в этом магазине есть раздел для решений на основе нейросетей, там много ботов, но ни одного настоящего. Добавить туда бота использующего нейросети запрещено правилами. В это трудно поверить, но это так. Запрет на подключение внешнего API исключает возможность использования нейросетей, а встроенные в MQL5 средства на практике не работают. Этот вопрос я обсуждал с техподдержкой MQL5, внятного ответа так и не получил. В итоге, на рынке нет ничего реально работающего из коробки, выложенные на гитхабе решения из серии «обучи сам» в расчет не берутся.

Ладно, заканчиваю со вступлением, перехожу к делу. У меня получилось обучить нейросеть, есть стоящие внимания результаты на реальном рынке. Дальше опишу как это было сделано.

Первой и главной ошибкой всех, кто пытается обучать нейросеть торговле является трейдерское мышление о рынке. Обычно внедрить решение основанное на нейросетях пытается трейдер в паре с программистом которые до этого писали ботов. Алгоритм торгового бота решает задачу поиска правильной точки входа в позицию и определения «тейка» и «стопа». Если эту задачу иметь в голове при проектировании нейросети, то ничего не получится. Можно бесконечно перебирать хитроумные варианты входных данных, подавать или не подавать индикаторы, пробовать разные типы нейросетей, подставлять костыли ввиде обучения только на определенных участках или обучать показывая только известные паттерны. Работать не будет.

С нейросетью надо как с ребенком, смотреть на мир ее глазами и начинать с простых задач. Самый простой вопрос который можно задать — «куда пойдет цена через Х свечей, вверх или вниз?». Не важно на сколько сильно изменится цена и не важно, что ответ потом нельзя будет превратить в торговую стратегию. Забываем про торговлю, сейчас главная задача хоть чему-то обучить сеть, просто получить правильный ответ.

У меня эта начальная задача решилась после 100500 подборов входных данных. Использовал TensoFlow плюс Keras, сеть Sequental Dense. Входной датасет на 200-300 тыс примеров, входной вектор 250-350 фичь. Из поставленного сети вопроса вытекает и форма ответа — бинарная классификация «вверх» или «вниз». Входные данные готовил ботом на MQL5. Бот пробегая историю формирует обычный csv фаил, каждая строка — вектор. В конце каждого вектора правильный ответ ввиде 1:0 если вверх, 0:1 если вниз.

Вот несколько советов тем, кто попробует это сделать:

  1. Хорошо обучается в пределах прогноза от 15 минут до 60 минут. На меньшем периоде растет хаотичность движения цены, на большем увеличивается внешнее влияние — новости и прочее, 15-60 минут самая «техничная» зона.
  2. Лучше всего обучение проходит на BTCUSD, второе место у EURUSD.
  3. Не забивайте голову вопросами типа «а что если цена не изменилась? тогда это третий вариант ответа?». При сборе данных я просто не включал их в датасет, задачу надо упрощать.
  4. При прогоне на тестовом участке ответы сети на первый взгляд будут казаться хаотичными с практически случайным, приближающимся к 50% уровнем результативности. Это серьезная проблема, ниже поясню как я ее решил.

Используя такой подход получил следующий результат:
примерно в 2% ответов сеть угадывает дальнейшее движение в соотношении 2 правильных ответа к 1 неправильному. При тесте на реальном рынке именно так и получается, но возникает другая проблема. У нас ведь всего 2% вопросов имеют ответ, остальное игнорируем. Т.е. запускаем нейро на реальном рынке на таймфрейме 5 минут и ждем… при 2% — это только каждая 50ая свеча будет с ответом, один ответ за 4 часа! И что с этим делать? Ладно если бы ответ был «купи/продай», тогда 6 сделок в сутки нормально, а тут абстрактные «вверх/вниз» и то неточно, полное разочарование.

В итоге, решил эту проблему относительно легко — просто каждые 5 мин надо опрашивать не одну модель, а несколько. Модели обучаются на разных входных данных и, соответственно, обучаются разным паттернам. На практике так и получается, модели сигналят на разных свечах, вместе активируясь только в очевидных, предсказуемых местах и друг друга не перекрывают.

Подведем итог, теперь есть нечто, что можно запустить на реальном рынке и иметь сигналы «вверх/вниз» со средней отработкой. Уже веселее, но практического толку по-прежнему ноль.

Пара слов о реализации. У меня это работало на связке MQL5 плюс Keras. Бот запущенный в MetaTrader5 на каждой свече готовил данные для нейросети и через сокеты передавал скрипту на питоне, который по очереди опрашивал все модели и при прохождении ответом допустимого порога отправлял сигнал в Телеграм канал (UPDATE: сейчас уже есть работающее приложение для MetaTrade5).

Итак, схема работает, но применить нельзя. Сложить сигналы в какую-то стратегию не получалось. Главный недостаток — дискретность ответов. Ответ — это событие на которое надо как то реагировать — смотреть на рыночную ситуацию, думать права сеть или нет и т.д. На одной свече одна модель могла сигналить вверх, а другая вниз и какой верить? В итоге, родилась идея отказаться от порога прохождения ответа, а начать уважать каждый ответ сети, пусть и с низкой степенью уверенности. Если начать усреднять все ответы в единое общее мнение и это считать ответом сети, то ответ становится совершенно другого качества. В этом случае начинают складываться знания всех моделей, а это огромный объем совместного обучения.

Долго ли, коротко ли, но после всех переделок стал получать единые ответы нейросети на каждой свече выраженные в процентах ожидаемой отаботки от -100% до +100%. Знак отражает ожидаемое направление движения «вверх/вниз». Стало видно, что теперь смысл есть в каждом ответе. Оно работает! Я сам имею опыт трейдинга и видел как поведение сети на глазах становилось осмысленным. Иногда ее логика была понятна иногда нет, но всегда за ее ответами чувствовалось какое то свое, часто парадоксальное, видение рынка. В добавок к этому, выяснилось, что чем выше уверенность сети тем ближе к нужному сроку ожидаемая отработка и наоборот. Низкая уверенность как бы говорила «что будет через 15 минут не знаю, но общий тренд вверх».

С этого места, я понял, что пытаться все это формализовать в сигналы «купи/продай» это как микроскопом забивать гвозди. Нужен был какой то инструмент для визуализации сигналов нейросети — графического отображения на каждой свече уровня «уверенности». Широкий набор инструментов MQL5 позволил все это собрать в «Эксперт» для MetaTrader5. «Эксперт» через API получает ответы нейросети и занимается только отрисовкой. Вот пример его работы на BTCUSD M1:

нейросети и трейдинг

Цветная область вверху — прогноз «вниз», область внизу — прогноз «вверх», толщина — степень уверенности.

На данном этапе качество прогноза не имеет значения, важно, что нейросеть демонстрирует вполне адекватное мнение о рыночной ситуации. Еще больше прокачать сеть всегда можно, главное, что это работает!

В итоге, на сегодняшний день есть Expert к MetaTrader5 с двумя видами прогнозов — кроткосрочным и долгосрочным. Постепенно накапливается статистика, есть обратная связь с трейдерами. Полученный результат вдохновляет на дальнейшую работу, теперь надо подбираться к заветным «buy/sell» командам. Сделать это можно существенно увеличив качество прогноза. Дальше вижу такой путь развития:

  1. Надо подготовить еще десяток прогнозов в промежутке между 15 и 60 минутами. Т.е. начать предсказывать «вверх/вниз» для 20, 25, 30, 35 минут и так до 60. Каждый прогноз, напомню, строится из ответов примерно 20 моделей.
  2. Имея такой объем информации на каждой минутной свече, можно и нужно анализировать ее другой нейросетью. Связь прогнозов между собой на разных временных отрезках может оказаться совсем нетривиальной, поэтому нейросеть тут будет уместна.
  3. Датасет для этой нейросети не будет так зашумнен как у ее младших товарищей, поэтому ее надо обучать не банальному «вверх/вниз», а предсказанию силы движения актива, а это уже прямой выход на «buy/sell».

Продолжение статьи здесь и здесь.
Приложение с работающей нейросетью тут.

Создание нейросетевых торговых роботов на базе MQL5 Wizard и Hlaiman EA Generator

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

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

Для этого будет описан метод автоматической генерации нейросетевых советников-роботов MetaTrader 5 на базе MQL5 Wizard и Hlaiman EA Generator.

Выбор средств для решения поставленной задачи не случаен:

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

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

Общая характеристика

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

Кратко о средствах решения задачи. В отличие от Hlaiman, MQL5 Wizard — неоднократно освещался в статьях и документации, он, как и MetaTrader 5, в презентации не нуждается. Социально ориентированный проект Hlaiman предназначен для разработки и продвижения многопрофильного модульного программного обеспечения в виде плагинов, одним из которых и является EA Generator. Функционально, как уже указывалось выше, EA Generator представляет из себя нейросетевой движок и средства интеграции.

В состав Hlaiman EA Generator входит оболочка , которая представляет собой Windows GUI приложение с мультидокументным интерфейсом и плагины в виде динамически загружаемых компонентных библиотек. Система предоставляет широкий набор ручных и алгоритмических методов настройки и управления компонентами, как загружаемыми в составе плагинов, так и базовыми. В процессе ее работы можно создавать сложные древовидные структуры объектов и гибко управлять их методами и свойствами, как при помощи ручного диалога (Object Inspector), так и при помощи программных средств автоматизации, например скриптов.

Для интеграции Hlaiman EA Generator в MQL5 используется скриптовый интерпретатор Object Pascal, передача исходного кода осуществляется по именованным каналам Named Pipes, а в качестве главного нейросетевого компонента применяется многослойный персептрон MLP.

Интеграция Hlaiman EA Generator в MQL5 Wizard выполняется посредством модуля библиотеки сигналов SignalHNN.mqh. После автоматической генерации советники могут быть обучены торговле на любом количестве инструментов и таймфреймов. Для этого в терминале МetaТrader 5 можно вручную наносить на график цены графические объекты стрелок, указывающие на сигналы, или использовать скрипт TeachHNN.mq5 для автоматического нанесения, который так же автоматически запускает процесс обучения советника.

На этом теоретическое описание заканчивается и начинается практическая часть, которая состоит из двух разделов, а именно — «Как это работает» и «Как это устроено».

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

Как это работает

В MQL5.community, наверное, излишне напоминать, что для работы необходим терминал MetaТrader 5. Если он у вас не установлен — то скачайте и установите его. Также скачайте и установите демо-версию пакета Hlaiman EA Generator.

Запустите терминал МetaТrader 5 и MetaEditor. Войдите в мастер создания советников MQL5. Мастер MQL5 может быть вызван с помощью команды «Создать» в меню «Файл» или панели инструментов «Стандартная», а также при помощи горячих клавиш «Ctrl+N».

В окне мастера MQL5 выберите пункт «Советник (сгенерировать)» и нажмите «Далее».

Рис. 1. Создание советника в Мастере MQL5

Рис. 1. Создание советника в Мастере MQL5

Введите путь и имя советника, например «ExpertsSampleHNN», и нажмите «Далее».

Рис. 2. Общие параметры советника

Рис. 2. Общие параметры советника

Нажмите кнопку «Добавить». В появившемся окне «Параметры модуля сигналов» выберите модуль сигналов «Signals of patterns Hlaiman Neural Network EA generator» из выпадающего списка и нажмите «OK».

Рис. 3. Выбор модуля торговых сигналов Hlaiman Neural Network EA generator

Рис. 3. Выбор модуля торговых сигналов Hlaiman Neural Network EA generator

В самом простом случае реализации на оставшихся этапах мастера MQL5 можете нажимать «Далее». При необходимости вы также можете выбрать дополнительные опции советника.

По завершению процесса генерации кода нажмите кнопку «Компилировать» и закройте окно «MetaEditor». Созданный советник будет отображен в разделе «Советники» на панели «Навигатор» терминала МetaТrader 5.

Рис. 4. Советник SampleHNN

Рис. 4. Советник SampleHNN

Прежде чем приступить к обучению созданного советника, необходимо открыть в терминале график с требуемым символом и таймфреймом. Приложение Hlaiman EA Generator обязательно должно быть запущено.

Рис. 5. Подготовка к обучению нейросети

Рис. 5. Подготовка к обучению нейросети

Для обучения советника, на панели терминала «Навигатор» в разделе «Скрипты», выберите «TeachHNN» и активируйте его для выбранного графика.

Скрипт «TeachHNN», перед запуском должен быть соответствующим образом настроен. Для этого у него имеются следующие параметры:

  • Document name — наименование советника для обучения;
  • Neural layers — количество слоев в нейросети;
  • Middle neurons — количество нейронов;
  • Teaching epochs — количество эпох обучения;
  • Pattern bars — количество баров в паттерне;
  • Teaching a net? — запустить обучение нейросети (или просто создание сигналов);
  • SignalsCreate — автоматически создать графические изображения сигналов;
  • SignalsBarPoints — порог для создания сигнала в количестве пунктов;
  • SignalsBarsCount — количество баров для подсчета количества пунктов;
  • SignalsStartTime, SignalsEndTime — время начала и конца периода для создания сигналов;
  • SignalsClear — автоматически удалять изображения сигналов по завершению обучения.

Рис. 6. Параметры скрипта TeachHNN

Рис. 6. Параметры скрипта TeachHNN

Если все готово, жмите «OK» для запуска процесса обучения советника. Начнется автоматическое формирование графических паттернов по каждому из имеющихся на графике сигналов.

Информация об этом отображается в журнале «Эксперты» на панели «Инструменты» терминала, а в окне Hlaiman EA Generator появляются соответствующие объекты.

После завершения формирования паттернов начинается непосредственное обучение нейросети. Об этом сигнализирует появляющаяся на экране панель хода обучения.

Обучение Hlaiman EA Generator

Рис. 7. Панель процесса обучения

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

Сообщение об окончании обучения и работы скрипта будет отражено в журнале на вкладке «Эксперты». Например сообщение «Neural net create success! On 431 patterns» свидетельствует об успешном завершении обучения советника с использованием 431-го сигнала.

По сообщениям можно определить, сколько и какие номера паттернов участвовали в обучении. В частности, BUY и SELL определяются по сообщениям типа «Sell signal detected at pattern #211».

Журнал обучения Hlaiman EA Generator

Рис. 8. Сообщения скрипта TeachHNN в процессе обучения

Причины, по которым процесс обучения советника может запускается с ошибкой:

  1. Предварительно не была запущена программа Hlaiman. В этом случае будет отображено сообщение «CSignalHNN::InitHNN: Error! initializing pipe server (possible reason: HLAIMAN APPLICATION IS NOT RUNNING!)».
  2. Отсутствие стрелок, обозначающих сигналы на графике, при отключенной автогенерации сигналов (переменная SignalsCreate = false). В этом случае будет отображено сообщение «OnStart: error, orders arrow not found!». При включенной автогенерации сигналов (переменная SignalsCreate = true) ошибку может вызывать наличие на графике других графических объектов, так как в программе предполагается не портить пользовательские разметки. Поэтому для автогенерации сигналов рекомендуется открывать все графики отдельно.

После обучения советника можно просмотреть его результаты. Для этого вам необходимо перейти в GUI Hlaiman и выбрать соответствующие объекты и панели визуализации.

Рис. 9. Вкладка

Рис. 9. Вкладка «Text» программы Hlaiman

Рис. 10. Вкладка

Рис. 10. Вкладка «Graph» программы Hlaiman

После успешного обучения советника хотя бы на одном из торговых инструментов можно приступать к его тестированию и/или оптимизации.

Для этого выберите в тестере имя обученного советника, символ, таймфрейм, интервал и другие параметры тестирования. При необходимости выполните настройку внешних переменных и запустите тест.

Рис. 11. Настройки тестирования советника SampleHNN на исторических данных

Рис. 11. Настройки тестирования советника SampleHNN на исторических данных

Рис. 12. Внешние переменные советника SampleHNN могут быть изменены

Рис. 12. Внешние переменные советника SampleHNN могут быть модифицированы

Ниже приведен пример отчета по работе советника в тестере стратегий. Советник был обучен по автоматически сгенерированным сигналам, все внешние параметры обучающего скрипта выставлены по умолчанию, период обучения — 01.01.2010-01.07.2013 по инструменту EURUSD H4.

Отчет Тестера стратегий

Советник:SampleHNN
Символ:EURUSD
Период:H4 (2010.01.01-2013.07.12)
Валюта:USD
Начальный депозит:10 000.00
Плечо:0,111111111
Бэктест
Качество истории:100%
Бары:5497
Чистая прибыль:9 159.58
Общая прибыль:29 735.97
Общий убыток:-20 576.39
Прибыльность:1.45
Фактор восстановления:12.81
AHPR:1.0005 (0.05%)
GHPR:1.0005 (0.05%)
Всего трейдов:1417
Всего сделок:2246
Тики:60211228
Абсолютная просадка по балансу:0.00
Максимальная просадка по балансу:679.98 (3.81%)
Относительная просадка по балансу:4.00% (715.08)
Матожидание выигрыша:6.46
Коэффициент Шарпа:0.16
LR Correlation:0.98
LR Standard Error:595.06
Короткие трейды (% выигравших):703 (56.61%)
Прибыльные трейды (% от всех):793 (55.96%)
Самый большой прибыльный трейд:53.00
Средний прибыльный трейд:37.50
Максимальное количество непрерывных выигрышей:9 (450.38)
Максимальная непрерывная прибыль:450.38 (9)
Средний непрерывный выигрыш:2
Символы:1
Абсолютная просадка по средствам:6.60
Максимальная просадка по средствам:715.08 (4.00%)
Относительная просадка по средствам:4.00% (715.08)
Уровень маржи:6929.24%
Z-Счет:-1.24 (78.50%)
Результат OnTester:0
Длинные трейды (% выигравших):714 (55.32%)
Убыточные трейды (% от всех):624 (44.04%)
Самый большой убыточный трейд:-53.30
Средний убыточный трейд:-32.97
Максимальное количество непрерывных проигрышей:9 (-234.00)
Максимальный непрерывный убыток:-276.67 (7)
Средний непрерывный проигрыш:2

Рис. 13. Результаты тестирования советника SampleHNN на исторических данных

Рис. 13. Результаты тестирования советника SampleHNN на исторических данных

Рис. 14. Статистика входов советника SampleHNN

Рис. 14. Статистика входов советника SampleHNN

Рис. 15. Корреляция прибыли и MFE/MAE советника SampleHNN

Рис. 15. Корреляция прибыли и MFE/MAE советника SampleHNN

Рис. 16. Статистика времени удержания позиции советника SampleHNN

Рис. 16. Статистика времени удержания позиции советника SampleHNN

Как это устроено

Главным компонентом программной реализации на MQL5 является класс CSignalHNN, описанный в модуле сигналов SignalHNN.mqh. Класс наследован от базового класса CExpertSignal и включает в себя все необходимые поля данных и методы для работы и интеграции Hlaiman, а также для работы с советниками, создаваемыми с помощью мастера MQL5.

Шаблон класса выглядит следующим образом:

После создания экземпляра класса с помощью конструктора этот объект может работать в двух основных режимах:

  1. Режим обучения: в этом режиме происходит сбор рыночных паттернов и обучение нейросети.
  2. Режим индикатора: в данном режиме по текущему паттерну рассчитывается сигнал нейросети.

Идентификация режима происходит при вызове метода инициализации InitHNN посредством булевского параметра openn. Причем истинное значение этого параметра инициирует поиск и открытие файла данных уже обученной нейросети, его загрузку и работу в режиме индикатора (2). Этот режим является рабочим и используется в советнике для торговли.

В отличие от режима обучения (1), который инициируется при вызове метода InitHNN с параметром openn=false, этот режим индикатора является для советника подготовительным и используется для работы обучающего скрипта.

Реализация метода инициализации выглядит следующим образом:

Как видно из кода, на первом шаге инициализации делается попытка открыть именованный канал для установки связи с приложением Hlaiman. Если это не удается (например, когда не запущен), то осуществляется выход с отрицательным статусом. На втором шаге (при удачном завершении первого и рабочем режиме индикатора) происходит просмотр локальных и общих папок терминала с целью поиска соответствующего имени файла с данными нейросети. На третьем шаге выполняется подготовка текста кода на языке ObjectPascal (Delphi) для инициализации непосредственно в приложении Hlaiman.

Текст кода помещается в строку source. Для удобства форматирования он разбит с помощью перевода каретки «nr» на подстроки и содержит обращения к свойствам и методам объектов Hlaiman (см. комментарии). Объектная среда MetaTrader 5 Hlaiman плагина, как определено в тексте, построена в иерархическую древовидную структуру, в корне которой находится объект самого плагина.

На следующем уровне находится объект терминала МetaТrader 5, затем — объекты советников и символов. При удачной трансляции и выполнении исходного кода, переданного по именованному каналу, в возвращаемом значении Result будет получено количество элементов входного вектора нейросети. Это значение, как видно из кода, используется для инициализации массива паттерна, и выполнение метода завершается с положительным статусом.

Следующими ключевыми методами класса CSignalHNN являются CalculateHNN, AddPattern и TeachHNN, первый из которых возвращает результат расчета нейросети в режиме индикатора. Вторые два используются в режиме обучения для пополнения коллекции при сборе паттернов и запуске процесса обучения нейросети соответственно.

Реализация указанных методов в файле выглядит следующим образом:

Как видно из кода, тело методов в основном состоит из строк source, текст которых построен аналогично тем, что рассмотрены выше при описании метода InitHNN. Отличие состоит в том, что в объектной иерархии плагина для олицетворения паттернов добавлены два уровня — ордер и тик. Кроме того, в коде используются дополнительные свойства и методы объектов. Так для запуска расчета нейросети взводится флаг Computed объекта «символ», а для запуска обучения — флаг Teached.

Отличием в CalculateHNN от других методов является также тип возвращаемого функцией main значения — теперь он double. Это значение как раз и является откликом нейросети — сигналом, где в диапазоне 0..1 находится уровень BUY, а в диапазоне 0..-1 — уровень SELL. Контроль этого сигнала, который используется советником для принятия решений об открытии или закрытии соответствующих торговых позиций, осуществляется посредством метода Direction. Он отвечает за пересчет при появлении нового бара и возвращает его значение в процентном выражении.

Для настройки порога чувствительности советника к сигналам на открытие и закрытие торговых позиций предназначены соответствующие внешние переменные:

  • input int Signal_ThresholdOpen =10; // Signal threshold value to open [0. 100]
  • input int Signal_ThresholdClose=10; // Signal threshold value to close [0. 100]

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

Выводы

Использование Hlaiman EA Generator предоставляет компоненты и прозрачную контролируемую объектную среду интеграции в MQL5, при этом:

  1. В интерфейсе MQL5 Wizard появляется дополнительный тип, основанный на распознавании паттернов и сигналов, а также возможность генерации нейросетевых советников-роботов.
  2. Быстро создаваемые нейросетевые советники так же быстро могут быть адаптированы к изменениям рынка и многократно подвергаться обучению на различных торговых инструментах и таймфреймах.
  3. Благодаря возможности MQL5 Wizard подключать несколько модулей сигналов, можно создавать сложные мультивалютные нейросетевые советники иили комбинированные индикаторно-нейросетевые советник. Также их можно комбинировать с различными дополнительными фильтрами, например, временными.
  4. Наконец, сам нейросетевой модуль можно использовать в качестве дополнительного фильтра для повышения эффективности уже готового рабочего советника. Для этого служит возможность обучения нейросети на графиках визуализации результатов теста исходного советника.

Одним из недостатков предложенной реализации можно считать использование скриптового интерпретатора, из-за чего интегрированная вычислительная система может показаться недостаточно быстродействующей. Однако нужно заметить, что во-первых, интерпретация скриптового кода, как и работа Hlaiman плагина, выполняется асинхронно с EX5, то есть выполняется распараллеливание задач. Во-вторых, для повышения быстродействия емких по времени вычислений, например, больших нейросетей, MetaTrader 5 и Hlaiman можно запускать на различных компьютерах со связью через сетевые именованные каналы. Причем запуск торгового терминала на отдельном компьютере в дополнение к увеличению быстродействия может повысить и его безопасность.

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

Ознакомительную версию программы Hlaiman EA Generator можно скачать по ссылке.

Нейросети на Форекс – кто их использует и есть ли в них смысл?

В современном мире все глубже в нашу жизнь проникают искусственный интеллект, самообучаемые голосовые помощники и анализ Big Data. Простые люди сталкиваются с этим чаще всего в формате приложений для смартфонов, но факт остается фактом – нейросети, или же самообучаемые компьютерные системы уже повсюду, даже если мы их не видим.

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

Многие из нас постоянно находятся в поиске новых стратегий и тактик торговли на рынке Форекс. Каждая найденная система подвергается тестированию на историческом периоде различной длины. В идеале тестирование должно выявить такие паттерны, которые работали бы на достаточно длительном промежутке времени.

В реальности это нерешаемая задача – торговые системы «сливают», проработав от трех месяцев до нескольких лет. Продлить «срок службы» помогает оптимизация, но в конечном итоге приходится искать другой подход к рынку Форекс.

Феномену выхода из строя стратегий Форекс дают много объяснений, но стоит обратить особое внимание на одну из причин, способную со временем свести на нет все старания заработать на валютных спекуляциях, – эволюцию нейросетей. Что это такое, и как искусственный интеллект может повлиять на трейдинг, – в нашем сегодняшнем материале.

Когда заработки на Форекс были большими

Многие трейдеры, охватывающие прогонами тестов всю историю валютных торгов, с начала 90-х до настоящего момента, часто замечают падение производительности стратегий на отрезках 2001-2008 и 2013 годов. Они связывают выход из строя торговых систем с экономическими кризисами, но это лишь одна из причин, причем далеко не самая важная.

Рынок Форекс девяностых годов буквально «раздавал» деньги первым участникам торгов, установившим торговые терминалы, подключившись к сети Интернет, и использующим достаточно простые тактики, описанные в книгах трейдеров восьмидесятых. Заработку не мешали даже временные лаги, баги платформ, большие спреды, низкая скорость подключения ко Всемирной Паутине.

Борьба за пинг и низкие комиссии брокеров началась в 2001 году, когда на рынке стали массово появляться роботы и скальперские стратегии, изменившие форму трендов. Развитие робототехники заставило маркет мейкеров больше полагаться на анализ потока ордеров клиентов, «охотиться за стопами», применять различные уловки, управляя толпой с помощью автоматизированных стратегий.

Трейдеры ответили тем же: торговые платформы XXI века стали анализировать потоки ордеров фьючерсов и Открытый Интерес опционов, объемы торгов сопоставлялись со свечным анализом (VSA), на рынке «прописались» программисты и математики, создавшие множество разнообразных советников.

В 2008 году стратегии вышли за пределы булевой математики: рынок стал осваивать нелинейные индикаторы и эконометрику, которые уже было невозможно «повторить» в стандартных торговых терминалах. Негласные рейтинги брокеров Форекс зафиксировали в этот момент падение результативности у клиентов.

Новые подходы пока не получили широкого распространения в среде трейдеров из-за специфики темы эконометрики, а также сложности и дороговизны использования аналитических программ. Однако в 2013 году появилась еще одна «беда»: на рынке Форекс начал активно развиваться искусственный интеллект, который может практически не оставить возможностей для ручного и автоматического заработка.

Что такое нейросеть простыми словами

Тема нейросетей «выстрелила» в 2011 году, и за 8 лет она проникла во все сферы. Сейчас никого не удивить голосовыми помощниками, управляющими «умными домами», распознаванием лиц и т.д.

Во втором десятилетии XXI века нейросеть средней сложности обыгрывает гроссмейстеров в шахматы, а искусственный интеллект высшего порядка способен решать сложные логические задачи. Ярким примером возможностей ИИ является титул чемпиона по китайским шашкам Го у нейроробота Google.

За этим развитием стоит почти вековая эволюция: мало кто знает, что первой созданной нейросети скоро исполнится 80 лет. Благодаря Уоррену Маккалоку и Уолтеру Питтсу ученые стали работать над созданием вычислений, подобных работе нейрона человеческого мозга.

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

Ответы предоставляет человек, – это называется процессом обучения сети, который является обязательным этапом на пути создания нейросети. Выходной нейрон должен стремиться выстроить процесс вычислений среди нейронов таким образом, чтобы при получении различных выходных данных находить показанные ему человеком результаты.

Настройка или “тренировка” сети перед ее запуском очень похожа на тестирование стратегий, – сеть раз за разом запускает вычисления и выделяет с помощью весовых коэффициентов наиболее значимые для правильного ответа алгоритмы. Пользователь определяет работу искусственного интеллекта по математическому отчету погрешностей.

Так же, как и в стратегии Форекс, когда нейросеть начинает выдавать раз за разом удовлетворительный результат, запускается форвард-тест на реальных, но уже прошедших событиях с известным исходом. Если сеть проходит эти испытания, она принимается в работу. При этом никогда не известно до конца, чему именно и как научится искусственный интеллект: результат и сам процесс работы алгоритмов нейронов внутри – это «черный ящик».

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

Нейроны заполняют поле любого фото крестиками размером в пиксель, с помощью анализа которых обнаруживаются границы изображения. После удаления размытых областей начинается подсчет по диагонали и горизонтали. Оказывается, при таком «измерении лица» получаются уникальные суммы, соответствующие конкретному человеку, если соблюдать масштаб и пропорции, которые определить не сложно.

Другой курьезный случай, часто вспоминаемый при обучении нейросети, – попытка американских военных научить беспилотники обнаруживать военную технику, распознавая ее тип с воздуха. Многочисленный показ снятых в различных условиях самолетов, танков, орудий и вертолетов, привел к тому, что ИИ стал идеально определять погодные условия, но так и не научился искать технику.

Чем опасно применение искусственного интеллекта на рынке Форекс?

Нейросеть изменит валютные спекуляции, брокеры могут вернуться к тактике, чем-то похожей на «кухни», только в глобальном масштабе. Фактически безграничные возможности нейросетей можно применять против толпы, прогнозируя не курсы валют, а модель поведения каждого отдельного трейдера. Маркет мейкеры и прайм-брокеры смогут подбирать контрстратегии, охотясь за стопами, расширяя спреды в момент вывода заявок на рынки, выставлять фантомные объемы в стаканах с опережением, а не по факту.

Спроектированная и запущенная стартапом Sentinent Technologies нейросеть уже может эмулировать 1800 рабочих сессий, прогнозируя с высокой точностью до триллиона (!) когнитивных моделей поведения реальных трейдеров. Система тренировалась на потоках ордеров, взятых из книги заявок бирж и серверов брокеров.

Качество и количество данных – залог успешной тренировки нейросетей; архивы тиковых сделок, разбитые по конкретным счетам, – самый ходовой товар на рынке дата-майнинга. Этим термином названа отдельная отрасль, добывающая, анализирующая и форматирующая первичную входную информацию для нейросети.

Другой столп, определяющий успех работы системы, – количество нейронов в «черном ящике». Чем оно выше, тем больше требуется вычислительных мощностей, которые вышли за рамки стандартных процессоров CPU. Проектировщики и создатели нейросетей используют чипы, изготовленные под заказ на специальных интегральных схемах. Идея взята у майнеров криптовалют, добывающих Bitcoin и другие монеты на ASIC-оборудовании.

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

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

Марк Линд из отдела компании IBM, проектирующего и запускающего нейросети по корпоративным заказам, особо отметил «нейробум» в конце 2017 года. Более 90% поднятых IT-гигантом сетей в отрасли экономики относились к прогнозированию курсов валютных и биржевых рынков.

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

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

Искусственный интеллект в крупных инвестиционных фондах и банках

Одной из первых компаний, применивших искусственный интеллект для прогноза рыночных движений, стала Renaissance Technologies – компания, управляемая талантливыми математиками, принципиально нанимающими сотрудников с нулевыми знаниями трейдинга и теханализа.

Компания отличается низкой текучестью кадров, которые смогли создать полностью роботизированный фонд Medallion, показавший среднюю доходность 35% годовых за 20 лет управления инвестициями.

Самая радикальная замена трейдеров искусственным интеллектом произошла в Goldman Sachs, – «кузница кадров для Госдепа» сократила штат на 99%.

Известная всему миру инвестиционная компания BlackRock доверила нейросети Aladdin до 10% от всех портфелей и проводит тотальный аудит всех принятых решений аналитиками компаний. Такое решение было принято после падения доходов в 2018 году. Фонд отметил успехи конкурентов из Азии, где сейчас проходит нейробум в сфере инвестиций, на бирже Гонконга уже несколько лет успешно работает Aidyia Limited – хедж-фонд под полным управлением ИИ.

Как искусственный интеллект меняет доверительное управление?

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

Подобные помощники разрабатываются для BlackRock стартапом FutureAdvisor, тестируются Motif Investing в партнерстве с JPMorgan и создаются UBS на базе SigFig.

Согласно исследованиям и опросам McKinsey, фокус группы инвесторов, следующих советам нейроконсультантов, опережает средний результат по рынку доверительного управления «живых» аналитиков на 7% годовых.

Помимо роботов от банков и крупных брокеров, на рынке финуслуг появилось отдельное направление по созданию нейростратегий «под ключ», например, Binatix. А также целая сфера услуг дата-майнинга – предоставление информации для нейросетей, отформатированных под любой конкретный рынок, как в случае со стартапом BUZZ Indexes.

На российском рынке нейросети использует компания БКС, управляя портфелями акций. Роботы приносят инвесторам от 30 до 70% доходности, обгоняя по результативности бенчмарк в виде курса S&P.

Роботы-консультанты, спроектированные на нейросетях, запущены в инвестиционных сервисах Яндекс.Деньги (Yammi) и банка Тинькофф. Заявленная и прогнозируемая доходность инвестиций составляет двузначную цифру. Ее трудно верифицировать из-за малого срока работы платформ, составляющих чуть больше года.

Как создать собственную нейросеть?

Прогнозирование валютного рынка Форекс с помощью искусственного интеллекта доступно «простым смертным». Нейросети участвуют в различных чемпионатах по алгоритмическому трейдингу, проводимых международными ассоциациями брокеров с 2008 года.

Собрать собственную стратегию можно на специализированных платформах: neuroshell, matlab, statistica, deductor или brainmaker. Трейдеры со знанием языка программирования могут воспользоваться специальными сервисами от Google, Microsoft, Amazon и т.д.

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

Заключение

Первая волна интереса к нейросетям накрыла Форекс в 2006-2008 годах. Экономический кризис и недостаток входных данных значительно уменьшил ряды энтузиастов. Трейдеры и компании так и не смогли показать долгосрочных стабильных результатов, которые бы могли оправдать высокую стоимость торговых платформ на нейросетях. Вторая волна, стартовавшая в 2011-2012 годах, привела к выпуску готовых продуктов в 2016-2018 годах, которые еще не успели показать объективные для оценки результаты.

Компании, рекламирующие нейроэдвайзеров, и фонды, управляемые нейросетью, скрывают графики доходности; многие ПАММ-счета, запущенные в Альпари на нейросетях, слиты к моменту написания статьи.

Учитывая скудное или даже полное отсутствие результатов доходности по нейросетям (на весь сервис myfxbook пять систем, 4 из которых уже закрыты), наряду с успехами искусственного интеллекта в других областях можно предположить, что эта тема пока используется только крупными брокерами и биржами.

Источник https://habr.com/ru/post/494964/

Источник https://www.mql5.com/ru/articles/706

Источник https://tlap.com/nejroseti-na-forex/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: