Урок №12: Пишем советник по индикатору | MQL-разработка

 

Урок №12: Пишем советник по индикатору

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

Начнём с создания шаблона советника(как это сделать мы разбирали на уроке №10).

Опишем входные параметры эксперта:

Значения StopLoss, TakeProfit и Slippage, присвоенные в параметрах, указаны для 4-х значного брокера, соответственно, чтобы эти же значения корректно работали у 5-ти значного ДЦ их нужно умножить на 10, что мы и сделаем в функции OnInit:

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

Параметры индикатора

Обычно я просто копирую параметры индикатора в код своего эксперта, в дальнейшем это позволит нам оптимизировать сам советник. В итоге получаем:

Переходим к функции OnTick и пишем заготовку обработчика, где описываю алгоритм работы эксперта:

  1. if (CountBuy() == 0) — я проверяю есть-ли у меня ордера на покупку, находящиеся в рынке, и если нет, то шаг 2.
  2. BuySignal = … — проверяем наличие сигнала на покупку по индикатору, кстати, это будет переменная, которую необходимо объявить заранее.
  3. if (BuySignal > 0) — если есть сигнал на покупку, то переходим к шагу 4.
  4. CloseSell() — закрываем открытые ордера на продажу, если они есть и переходим к шагу 5.
  5. Открываем ордер на покупку.

Точно такой же блок делается и для продаж.

Исходя из написанного алгоритма сразу видно, что предварительно нам потребуется несколько функций: CountBuy(), CountSell(), CloseBuy(), CloseSell(), а также написать код получения сигнала с индикатора.

Объявим в коде несколько переменных для дальнейшей работы и необходимые функции:

Функция CountBuy():

Аналогично пишется функция CountSell(), разве что проверяется тип ордера OP_SELL:

Далее пишем функцию CloseBuy():

заодно и сигнал на продажу:

кстати, обратите внимание на предпоследний параметр mode, который мы передаём в функцию iCustom — это номер буфера индикатора, где хранятся сигналы покупок и продаж.

Таким образом наша функция OnTick() будет выглядеть следующим образом:

Как написать индикатор или советник для Forex Tester

Здравствуйте, друзья форекс программисты !

Как вы знаете – в специализированной программе Forex Tester для тестирования торговых стратегий можно писать свои собственные индикаторы и советники, но мало кто пробовал это сделать. К сожалению – программа не поддерживает скриптовый язык mql, встроенный в терминал MetaTrader 4. Тем не менее, программа поддерживает импорт стратегий и индикаторов в виде dll файлов и сегодня мы разберемся, что нужно для того, чтобы писать свои индикаторы для Forex Tester.

Инструментарий

Прежде всего вам нужно установить программу Forex Tester, импортировать котировки для нее и подготовиться к тестированию. Все это уже было описано, например, тут, поэтому подробно останавливаться на этом не стоит. Где брать котировки и как их устанавливать вы также, думаю, разберетесь самостоятельно.

Написание собственных скриптов, индикаторов, советников для программы может происходить на двух языках программирования: C++ и Delphi. Но пугаться не стоит – дело в том, что язык mql очень похож на C++. К тому же – зная один из языков программирования и имея под рукой справочник по нему – можно справиться с любой несложной задачей. Вся логика везде одинаковая, конструкции различаются только синтаксисом, и то не особо сильно, а написание индикатора в большинстве случаев является как раз простой задачей.

Итак, я советую вам выбрать именно C++ за его сходство с mql. Поэтому для написания советников и индикаторов вам потребуется установка среды разработки. Лично я часто веду разработки для веба и уже давно использую для этого такую IDE, как NetBeans. В сети вы сможете найти немало видео уроков по использованию этой среды разработки, в которой детально разобран каждый элемент интерфейса.

Также можно найти и немало различных плагинов, упрощающих работу с ней. Это очень мощная среда разработки со множеством функций и возможностей под различные языки программирования. Но намного легче было бы установить что-то попроще, особенно если вам не нужно много функционала, а ваша цель – просто написать индикатор для Forex Tester. Поэтому предлагаю вам установить Dev-C++ – простую, легкую в использовании IDE.

Подготовка к работе

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

Как видите, для советников, индикаторов и скриптов используются разные файлы справки, так как интерфейсы для каждого из этих объектов различны. В зависимости от того, что вы собрались писать, вам нужно открыть тот или иной файл. Первым делом я советую вам ознакомиться с разделом «Как создавать индикаторы/скрипты/советники». В нем вы сможете найти общую структуру файла, которая очень похожа на аналогичную для терминала МТ4.

Читать статью  Советники для автоматической торговли на Форекс

Сначала мы подключаем необходимые интерфейсы API при помощи команды uses. Затем идет перечисление внешних переменных, которые можно настроить при запуске.

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

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

Ознакомиться со структурой программ вы можете в справке в разделе «Как создавать…». Далее я советую ознакомиться со списком функций, которые вы будете использовать при создании вашей программы. Затем почитайте, какие есть структуры, типы, классы и константы – все это займет не так уж и много времени, но зато вы примерно будете себе представлять спектр возможностей, который вам даст API, а также лишний раз убедитесь, насколько все похоже на родной mql.

Поэтому, если вы хорошо знакомы с mql и пишете на нем уверенно, практически все, что вам нужно, чтобы написать советник или индикатор для Forex Tester – вы уже знаете. Я же, не вдаваясь в детали программирования, опишу общий порядок действий для того, чтобы написать свой первый индикатор за один вечер:

  1. Открыть справку, изучить структуру программы. Впоследствии вы можете даже скопировать всю структуру прямо из справки в файл будущего проекта, чтобы не лезть лишний раз в справку для этого;
  2. Внимательно ознакомиться с основными функциями. Запоминать их не обязательно, все равно не запомните с первого раза и придется пользоваться поиском для справки. Функций немного, всего десятка четыре, поэтому они все запомнятся вам уже после пятого проекта. К тому же у большинства из них и названия, и аргументы, и типы этих аргументов практически один в один совпадают с аналогичными из mql;
  3. Установите среду разработки для предпочитаемого языка. Если вы знаете Delphi, хорошо. Если не знаете, ставьте что-то для работы с C++ – он мало чем отличается от mql (да, собственно, ничем практически не отличается – mql создавался по образу и подобию C++). Я не могу порекомендовать вам, какую среду разработки выбрать – сам пользуюсь Visual Studio и вполне доволен, но вкусы у всех разные;
  4. Заходим в папку с установленным Forex Tester/Examples/. Дальше выбираем папку в зависимости от того, что собрались создавать – скрипт, стратегию или индикатор. В каждой папке лежит API в двух вариантах для двух языков:

Вы найдете файл InterfaceUnit – это, собственно, сам интерфейс API, библиотеку технических функций TechnicalFunctions и пример написания советника или индикатора.

Открываем Dev-C++, жмем Файл->Создать-> Проект, выбираем dll:

Далее выбираем местоположение проекта:

Закрываем файлы, которые автоматически создались вместе с проектом и добавим свои:

После написания советника или индикатора идем во вкладку Выполнить – Скомпилировать или жмем Ctrl+F9. Если вы не наделали ошибок, в папке с проектом вы найдете dll файл советника/индикатора:

Именно этот файл нам нужно подключить к Forex Tester. Для этого находим в Forex Tester вкладку файл – установить:

Выбираем наш созданный файлик и жмем установить. После этого ваш индикатор вы найдете тут:

Советник появится в списке советников:

Заключение

Как видите, ничего сложного нет. Язык программирования прекрасно знаком тем, кто уже программировал индикаторы или советники на mql. Сама установка и разработка стратегий и индикаторов немного замысловата, но я надеюсь, эта статья помогла вам начать самостоятельно программировать под платформу Forex Tester.

Программы для создания советников на МТ4 и МТ5

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

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

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

Как можно создать советник?

Обзор начнем с краткого описания всех возможных способов (возможно, вам и не придется разбираться с программами). Создать торговый робот можно:

• написав его самостоятельно в Meta Editor – хардкорный вариант. Сюда же занесем и модификацию кода уже существующего робота;

• заплатив программисту – самый реальный вариант. Если бот сложный с множеством условий для входа, а у вас нет опыта в написании АТС, то лучше всего купить чужой опыт. Соответствующих объявлений полно на профильных форумах;

• используя спец. программу, облегчающую создание кода робота. В некоторых реализован принцип «Drag and Drop», то есть код бота строится в виде диаграммы, вы задается в отдельных блоках условия работы, затем передвигаете их, задаете связи между ними. Код компилируется по составленной блок-схеме автоматически.

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

Читать статью  Стабильный, не сливающий на тестах советник с минимальной просадкой Tokamato для МТ4 |

Краткий обзор программ для написания торговых роботов

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

Forex strategy builder

Мощный инструмент, программа платная, но в ознакомительных целях с сайта forexsb.com можно скачать демо-версию. На ознакомление дается всего 15 дней, повторно воспользоваться триальной версией можно будет только с другого ПК. Работать FSB будет только если у вас установлен МетаТрейдер, дело в том, что программа использует базу данных из МТ4.

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

Программы для создания советников на МТ4 и МТ5

При создании советника рабочее пространство программы делится на 3 зоны:

• левая часть экрана – краткое описание стратегии;

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

Программы для создания советников на МТ4 и МТ5

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

Находясь в Editor можно выделив каждый из блоков редактировать его значения. Например, изменить период скользящей средней, период индикатора, положение уровней и т. д. Можно добавить дополнительные условия для входа нажав на «Add an opening logic condition» и условия для выхода из рынка нажав на «Add a closing logic condition».

Программы для создания советников на МТ4 и МТ5

В разделе review вся информация по работе советника истории. Доступны такие пункты:

• overview – так как в примере рассматривается один из готовых советников, загруженных в базу программы, то здесь можно ознакомиться с подробным описанием советника;

• balance chart – график изменения депозита при тестировании алгоритма. В нашем примере видно, что робота неспособен обеспечить прибыль на тестовом участке истории;

Программы для создания советников на МТ4 и МТ5

• indicator chart – график выбранного инструмента, на котором будут отображаться сделки, совершенные при тестировании. Примерно то же самое увидит трейдер при тестировании советника в МТ4/МТ5 при активированном параметре «Визуализация». Это полезно если вы хотите изучить в полной ли мере соответствует работа советника тому, что вы задумывали;

Программы для создания советников на МТ4 и МТ5

• journal – в журнале записывается каждое действие робота при тестировании на исторических данных.

Есть пара полезных разделов и во вкладке Analysis:

• comparator – выбирается метод бэктеста. Здесь можно ничего не делать, оставить все как есть;

• multimarkets – в отличие от стандартного тестера в том же МетаТрейдере4 здесь можно выполнить тестирование сразу по нескольким парам. Результаты отображаются в виде графика в одном и том же окне;

Программы для создания советников на МТ4 и МТ5

•monte carlo – еще один раздел, посвященный тестированию. Его можно не трогать.

Перед тем как тестировать робот на истории рекомендуем подгрузить историю из МетаТрейдера. Для этого перейдите в Market-Download History Data-MT4 HST Import.

Главное, чем ценна программа так это возможностью сохранить написанный робот сразу в нужном формате для МТ4 или МТ5. Соответствующая кнопка есть на панели инструментов.

Программы для создания советников на МТ4 и МТ5

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

Ensed Cor

По сравнению с предыдущей программой Ensed Cor выглядит чуть менее удобной в использовании. Да и составить костяк советника так же просто как в FSB не получится. Как и в случае с FSB доступ к полному функционалу можно получить только оплатив подписку на сайте авторов. Но для ознакомления с возможностями программы подойдет и бесплатная версия Ensed Cor.

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

Перед началом работы нужно будет указать каталог МТ4. Enser Cod будет использовать все индикаторы, которые на данный момент содержаться в папке Indicators (в демо-версии реализована поддержка только стандартного инструментария МетаТрейдера).

Работу в программе рассмотрим на примере создания простенького торгового робота:

• при первом запуске указываем каталог терминала МТ4;

Программы для создания советников на МТ4 и МТ5

• после этого открывается окно программы и сразу можно приступать к созданию робота.

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

Читать статью  Почему стоит отдавать предпочтение форекс советникам без математики, переворота, усреднения или мартингейла

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

Программы для создания советников на МТ4 и МТ5

• по той же схеме записываем условия для открытия коротких позиций. Теперь мувинг должен быть над ценой, а Стохастик находится в зоне перекупленности;

Программы для создания советников на МТ4 и МТ5

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

Программы для создания советников на МТ4 и МТ5

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

Программы для создания советников на МТ4 и МТ5

• настройки робота – здесь задаются такие параметры как стоп-лосс, тейк-профит, будет вестись торговля фиксированным лотом либо будет использоваться мартингейл. Можно отметить пункт «автоучет знаков после запятой», в таком случае разрядность котировок советником будет определяться автоматически. Также задаются настройки мартингейла, будет ли переноситься стоп-лосс в безубыток и на каком уровне.

Программы для создания советников на МТ4 и МТ5

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

Программы для создания советников на МТ4 и МТ5

В целом, программа хотя и выглядит намного проще, чем FSB, но со своей задачей справляется. Создавать простые советники действительно легко. Проблема только в том, что функционал бесплатной версии ограничен, а продажу доступа к полноценной версии авторы временно ограничили. Можно поискать крякнутые версии Enser Cod, но нет гарантии, что работать она будет нормально.

Expert Advisor Visual Wizard

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

Процесс создания робота выглядит так:

• после открытия программы нужно будет указать путь к корневому каталогу МТ5, это ПО предназначено именно для создания ботов для МетаТрейдера5. Благодаря этому программа сможет работать не только со стандартными индикаторами, но и со всеми пользовательскими алгоритмами, которые трейдер сам установил в терминал;

• на график нужно будет добавить 2 кнопки Technical Analysis – для задания условий на покупку и продажу. Двойным щелчком по кнопке открывается окно, в котором выбираются нужные индикаторы, задаются условия для входа. Например, можно выбрать вход в рынок на пересечении 2 мувингов, выхода Стохастика из зон перепроданности/перекупленности и т. д.;

Программы для создания советников на МТ4 и МТ5

• потом добавляются блоки купить/продать, в них задаются параметры сделок – величина лота, стоп-лосс и тейк-профит.

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

Программы для создания советников на МТ4 и МТ5

На скриншоте выше – пример примитивнейшего советника на основе Стохастика. Его можно сохранить в нужном для МТ5 формате, загрузить в терминал и тут же испытывать на истории. В самой программе для создания возможности протестировать советник нет.

Недостатки программ для создания советников

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

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

Например, если в советнике нужно применить ВВ к индикатору RSI, программы это реализовать не смогут. Есть проблема с использованием свечных паттернов, паттернов Price Action, уровней Фибо и т. д.

Заключение

Программы для создания советников хороши только в тех случаях, когда нужно написать простой советник на основе индикаторов. Если ваши требования выходят за пределы этого ТЗ, в алгоритме нужно использовать свечные и графические паттерны, то придется обращаться за помощью к специалистам. Иного способа пока что нет, даже лучшая программа такого типа (Forex strategy builder) существенно уступает возможностям программиста.

Источник https://mql.su/2017/12/lesson12-my-expert/

Источник https://tlap.com/pishem-ea-dlya-forex-tester/

Источник https://rognowsky.ru/forex2/programmy-dlya-sozdaniya-sovetnikov-na-mt4-i-mt5/

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

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