Visual Strategy Builder – создаем советников для MT4 без программирования
Все мы знаем, что основное достоинство терминала Metatrader 4 – это возможность создания роботов и торговля с их помощью.
Далеко не все трейдеры владеют программированием на mql4/5. Разработчики программы Forex Tester смогли решить эту проблему. Теперь можно создать робота или реализовать торговую идею в виде индикатора на ресурсе «Визуальный конструктор стратегий» (Visual Strategy Builder). Без навыков программирования.
Как это сделать, плюсы и минусы бесплатного (на текущий момент) конструктора роботов – в нашем материале.
Постоянные читатели нашего сайта знакомы с Forex Tester 4 – уникальным симулятором торгов, выступающим в роли тренажера, тестера и анализатора. Программа имела функцию написания на заказ индикаторов и советников, совместимых с Metatrader. Теперь разработчики платформы решили дать каждому трейдеру шанс самостоятельно создать собственные стратегии.
Сконструированные с помощью готовых модулей команд скрипты также совместимы с Metatrader 4, их создание на период бета-тестирования полностью бесплатно. Так что спешим читать статью и воплощаем в жизнь все идеи индикаторов и советников, которые были отложены до лучших времен.
Сервис Visual Strategy Builder расположен по адресу: https://tools.forextester.com/
Зачем нужен Visual Strategy Builder?
Visual Strategy Builder (VSB) представляет собой программную оболочку с набором инструментов теханализа, которые хорошо знакомы пользователям Metatrader 4. В отличие от этой торговой платформы VSB позволяет задавать в индикаторах правила открытия позиции и установки ордеров тейк-профит и стоп-лосс.
Любой новичок может выбрать сигнал на открытие позиции из набора готовых опций (кроссоверы, пересечения уровней, больше/меньше и т. д.). Эти настройки открывают недоступную для Metatrader 4 возможность протестировать работу одного или нескольких индикаторов.
Например, можно получить реальный торговый результат по стратегии пересечений скользящих средних линий. Такой советник создается в VSB за 5 минут, потом его можно экспортировать в Metatrader 4 или Forex Tester.
Разобравшись с созданием одного индикатора в Visual Strategy Builder, трейдер может в несколько кликов создать рабочую автоматизированную стратегию и тоже проверить ее в тестере. Если советник показывает положительные результаты, то по его сигналам можно торговать на реальном счете через Metatrader 4.
Кстати, тестировать стратегию однозначно лучше через Forex Tester – там точнее котировки и можно быстро эмулировать сессию за любой торговый день. Например, выбрав какой-нибудь «черный вторник», чтобы воочию понять, как аномальная волатильность повлияет на настройки мани менеджмента.
Профессиональные трейдеры могут экспортировать код советников прямо в VSB, соединять его с созданными там программами или редактировать в Metaeditor и отправлять обратно в Metatrader 4.
Visual Strategy Builder будет полезен тем, кто ищет новые идеи – программа поддерживает библиотеку стратегий пользователей. Любой желающий без навыков программирования сразу поймет «внутренности алгоритма» по составу индикаторов и описанным правилам торговых сигналов. Тут же можно самостоятельно убедиться в результативности торговой системы.
Как работать на платформе Visual Strategy Builder
Сервис Visual Strategy Builder расположен по адресу: https://tools.forextester.com/
Использование VSB требует регистрации – это быстрая и несложная процедура. Введите адрес электронной почты и придумайте пароль для входа. Он должен быть не менее 8 символов, содержать буквы разного регистра, почтовый ящик лучше указать gmail.
После заполнения вышеуказанных строк программа сразу открывает окно конструктора стратегий, автоматически переходя на русскоязычную версию.
Валютным спекулянтам доступно создание стратегии, использование шаблона от разработчиков или других пользователей VSB, а также создание собственного «индикатора мечты». Если пользователь планирует собрать торговую систему, надо нажать на иконку «Стратегии».
Платформа удобно сохраняет их под выбранным пользователем именем с кратким описанием сути системы. На странице предусмотрена кнопка возврата, если трейдер допустил ошибку на предыдущем этапе.
После шага «Создать стратегию» обратной дороги нет. Впрочем, совсем не обязательно бросаться мастерить сложные торговые системы. Программа, например, способна сильно упростить жизнь внутридневным трейдерам, автоматизировав некоторые индикаторы. Они расположены списком на панели слева под опцией «Элементы». Выше этого списка указаны различные целевые ориентиры для применения в стратегиях:
Перечисленные опции можно объединять друг с другом, накладывая различные условия выполнения сделки, например, пробой уровня только до американской сессии и т. д. Определитесь с главным инструментом своей стратегии и перетащите его в окно «Состояние 1».
Как только он там отобразится, можно приступать к редактированию параметров. Наведите курсор на поле присоединенного Bollinger Bands (BB), чтобы увидеть эту опцию.
После ее нажатия появится таблица со стандартными настройками линий BB. Стоит отметить одну особенность: для каждой из них сигналы на открытие позиций прописываются отдельно.
Набор правил входа в позицию доступен после нажатия рядом окна «Операции», вместе с которым активируется аналогичная опция слева со списком шаблонов. Учитывая, что работа идет с верхней линией, а вход в рынок планируется по контртренду, выбираем кроссовер сверху вниз.
Теперь конкретизируем тип позиции и условия мани менеджмента с помощью пункта меню на левой панели «Действия». Перетаскиваем в поле ордер на продажу и редактируем его параметры.
Пройдем по пунктам снизу вверх – индикатор на графике предусматривает многократное открытие позиции, поэтому ставим «Нет» на предложение открыть ордер один раз. Магический номер необходим, если открытие позиций по сигналам Bollinger Bands будет пересекаться с работающими на графике другими советниками.
Остальные опции понятны, следует только внимательно отнестись к пунктам: 25 – это для четырехзначной системы котировок. При пяти знаках умножайте значения пунктов на 10.
Для нижней линии Боллинджера потребуется создать второе правило, опцию можно выбрать слева вверху, повторив все вышеописанные операции со следующими изменениями:
Полученную стратегию можно сохранить и экспортировать в ForexTester или Metatrader 4. В последнем случае используйте латинские буквы в названии файла. Стратегия сохраняется в файл ex4 в папку, выбранную трейдером.
Запустить написанный советник можно сразу после его установки в Metatrader 4. Это делается обычным способом, описанным на нашем сайте.
Заключение
Основной плюс Конструктора стратегий от Forex Tester – простота интерфейса и функциональность шаблонов. Это позволяет трейдеру частично автоматизировать стратегии или дополнить ручную торговлю дополнительными сигналами, которые приходилось искать визуально на графике.
Любителей сеток особо порадует наличие опции «Мартингейл», а также команд на закрытие всех ордеров по условию. Среди минусов VSB следует отметить баги бета-версии и будущую запланированную плату за опцию. Так что спешим писать и экспортировать советников, пока платформа имеет открытую лицензию.
На ней можно попробовать создать прототип своей торговой идеи и, если она окажется прибыльной, обратиться к программистам для полноценной ее реализации.
Как написать Форекс робота: инструкция по созданию
Рано или поздно все трейдеры приходят к мысли о создании своего собственного торгового робота Форекс. Торгуя самостоятельно, вы тратите много личного времени, которое можно было бы уделять своим родным и близким. Ну а так как появилась возможность автоматизировать процесс заключения сделок и рыночного анализа, то почему бы не воспользоваться этим?
Сегодня я расскажу вам, как поэтапно создать робота самостоятельно. Разобравшись в этом вопросе, все окажется не таким уж и сложным, как может показаться на первый взгляд.
Трейдер сильно отличается по мышлению от обычного человека. Его головной мозг мыслит исключительно свечными паттернами, фигурами графического анализа и комбинацией сигналов от технических индикаторов. Смотря на ценовой график, он видит не просто хаотично движущуюся то вверх то вниз линию, а борьбу покупателей и продавцов. Он может заранее понять их поведение и предугадать будущее движение цены. Но для этого нужно уметь производить множество расчетов в голове.
Скажу честно, наличие автоматизированного Форекс робота не избавит вас от финансовых проблем и не сделает богатым человеком. Без наличия хотя бы базовых знаний в области технического анализа, вы не сможете написать Форекс робота, который бы приносил прибыль. Поэтому рекомендую первым делом поучиться рыночному анализу и создать свою собственную прибыльную торговую стратегию, протестированную и полностью пригодную к работе.
Ну а после у вас самих уже возникнет желание перенести ее в программный код советника, который будет вместо трейдера сам анализировать рынок и заключат сделки в рамках тех правил, которых вы и сами придерживались, торгуя самостоятельно. Более того, робот позволяет избежать многих ошибок, которые периодически происходят по причине человеческого фактора, от которого никто из нас не застрахован. Ведь все мы люди, все мы совершаем ошибки. Мы же с вами не роботы!
Этап 1: разработка идеи
Нельзя просто так взять, и создать из воздуха торгового советника. В первую очередь он должен базироваться на определенной идее. Многие наивные новички по-прежнему ищут тот самый священный Грааль, который бы приносил только прибыльные сделки. Я уже давно развеял этот миф, хотя признаться честно, и сам на первых порах верил в такую волшебную палочку. Но если бы существовал беспроигрышный робот, тогда все бы мы с вами ходили уже давно миллионерами. Только вот никакого рынка бы уже не существовало.
Не старайтесь скопировать идею какого-то робота в сети, про который пишут, что он якобы мега успешный. Это далеко не факт. Создайте собственную идею, продумайте свой скелет торговой стратегии. Как бы вам хотелось, чтобы робот торговал? По тренду или во флете? По каким индикаторам? Вы должны детально знать их принцип работы, чтобы в будущем была возможность оптимизировать и подкорректировать его результат.
Этап 2: предварительная подготовка к созданию
Прежде чем написать Форекс робота, вам нужно предварительно ответить на следующие важные вопросы, которые являются своего рода фундаментом:
• какова основная идея вашей стратегии,
• какие задачи будет решать программа по автоматическому трейдингу,
• понадобятся ли свечные паттерны или элементы графического анализа? Или же достаточно будет обойтись классическими индикаторами,
• нужен ли будет какой-нибудь второстепенный дополнительный скрипт,
• сможете ли вы реализовать все вышеперечисленные идеи самостоятельно, или же все-таки придется обращаться к профессиональному программисту.
Отнеситесь со всей ответственности к ответам на такие вопросы, так как в будущем они сэкономят вам массу времени, денег и нервов при создании собственного робота для торговли на Форекс.
Самым идеальным вариантом будет тот, когда у вас на руках уже имеется собственная прибыльная торговая стратегия. Вы досконально знаете все ее особенности, сигналы. Вы четко понимаете, на основании каких индикаторов генерируются рекомендации к торговле и так далее.
Если ваше представление о торговом роботе будет расплывчатым уже на первом этапе, то в будущем ничего хорошего может и не получиться. В итоге вы еще больше потратите денег на его создание. А если создадите некачественный продукт, то и вовсе потеряете не один депозит при торговле.
Этап 3: Конструктор
Крайне важно понимать рынок в целом. За счет чего происходит ценообразование, что влияет на динамику котировок и так далее. Порой и вовсе на первых порах будет достаточно прочитать знаменитую книгу Билла Вильямса «Теория Хаоса», чтобы научиться выявлять рыночные закономерности и понять, почему здесь нельзя открывать сделку, а вот здесь в самый раз!
Одним из самых популярных конструкторов для создания советников является MQL5 Wizard. Именно здесь создается большинство из существующих советников для торговых терминалов Метатрейдер 4 и 5.
Такой мастер-конструктор будет идеален для реализации простых и банальных идей, как пересечение двух скользящих средних. Здесь, даже особо не требуются навыки программирования и знание сложных языков программирования. Более того, сразу после создания вы можете протестировать свое творение прямо в том же MetaTrader и убедиться лично на истории котировок, стоит ли ваш робот ставить на реальный торговый счет, или же все-таки нужно доработать его.
Этап 4: MQL5 WIZARD
Ну а чтобы написать Форекс робота с более сложным алгоритмом, потребуется уже специальная программа. Для этого запускаем торговый терминал МТ5 и нажимаем на кнопку F4, тем самым запуская редактор по созданию советников.
После этого пишем название самого советника и заполняем стандартные входные данные. Следующим этапом будет добавление модулей технических индикаторов, на основании которых программа будет анализировать рынок и генерировать торговые сигналы. Индикаторы могут быть как классические встроенные в сам Метатрейдер, так и авторские, которые были созданы вами лично или другими более опытными профи.
На официальном сайте конструктора можно найти подробную информацию про каждый классический индикатор. Здесь же можно скачать и авторские. Выбираете один из них. Далее необходимо настроить его для работы. Заполняем все необходимые поля: период, тип, значения и так далее.
Если вы относитесь к рискованным трейдерам, то можно добавить принцип Мартингейла. В рамках такой тактики после каждой убыточной сделки робот будет удваивать сумму ставки. Тем самым, в случае следующего успеха прибыль перекроет все прошлые потери. Но это только в теории. На практике же нужно использовать эту методику очень осторожно. А новичкам и вовсе я бы рекомендовал воздержаться на первых порах от удваивания и торговать по классической схеме.
Этап 5: Создание сложного торгового советника
Ранее я описал процесс создания простого и примитивного Форекс Робота. Но сейчас трейдеры предпочитают создавать советника с несколькими индикаторами, дополненными элементами графического или свечного анализов.
Теперь представим, что у вас уже имеется неплохой опыт, вы точно знаете, что хотите получить от торгового советника, у вас есть проверенная идея, которая уже неплохо показывает себя на практике. Далее уже можно переходить к написанию детальных правил для вашей торговой стратегии. Зачастую у людей с гуманитарным складом ума именно на этом этапе возникают трудности, так как не все могут понять сложный технический язык по созданию Форекс советника.
Эта проблема очень распространенная. Ну а так как спрос рождает предложение, то сейчас появилась целая профессия специализированных программистов, которые смогут легко написать Форекс Робота.
Мало просто перечислить ему список индикаторов, по которым будет работать робот. Вы должны расписать, как и когда будет открываться сделка, каким способами она будет сопровождаться, при каких условиях закрываться, в какое время, в каких объемах, и многое другое. Программист не будет продумывать и догадываться про это вместо вас.
Если в вашем задании не будут прописаны подобные мелочи, то специалист по написанию робота может сам их дополнить, как посчитает нужным. Но это может в будущем сыграть с вами злую шутку.
Подводя итоги, вы должны описать как можно больше подробностей вашей стратегии и торговли. Чем их больше, тем легче будет специалисту реализовать то, что вы хотите.
Этап 6: Выбор программиста
Здесь тоже стоит учитывать некоторые нюансы. Помните, что цена может сильно различаться. Все специалисты на тех же фриланс-биржах будут устанавливать свои цены. И порой они не всегда могут быть адекватными. Есть определенный минимум, ниже которого ни один из адекватных программистов не будет браться за ваш заказ. Если у него за плечами большой опыт работы, то и вовсе он будет завышать цену. Тут уже вы должны сами для себя определить, сколько вы готовы выделить денег на создание своего Форекс Робота. Ну и далее уже выбирать исполнителя исходя из таких рамок.
Также я вам советую не быть чересчур уж щедрыми и разбрасываться деньгами. Бывают и такие недобросовестные программисты, которые поняв вашу щедрость, могут и вовсе обнаглеть и продолжать сдирать с вас денежки под разными предлогами.
Если вы ни разу не обращались за помощью к таким специалистам, то лучше спросить стоимость на специализированных независимых форумах. Там вам расскажут, какая примерно должна быть стоимость вашего заказа.
Общайтесь только с проверенными и опытными разработчиками, у которых за плечами уже далеко не первый год создания подобных программ и советников для автоматической работы на Форексе.
Не бойтесь общаться с ними, спрашивайте любые моменты, которые вам не понятны. Постарайтесь сами вникнуть в процесс создания, внимательно следите за каждым его этапом. Будьте в курсе всего, что происходит с вашим будущим торговым советником. Написать Форекс робота сможет каждый адекватный программист. Но вот учесть все нюансы в самой торговой стратегии и реализовать их в программе можно только сообща! В такой работе всегда должны принимать участие двое человек как минимум. Это вы и сам программист!
Этап 7: Получение готового советника
Ну и наконец-то наступил волнительный момент, когда вы получаете на руки своего готового к работе торгового робота. Его остается только включить и настроить к работе. Ну а далее можно спокойно расслабиться и периодически выводить прибыль.
Поверьте, это столь же волнительный момент не только для вас, а для самого программиста. Ведь позади долгие недели, когда вы плодотворно сотрудничали, дорабатывали, изменяли, корректировали торгового робота. Ему тоже не хочется сдать некачественный продукт. Так как от этого пострадает его репутация. Ну а это напрямую скажется на уменьшении потенциальных клиентов в будущем.
Но и здесь вам не нужно требовать от специалистов создания Грааля и на 100% безубыточного робота. Такого попросту не существует. Ни один робот Форекс не совершенен. Точно также как и ваша торговая стратегия.
В ваших же интересах полностью контролировать работу исполнителя, даже если вы ничего не понимаете в самом языке программирования и других технических сторонах. Участвуйте в тестировании, проводите совместно предварительные бета-тесты. В общем, нельзя просто отдать программисту бумажку и ждать получения готового продукта. Важно постоянно и самому принимать участие в работе.
Заключение
Чтобы написать Форекс Робота, который будет эффективно работать вместо вас, нужно проделать огромную работу. Но не стоит бояться трудностей. Поверьте, процесс его создания очень интересный и увлекательный.
Как создать торгового робота с помощью генетического программирования
Доброго времени суток. В этой статье расскажу о создании системы в которой генетические алгоритмы пишут роботов. В теории эти роботы могли бы торговать на бирже.
Я фанат трех вещей — искусственного интеллекта, высокопроизводительных машин и практического применения любых знаний. Имея некоторое свободное время, я спроектировал небольшую задачку, приобрел железо и сел творить.
Проект возник из желания попробовать на практике генетическое программирование. Первым вариантом было создавать бота к какой-нибудь игре, но я остановился на торговых роботах, где биржа тоже своего рода игра.
Эта статья подразумевает что вы знакомы с понятием генетические алгоритмы или генетическое программирование. А также, что делают торговые роботы.
С чего бы начать?
Я начал с изучения платформы для создания роботов MetaTrader5. Язык MQL5 позиционируется как схожий с С++, с незначительными отличиями в синтаксисе. Если говорить простыми словами, в платформе имеются функции для доступа к данным рынка и функции для выполнения торговых операций. После изучения и проверки нескольких десятков простых роботов, началась работа над их выделением общей элементарной базы, на которой и строятся эти алгоритмы.
Для удобства работы с логикой внутри генетического алгоритма мне пришлось создать свой мета-язык над MQL, назовем его SadLobster. Без этого обобщения было бы ужасно сложно заставить машину писать код по правилам языка программирования созданного для человека. Весь проект был обозначен как прототип, чтобы было проще принять множество компромиссов и упрощений. Иначе эта фаза разработки никогда бы не закончилась.
Как работает один робот
Давайте сразу посмотрим как выглядит упрощенная версия робота, который будет создан.
(пришлось выбросить лишнее, чтобы статья имела законченный вид)
Функции boolA__3 и priceA__10 обрабатывают информацию, получаемую с графиков котировок.
Функция boolA__3 запускается чтобы проверить есть ли сигнал для выставления ордера. Первый раз мы проверяем есть ли сигнал на покупку. Второй раз запускаем еще со значением инверт=1 и проверяем есть ли сигнал на продажу.
Функция priceA__10 определяет по какой цене должен быть выставлен ордер.
SadLobster
Вторая фишка языка SadLobster в том, что его синтаксис совместим с С++. То есть, тот же код, что я использую для тестирования в MQL, можно запустить через С++ тестер, который был написан отдельно.
MQL tester vs C++ tester
Язык состоит из списка функций которые можно использовать. Простейшие — AND, OR, CREATE_LINE, IS_INSIDE,…
И функции доступа к данным котировок и технических индикаторов — HIGH, LOW, FRACTAL, MA, MACD_SIGNAL. Эти функции будут перечислены в списке 1.
Симуляция торговли на истории
Робот запускается на периоде истории, например с 2014 по 2016 год. Происходит моделирование торговли. Все его сделки записываются и по ним формируется отчет. Мой отчет выглядит примерно так:
Эти числа означают: прибыльность, матожидание выигрыша, доля прибыльных сделок, отношение средней прибыльной сделки к среднему убытку, просадка, количество сделок, процент времени в рынке, чистая прибыль, идентификатор робота.
По отчету видно хорош робот или нет. Про тестер стратегий и его реализацию постараюсь рассказать в другой раз.
Фитнес функция
Интересный модуль требующий внимания — это фитнесс функция. Чтобы оценивать результаты торговли, нам ее надо симулировать, после чего произвести анализ всех сделок. Тут наиболее широкое поле для креатива. От того что вы будете считать наилучшим роботом, полностью зависят результаты. И чем сложнее система тем сложнее это делать. Так как не получается описать поведение желаемой программы единственным числом.
Первое решение — чем больше робот заработал, тем он лучше. Но тут возникает вопрос рисков. Такой робот совершенно нежизнеспособен. Меньше риск — меньше прибыль, больше риск больше прибыль.
У торговых роботов есть несколько различных характеристик. Самые простые из них — профит фактор(PF) и математическое ожидание прибыли на одну сделку(EP), максимальная просадка по средствам, LR correlation, Коэффициент Шарпа.
Вот так выглядит отчет MetaTrader о работе одного из созданных роботов:
У каждого из параметров есть свой коэффициент важности. Пропорционально этим числам вычисляется фитнесс функция для каждого робота. После чего происходят хорошо известные процессы скрещивания и мутации. И еще дополнительно установлен порог минимального количества сделок. От 0.2 до 2-х сделок в день, минимум.
Динамика и результаты запуска Генетического Алгоритма
Графическое представление эволюции или график обучения
Слева красная линия — профит фактор лучшего робота, а синие — это кросс тест лучших 10 роботов. 20-ти итераций обычно этого хватает чтоб оценить результат. Первые десять итераций можно не учитывать, потому что там на роботов не накладываются все ограничения. На итерациях же с 10 до 20 мы видим как результаты на форварде улучшаются.
Справа гистограмма помесячной прибыльности лучшего из роботов в пунктах. На ней слева отображено три года обучения, а справа — один год кросс теста.
Также я старался избегать переоптимизации, поэтому я забивал все плавающие параметры константами, с расчетом на то что степеней свободы остается достаточно, за счет комбинирования функций.
О сложности
Алгоритм робота для простоты не имеет внутренней памяти или состояний. Эта же особенность помогает кешировать результаты вычислений на каждом баре. Что сильно ускоряет вычисления. Стараясь использовать только функции со сложностью О(1) или O(n) в логике, я сильно ограничил функционал. Но этого требовали вычислительные ресурсы.
Генерация случайного дерева
Как получить функцию в том виде в котором она представлена в первом листинге?
Рассмотрим простую функцию MORE_I
Эта функция принимает два параметра цены (и вспомогательный параметр invert, на него внимание можно не обращать). Возвращает она булевое значение. Параметр price означает некую абстрактную сложность данной функции, задумывалась для контроля сложности всей логики каждого робота.
А вот здесь возникает неплохая олимпиадная задачка: необходимо из исходных функций собрать все возможные варианты логик с заданной сложностью и типом результата. Под логикой следует понимать выражение типа F(X)->Y.
Пример — мы хотим функцию принятия решения о входе в длинную позицию. Нам нужно булевое решение — DEF_BOOL, тогда возможные варианты следующие:
Стараясь закончить прототип, я очень злоупотряблял функцией random() там где надо было бы использовать более умную логику. Но вся идея была в том чтобы запустить машину целиком и, обвесив ее тестами, начать итеративные улучшения. Ниже приведено описание алгоритма на котором я остановился.
Задача алгоритма — сгенерировать функцию, которая будет возвращать DEF_BOOL. Нотация выражения LISP-подобная: [Function Name, param1, param2. ]. Параметры, которые начинаются с DEF, являются типом. Выражение в котором есть такой параметр не является окончательным, требует уточнения. В нотации не указывается тип возвращаемого значения за ненадобностью.
Для создания другой функции того же типа, пул можно переиспользовать без обнуления, что существенно ускоряет работу. Также функцию можно разобрать и создать из нее пул, который будет использован при скрещивании или мутации функций.
Это третья реализация алгоритма, первые два были не столь удачны. Весьма полезно было ознакомиться с 4-м томом Кнута, а именно главой 7.2.1.6 Генерация всех деревьев. Если нужна будет улучшенная версия, обязательно перечитаю ее снова. Недостатками этого алгоритма является:
Трансляция в конечную форму
Далее это LISP-подобное выражение превращается в листинг на языке SadLobster, где каждое неделимое выражение — это новая переменная. Логически выражение остается тем же.
SadLobster это не Haskell c чистыми функциями
Хотя я к этому стремился. Одна из проблем которые стоят при создании языка — обработка ошибок. Сразу возникло желание применить механизм эксепшенов, но MQL их не поддерживает. Самая частовозникаемая проблема — неудачно созданный объект. Идеально было бы использовать nil значения, не будем усложнять раньше времени. Это можно улучшить в следующих версиях. А в текущей реализации просто проверяется валидный ли объект, если нет то функция немедленно завершается. Этим занимается макрос типа CHECK_LINE_OR_FALSE.
Оптимизация выражений
Рассмотрим вариант когда выражение выглядит так:
Выражения 1 и 2 одинаковые. После транслирования и выделения переменных, var_2 используется в обоих местах и никакого дублирования кода.
Разработка требует инфраструктуры
Я хотел создать очень робастную базу для конструирования роботов. Разбирая примеры заказов АТС на фриланс бирже, я встраивал новые возможности/требования из ТЗ в общую систему. Так я старался расширить разнообразие в поведении роботов, потому как разнообразие в кодовой базе могло вести к созданию одних и тех же алгоритмических паттернов.
В какой-то момент, и это нормально, акцент разработки сдвинулся в сторону написания аналитических инструментов, для автоматизации анализа того, что же все-таки делают те или иные алгоритмы. В основном это одностраничные скрипты типа:
Пару слов о производительности
Тестирование очень быстрое по нескольким причинам:
Как это работает?
Хочу уточнить, что в зависимости от настроек ГА, коих очень много, можно получать роботов с диаметрально различными характеристиками. Предположим что нам важно получить робота который будет иметь положительную доходность по результатам следующего года после обучения, и совершал достаточно много сделок чтоб оценить неслучайность результатов.
Давайте посмотрим на такой эксперимент — запускаем ГА 15 раз, потому что каждый ГА это чреда очень многих случайных событий генерации, мутации, скрещивания и рулетки.
Хочу уточнить что в работах не используется Money Management и торговля ведется одним и тем же минимальным объемом.
158$ средняя прибыль в месяц при обучении, 21$ — средняя прибыль в течении следующих 12 месяцев. Результаты балансируют около нулевой прибыльности плюс погрешность. С другой стороны можно сравнить со случайным роботом, который просто будет терять на спреде. Не стоит забывать что игра на бирже — это игра с отрицательной суммой. На другом периоде обучения скорее всего результаты будут иные.
Хэпиэнда не будет
Получилось заставить ГА создавать роботов с определенной задачей. Этот проект расширил мое понимание и экспертизу в описанной выше теме. И тут случилось страшное — цель проекта достигнута. Проект для генерации роботов готов. Эта статья подводит черту по проделанной работе.
Вывод хочу разделить на два пункта
Субъективный — по ходу работы назрело множество вариантов того, что можно было бы проверить в рамках данной системы, для чего она и создавалась. Например:
И самое главное — я вижу будущее этого проекта в формате песочницы для развития ИИ в области написания алгоритмов.
С удовольствием отвечу на ваши вопросы, предложения и комментарии.