Нейросетевой советник

Нейросетевой советник

Открытие торгового счета Форекс

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

На рынке «Форекс» по-прежнему существуют свои алгоритмы. Как раз нейронные сети и смогут позволить еще ближе подойти к их пониманию.

Стоит ли скачать нейросетевого робота?

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

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

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

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

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

Base — true пишем файл с базой векторов, false торгуем с классификацией. Обязательно сначала нужно протестировать эксперта с Base = true, и только потом тестировать с Base = false.
buy_threshold = 0.6 порог на все Buy позиции. Если вероятность покупки выше этого порога, то эксперт покупает. Этот параметр относится к тестированию с Base = false.
sell_threshold = 0.6 аналогично параметру buy_threshold.
inverse_position_open_? = true — Если вероятность сделки на покупку очень мала то значит вероятность продажи очень велика. Этот параметр позволяет открывать сделки когда возникают такие ситуации.
invers_buy_threshold=0.3 порог, когда вероятность прибыльной Buy позиции меньше то входим на Sell
invers_sell_threshold=0.3 аналогично invers_buy_threshold.

График тестирования без применения метода k-ближайших соседей

NeuroNirvamanEA. Нейронные сети в автоматической торговле на форекс.

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

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

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

Вы думаете, только высокий мир инноваций и информационных технологий применяет способности машин к обучению?

Читать статью Лучшие советники для MetaTrader 4 по рейтингу пользователей — 3

Торгуй по крупному только с ведущим брокером

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

Конечно, степень их самостоятельности далека от желаемого, но тем не менее они есть и в этой статье вы познакомитесь с одним из них.

Советник 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.

Читать статью Советник Setka – безопасный сеточный робот

Переменные x11 и x12 отвечают за обучение нейросети. Переменные Take Profit и Stop Loss позволяют задавать профит и стоп приказ в пунктах для позиций.

Тестирование и оптимизация

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

Стоит заметить, что в настройках советника присутствует три блока с одинаковыми переменными, но у каждой из них проставлены цифры 1,2,3. Оптимизацию каждого блока необходимо делать поочередно, а не одновременно.

Так в качестве эксперимента мы провели обучение нейронной сети советника за 2017 год на часовом тайм фрейме валютной пары Евро/Доллар. Результаты после обучения эксперта выглядят следующим образом:

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

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

Предупреждение о рисках.

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

Место нейросети в торговой стратегии трейдера

Еще

Попытаюсь систематизировать своё представление о том, как и для чего можно использовать нейросети и ML в торговой стратегии.

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

ЧЕГО НЕ ДОЛЖНА ДЕЛАТЬ НЕЙРОСЕТЬ
Как это ни прозвучит, нейросеть не должна предсказывать конкретные значения цен — ни на следующем баре, ни сколько нибудь в отдалённой в будущее перспективе.
Регрессионные задачи выполняются нейросетями достаточно хорошо, тут они конкурируют с (S)ARIMA. Но в цикличных временных рядах.
Например, ими эффективно можно прогнозировать спрос на товары (и от этого — объём продаж), суточную температуру воздуха за окном, воды в океане, прироста численности населения и т.п.
Всё дело в том, что в этих процессах крайне редко может произвойти то, что происходит с ценой, например, акции на рынке — сильное смещение средней ценны вверх или вниз.

ЧТО ДОЛЖНА ДЕЛАТЬ НЕЙРОСЕТЬ
В идеале, она должна показывать для каждого бара заданного таймфрейма рекомендацию одного из трёх известных действий: купить, продать и не делать ничего (оно же — держать).
Вопрос в том, чем кормить такую нейросеть, но он не в тему темы поста. Об этом — в следующих постах.
Тем не менее, ясно, что такая постановка задачи однозначно определяет как структуру выходных слоёв сети, так и активационную функцию последнего слоя, а именно:
последний слой из 3-х нейронов с активацией softmax и компиляция с функцией потерь categorical_crossentropy.

Так же задачей нейросети может быть определение фазы рынка, которые я бы так же разделил на 4: тренд вверх, вниз, flat и пила. Отличие flat от пилы в моём понимании в том, что на flat можно нормально зарабатывать, а на пиле волатильность такова, что и комиссии отбить не удастся.
Выход этой нейросети (тут тоже очевидно, что последний слой из 4-х нейронов с активацией softmax и компиляция с функцией потерь categorical_crossentropy) можно использовать как подтверждающий сигнал для ТС.

Читать статью Как установить советник в Metatrader 4 (MT4) и правильно его настроить

Ещё одна задача уже для ML — это выявление паттернов. Вот эти фсе влаги, треугольники, головы и плечи, в которых я абсолютно не разбираюсь (потому что убеждён, что можно увидеть лицо на обоссаной, извините меня, стене, если долго приглядываться) и то, о чем гуру теханализа даже, вероятно, не догадываются, но что может разглядеть нейросеть. Для этого можно использовать кластеризацию данных и детектировать паттерны, ну, например, sklearn.cluster. Выход отсюда, идентифицирующий паттерн, может поступать как дополнительный и/или подтверждающий сигнал на вход в результирующую нейросеть, которая, собственно, будет рекомендовать трейдеру (или МТС), вероятность какого действия в данный момент наиболее высока. Самое замечательное, что тут нет задачи идентифицировать конкретно, что за паттерн образовала цена — нам ведь это неинтересно. Нам всего лишь нужно понять, что завершение вот такого класса паттернов повышает вероятность успешного long или short. Пусть о деталях знает только сама нейросеть, а нам нужна просто рекомендация по действию.

Так же у меня родилась идея, для этого мира наверняка не новая — использовать НС для предсказаний «хороших» акций на основе финансовых отчётов и ценовых данных за период, следующий за публикацией отчётности. Такая нейросеть может предсказать, например, вероятность того, что будет рост или будет падение цены акций. С отной стороны, эта вероятность может быть подтверждающим сигналом для ТС, или поступать на вход другой нейросети, или просто на основании неё можно сформировать некий топ-лист акций с наибольшей вероятностью роста, и далее уже посмотреть на них глазками и потрогать ручками. Я считаю, что это может быть очень полезно, если трейдеру (например, как квалинвестору) доступно 10K бумаг и хочется сосредоточиться на бронебойных вариантах. Глазами всё отсмотреть — задача нереальная, а вот обучающая выборка на таком объёме смотрится уже довольно неплохо.

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

Лошадка

В качестве заключения, хочу отметить, что в использовании ML важно, чтобы не получилось, как на картинке ниже.

Похожие записи:

  1. Простой советник Moving Average
  2. 8 торговых советников для управления своими позициями
  3. Лучшие советники для MetaTrader 4 по рейтингу пользователей — 7
  4. Советники для торговли МТ4

Нейронная сеть Forex Trading EA MT5: ( Бесплатный робот с искусственным интеллектом )

Neural Network Forex Trading EA MT5: ( Free Artificial Intelligence Robot ) 1

Торговля на рынке Форекс — это прибыльная отрасль, которая привлекает множество трейдеров, стремящихся получить прибыль.. Однако, может быть сложно ориентироваться на рынке и постоянно совершать успешные сделки. Вот где советник-эксперт (советник) пригодится. Советники — это автоматизированные торговые системы, которые используют алгоритмы для анализа рынка и совершения сделок от имени трейдера.. Одним из таких советников является Нейронная сеть Forex Trading EA, полностью автоматизированный робот, который работает на очень продвинутой нейронной сети.

Нейронная сеть Forex Trading EA — это мультивалютный советник который торгует семью различными символами, в том числе NZDCAD, EURCAD, USDCHF, ПОЧЕТНЫЙ, CADJPY, EURCHF, и EURJPY. Он специально разработан для работы на графике NZDCAD H1 для достижения наилучших результатов.. Советник использует заказные поддержка и сопротивление, тренд, и индикаторы громкости выявить прибыльные сделки.

Список лучших брокеров

Советник Neural Network Forex Trading EA работает с любым брокером и любым типом счета., но мы рекомендуем нашим клиентам использовать один из лучшие форекс брокеры перечислено ниже:

ИМЯ БРОКЕРА РЕГИСТР Год основания Штаб-квартира Использовать Минимальный депозит Регулирование
регистр 2007 Сидней, Австралия 1:1000 $200 ASIC, СКБ, ФСА
регистр 2010 Мельбурн, Австралия 1:500 $200 FCA , ASIC, ДФСА
регистр 2009 Великобритания 1:888 $5 FCA
регистр 2009 Белиз 1:2000 $10 CySEC, ИФСК
регистр 2008 Кипр 1:Неограниченный $10 CySEC, FCA, FSCA, ФСА, БВО
регистр 2009 Белиз 1:3000 $1 МФХБ
регистр 2011 Лондон, Англия 1:500 $25 регулируется CySEC
регистр 2006 Дублин, Ирландия 1:400 $100 ЦБИ, КСЭД, ПФСА, ASIC, БВИФСК, ФФАЖ, САФСК,ADGM, ЭТО

Нейронная сеть Forex Trading EA Настройки

Neural Network Forex Trading EA MT5: ( Free Artificial Intelligence Robot ) 15

Одной из ключевых особенностей советника Neural Network Forex Trading EA является то, что он не использует рискованные стратегии, такие как мартингейл или сетка.. Это означает, что он не полагается на удвоение убыточных сделок или добавление позиций к убыточным сделкам в надежде возместить убытки.. Вместо, он опирается на сложную нейронную сеть и искусственный интеллект, чтобы анализировать рыночные данные и совершать сделки.

Нейронная сеть Forex Trading EA Результат

Советник Neural Network Forex Trading EA также подходит для вспомогательных счетов, таких как FTMO.. Проп-счета — это торговые счета, финансируемые третьей стороной., и трейдерам дается набор правил, которым нужно следовать. Правила обычно включают рекомендации по управлению рисками и торговые стратегии.. Советник Neural Network Forex Trading EA хорошо подходит для поддержки счетов, поскольку он не использует рискованные торговые стратегии и полностью автоматизирован., чтобы трейдеры могли сосредоточиться на других аспектах своей торговли.

Neural Network Forex Trading EA MT5: ( Free Artificial Intelligence Robot ) 16 Neural Network Forex Trading EA MT5: ( Free Artificial Intelligence Robot ) 17

Одно из самых значительных преимуществ нейронной сети Форекс советник в том, что он основан на реальном живом исполнении, а не просто тестировать результаты. Бэктестинг — это процесс тестирования торговой стратегии с использованием исторических рыночных данных, чтобы увидеть, как она работала бы в прошлом.. В то время как тестирование на истории может дать полезную информацию о производительности стратегии., он не всегда отражает реальные торговые условия. Советник Neural Network Forex Trading EA уже показал четыре месяца прибыльной истории, что является более надежным показателем его эффективности.

Заключение

Нейронная сеть Forex EA — это продвинутый автоматизированный трейдинг система, использующая искусственный интеллект для выявления прибыльных сделок. Он подходит для трейдеров, которые хотят использовать более независимый подход к торговле, и особенно хорошо подходит для вспомогательных счетов, таких как FTMO.. Имея впечатляющий послужной список прибыльной торговли в реальном времени, Советник Neural Network Forex Trading EA — это мощный инструмент для любого трейдера, стремящегося максимизировать свою прибыль на рынке форекс..

Neural Network Forex Trading EA Скачать бесплатно

Мы настоятельно рекомендуем попробовать советник Neural Network Trading с Демо-счет ICMarket. Также, ознакомьтесь и поймите, как работает эта система, прежде чем использовать ее на реальном счете.

Этот контент предназначен только для зарегистрированных пользователей

Пожалуйста, войдите, чтобы разблокировать содержимое!

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

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

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

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

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

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

  1. MQL5 Wizard – это эффективный и наиболее быстрый на сегодняшний день механизм автоматической генерации MQL5 кода, который масштабируется с помощью дополнительных модулей.
  2. Hlaiman EA Generator — это нейросетевой движок с гибким механизмом объектной интеграции, который программируется непосредственно в 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.

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

//+------------------------------------------------------------------+ //| Class CSignalHNN. | //| Purpose: Class of generator of trade signals based on | //| the 'Hlaiman EA Generator Neural Net' indicator. | //| Is derived from the CExpertSignal class. | //+------------------------------------------------------------------+ class CSignalHNN :public CExpertSignal < protected: //--- variables int m_hnn; // handle of HNN connect string hnn_path; // MT5 Terminal data path string hnn_fil; // HNN file w neural net string hnn_nam; // Expert name string hnn_sym; // Symbol name string hnn_per; // Period name ENUM_TIMEFRAMES hnn_period; // Period timeframe int hnn_index; // Index ext multinet int hnn_bar; // index of last bar int hnn_in; // input layer int hnn_out; // output layer int hnn_layers; // layers count int hnn_neurons; // neurons count int hnn_epoch; // learn epoch double hnn_signal; // value of last signal double pattern[]; // values of the pattren bool hnn_norm; // normalize pattern public: CSignalHNN(void); // class constructor ~CSignalHNN(void); // class destructor //--- methods of setting adjustable parameters void PatternBarsCount(int value) < hnn_in = value; ArrayResize(pattern, value + 1); > void LayersCount(int value) < hnn_layers = value; > void NeuronsCount(int value) < hnn_neurons = value; > void EpochCount(int value) < hnn_epoch = value; > void Normalize(bool value) < hnn_norm = value; > //--- method of verification of settings virtual bool ValidationSettings(void); //--- method of creating the indicator and timeseries virtual bool InitIndicators(CIndicators *indicators); //--- methods of checking conditions of entering the market virtual double Direction(void); bool FillPattern(datetime tim = 0); // prepare pattern bool AddPattern(string name, int ptype); // add new pattern bool TeachHNN(void); // learn neural net bool SaveFileHNN(void); // neural net file double CalculateHNN(void); // calc neural signal //protected: //--- method of initialization of the Hlaiman Application bool InitHNN(bool openn); // Hlaiman App Init void FreeHNN(void) < // Hlaiman App Deinit if(m_hnn!=0 && m_hnn!=INVALID_HANDLE) < FileClose(m_hnn); m_hnn=0; > >; >;

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

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

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

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

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

//+------------------------------------------------------------------+ //| Initialize HNN | //+------------------------------------------------------------------+ bool CSignalHNN::InitHNN(bool openn) < //--- initialize Hlaiman Application int num=0; ulong res=0; if(m_symbol!=NULL) < hnn_sym=m_symbol.Name(); hnn_period=m_period; >else < hnn_sym=_Symbol; hnn_period=_Period; > hnn_per = string(PeriodSeconds(hnn_period) / 60); hnn_fil = hnn_nam + NAME_DELIM + hnn_sym + hnn_per + NAME_DELIM + string(hnn_index) + TYPE_NEURO; if(m_hnn== 0|| m_hnn == INVALID_HANDLE) m_hnn=FileOpen(HLAIMAN_PIPE,FILE_READ|FILE_WRITE|FILE_BIN); if(m_hnn!=0 && m_hnn!=INVALID_HANDLE) < string source,result=""; if(openn==true) < result=CON_OPENN+CON_TRUE; if(!FileIsExist(hnn_fil,FILE_READ)) < if(FileIsExist(hnn_fil,FILE_READ|FILE_COMMON)) hnn_fil=TerminalInfoString(TERMINAL_COMMONDATA_PATH)+PATH_FILES+hnn_fil; else < // hnn_fil = hnn_path + PATH_MQL5 + PATH_FILES + hnn_fil; hnn_fil=TerminalInfoString(TERMINAL_DATA_PATH)+PATH_MQL5+PATH_FILES+hnn_fil; > > else hnn_fil=TerminalInfoString(TERMINAL_DATA_PATH)+PATH_MQL5+PATH_FILES+hnn_fil; > else < result=CON_OPENN+CON_FALSE; hnn_fil=TerminalInfoString(TERMINAL_DATA_PATH)+PATH_MQL5+PATH_FILES+hnn_fil; > source="unit InitHNN; Interface "+result+" var libr, term, exp, sym: TObject;" " Implementation function main: integer;nr" // Line #1 " begin" " Result := 0;" " libr := Open('mt45.dll');nr" // Line #2 " if (libr <> nil) then" " begin" " term := Open('"+hnn_path+"');nr" // Line #3 " if (term <> nil) then" " begin" " exp := term.ObjectOfName('"+hnn_nam+"');" " if (exp = nil) then exp := term.AddObject('TMT45Expert');nr" // Line #5 " if (exp <> nil) then" " begin" " if (exp.Name <> '"+hnn_nam+"') then exp.Name := '"+hnn_nam+"';nr" // Line #6 " sym := exp.ObjectOfName('"+hnn_sym+hnn_per+"');" " if (sym = nil) then sym := exp.AddObject('TMT45Symbol');" " if (sym <> nil) then" " begin" " sym.Log.Add('"+hnn_sym+hnn_per+"');nr" " if (sym.Name <> '"+hnn_sym+hnn_per+"') then sym.Name := '"+hnn_sym+hnn_per+"';" " if (sym.Period <> "+hnn_per+") then sym.Period : string">";" " if (openn = true) then" " begin" // " sym.Log.Add('" + hnn_fil + "');" " if (sym.Open('"+hnn_fil+"')) then Result := sym.TeachInput;nr" // ret input Line #8 " end else" " begin" " sym.TeachInput : functions">IntegerToString(hnn_in)+";" " sym.TeachOutput : functions">IntegerToString(hnn_out)+";" " sym.TeachLayer : functions">IntegerToString(hnn_layers)+";" " sym.TeachNeurons : functions">IntegerToString(hnn_neurons)+";" " sym.TeachEpoch : functions">IntegerToString(hnn_epoch)+";" " sym.FileName := '"+hnn_fil+"';" " Result := sym.TeachInput;nr" // ret input Line #9 " end;" " end;" " end;" " end;" " end;" " end; end."; FileWriteString(m_hnn,source,StringLen(source)); FileFlush(m_hnn); while(res0 && (MQL5InfoInteger(MQL5_TESTER) || numSleep(SLEEP_TIM); res=FileSize(m_hnn); num++; > if(res>0) < result=FileReadString(m_hnn,int(res/2)); res=StringToInteger(result); if(res<=RES_OK) printf(__FUNCTION__+": Error! Initialization data(possible reason: FILE NOT EXIST OR CORRUPTED "+hnn_fil); else < printf(__FUNCTION__+": Initialization successful! NEURAL PATTERN "+string(res)); ArrayResize(pattern,int(res+1)); return(true); > > else printf(__FUNCTION__+": Error! pipe server not responding(possible elimination: RESTART HLAIMAN APPLICATION)"); > else printf(__FUNCTION__+": Error! initializing pipe server (possible reason: HLAIMAN APPLICATION IS NOT RUNNING!)"); //--- ok return(false); >

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

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

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

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

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

//+------------------------------------------------------------------+ //| Calculate HNN signal | //+------------------------------------------------------------------+ double CSignalHNN::CalculateHNN(void) < if(m_hnn==0 || m_hnn==INVALID_HANDLE) return(0.0); int num = 0; ulong siz = 0; double res=0.0; string source,result=""; if(FillPattern(0)==true) < result=CON_START; for(int i=1; i<(ArraySize(pattern)-1); i++) result= result+DoubleToString(pattern[i])+CON_ADD; result = result + DoubleToString(pattern[ArraySize(pattern) - 1]) + CON_END; source = "unit CalcHNN; Interface " + result + " var i: integer; libr, term, exp, sym, lst: TObject;" " Implementation function main: double;nr" // Line #1 " begin" " Result := 0.0;" " libr := Open('mt45.dll');nr" // Line #2 " if (libr <> nil) then" " begin" " term := Open('"+hnn_path+"');nr" // Line #3 " if (term <> nil) then" " begin" " exp := term.ObjectOfName('"+hnn_nam+"');nr" // Line #4 " if (exp <> nil) then" " begin" " sym := exp.ObjectOfName('"+hnn_sym+hnn_per+"');nr" // Line #5 " if (sym <> nil) then" " begin" " lst := TStringList.Create;" " if (lst <> nil) then" " begin" " lst.Text := cons;" " if (lst.Count >= sym.NetInputs.Count) then" " begin" " for i := 0 to sym.NetInputs.Count - 1 do" " begin" " sym.NetInputs.Objects[i].NetValue := StrToFloat(lst[i]);nr" // Line #6 // " sym.Log.Add('Input ' + IntToStr(i) + ' = ' + lst[i]);" " end;" " sym.Computed := true;" " Result := sym.NetOutputs.Objects[0].NetValue;nr" // ret input Line #7 " end;" " lst.Free;" " end;" " end;" " end;" " end;" " end;" " end; end."; FileWriteString(m_hnn,source,StringLen(source)); FileFlush(m_hnn); while(siz0 && (MQL5InfoInteger(MQL5_TESTER) || numSleep(SLEEP_TIM); siz=FileSize(m_hnn); num++; > if(siz>0) < result=FileReadString(m_hnn,int(siz/2)); res=StringToDouble(result); > > //else Print("fill pattern error!"); return(res); > //+------------------------------------------------------------------+ //| AddPattern | //+------------------------------------------------------------------+ bool CSignalHNN::AddPattern(string name,int ptype) < int num=0; long res=0; ulong siz=0; string result,source,nam=name; if(m_hnn!=0 || m_hnn!=INVALID_HANDLE) < pattern[0]=ptype; result=CON_START; for(int i=0; i<(ArraySize(pattern)-1); i++) result= result+DoubleToString(pattern[i])+CON_ADD; result = result + DoubleToString(pattern[ArraySize(pattern) - 1]) + CON_END; source = "unit AddPatternHNN; Interface " + result + " Implementation function main: integer;" " var i: integer; out: double; onam: string;" " libr, term, exp, sym, ord, tck, lst: TObject;nr" // Line #1 " begin" " Result := 0;" " libr := Open('mt45.dll');nr" // Line #2 " if (libr <> nil) then" " begin" " term := Open('"+hnn_path+"');nr" // Line #3 " if (term <> nil) then" " begin" " exp := term.ObjectOfName('"+hnn_nam+"');nr" // Line #4 " if (exp <> nil) then" " begin" " sym := exp.ObjectOfName('"+hnn_sym+hnn_per+"');nr" // Line #5 " if (sym <> nil) then" " begin" " lst := TStringList.Create;" " if (lst <> nil) then" " begin" " lst.Text := cons;" " if (lst.Count >= (sym.TeachInput + sym.TeachOutput)) then" " begin" " out := StrToFloat(lst[0]);" " if(out >= 0) then onam := 'BUY-"+nam+"'" " else onam := 'SELL-"+nam+"';" " ord := sym.ObjectOfName(onam);" " if (ord = nil) then ord := sym.AddObject('TMT45Order');nr" // Line #6 " if (ord <> nil) then" " begin" " if (ord.Name <> onam) then ord.Name := onam;nr" // Line #7 " if (out >= 0) then ord.OrderType := 0 else ord.OrderType := 1;" " if (ord.NetOutput <> out) then ord.NetOutput := out;nr" // Line #8 " for i := 1 to sym.TeachInput do" " begin" " if(i " tck := ord.AddObject('TMT45Tick');nr" // Line #10 " if (tck <> nil) then" " begin" " tck.x := i;" " tck.y := StrToFloat(lst[i]);nr" // Line #11 " end;" " end;" " end;" " Result := sym.Count;nr" // ret input Line #12 " end;" " lst.Free;" " end;" " end;" " end;" " end;" " end;" " end; end."; FileWriteString(m_hnn,source,StringLen(source)); FileFlush(m_hnn); while(siz0 && (MQL5InfoInteger(MQL5_TESTER) || numSleep(SLEEP_TIM); siz=FileSize(m_hnn); num++; > if(siz>0) < result=FileReadString(m_hnn,int(siz/2)); res=StringToInteger(result); > > return(res>0); > //+------------------------------------------------------------------+ //| TeachHNN | //+------------------------------------------------------------------+ bool CSignalHNN::TeachHNN(void) < int num=0; long res=0; ulong siz=0; string result,source; if(m_hnn!=0 || m_hnn!=INVALID_HANDLE) < source="unit TeachHNN; Interface const WAIT_TIM = 100; WAIT_CNT = 100;" " var i: integer; libr, term, exp, sym: TObject;" " Implementation function main: integer;nr" // Line #1 " begin" " Result := 0;" " libr := Open('mt45.dll');nr" // Line #2 " if (libr <> nil) then" " begin" " term := Open('"+hnn_path+"');nr" // Line #3 " if (term <> nil) then" " begin" " exp := term.ObjectOfName('"+hnn_nam+"');nr" // Line #4 " if (exp <> nil) then" " begin" " sym := exp.ObjectOfName('"+hnn_sym+hnn_per+"');nr" // Line #5 " if (sym <> nil) then" " begin" " if (sym.Teached) then sym.Teached := false;nr" // Line #6 " sym.Teached := true;nr" // Line #7 " Result := sym.Count;nr" // ret input Line #8 " end;" " end;" " end;" " end;" " end; end."; FileWriteString(m_hnn,source,StringLen(source)); FileFlush(m_hnn); while(siz0) // && (MQL5InfoInteger(MQL5_TESTER) || num < WAIT_TIMES)) Sleep(SLEEP_TIM); siz=FileSize(m_hnn); num++; > if(siz>0) < result=FileReadString(m_hnn,int(siz/2)); res=StringToInteger(result); > > return(res>0); >

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

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

//+------------------------------------------------------------------+ //| Check conditions for trading signals. | //+------------------------------------------------------------------+ double CSignalHNN::Direction(void) < if( m_hnn == 0 || m_hnn == INVALID_HANDLE) return(EMPTY_VALUE); //--- check new bar condition int cur_bar = Bars(hnn_sym, hnn_period); if (hnn_bar != cur_bar) < //--- condition OK hnn_signal = CalculateHNN() * 100; hnn_bar = cur_bar; > return(hnn_signal); >

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

  • 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 можно скачать по ссылке.

  • SignalHNN.mqh — модуль сигналов «MQL5IncludeExpertSignal».
  • TeachHNN.mq5 — обучающий скрипт «MQL5Scripts».
  • SampleHNN.mq5 — торговый советник на базе модуля торговых сигналов «Signals of patterns Hlaiman Neural Network EA generator», созданный при помощи MQL5 Wizard.

Источник https://tukcom.ru/sovetniki-forex/nejrosetevoj-sovetnik/

Источник https://forexwikitrading.com/ru/forex-robot/neural-network-forex-trading-ea/

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