English 中文 Español Deutsch 日本語 Português
Графический конструктор стратегий. Создание торговых роботов без программирования

Графический конструктор стратегий. Создание торговых роботов без программирования

MetaTrader 5Тестер | 19 июля 2018, 16:22
26 361 138
Andrey Barinov
Andrey Barinov

Содержание

Введение

Важнейшие функции торговой платформы MetaTrader 5 — алготрейдинг и возможность проверять торговые идеи на исторических данных в тестере стратегий.

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

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

Для MetaTrader4: Mission Automate Demo MT4

Для MetaTrader5: Mission Automate Demo MT5

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

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

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

Возможности конструктора

Программа Mission Automate позволяет превращать идеи в готовых торговых роботов. Интуитивно понятный графический интерфейс с технологией "drag and drop" делает процесс легким и доступным. Создание советника выглядит как сборка схемы из готовых блоков (элементов) и их соединение логическими связями. Когда схема создана, ее можно немедленно запустить в работу или автоматически конвертировать в код на MQL5 для дальнейшего использования в тестере стратегий или на реал-тайм графиках.

Перечислю лишь часть доступных в конструкторе элементов.

  • Все стандартные индикаторы платформы MetaTrader.
  • Пользовательские индикаторы.
  • Открытие / закрытие / модификация позиции (группы позиций).
  • Установка / отмена / модификация отложенного ордера (группы ордеров).
  • Управление сделками: калькулятор лота, безубыток, трейлинг-стоп.
  • Доступ к торговой истории (информация о закрытых сделках).
  • Элементы для получения различной информации о ценовой истории.
  • Данные последних тиков для различных инструментов.
  • Различные арифметические операции и преобразования цен.
  • Логические операции.
  • Переменные / переключатели.
  • Операции со временем.
  • Различная информация о торговых инструментах.
  • Информация о счете (баланс, средства, свободная маржа и др.).
  • Уведомления: Alert, Лог, Push и комментарий на графике.
  • Элементы для создания входных параметров советника, которые видны в его настройках и могут быть оптимизированы в тестере стратегий.

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

  • Советники с использованием технических индикаторов.
  • Стратегии на основе Price Action.
  • Советники на свечных паттернах
  • Стратегии на уровнях поддержки и сопротивления.
  • Различные виды сеточных советников.
  • Системы с использованием методов Мартингейла.
  • Утилиты для контроля открытых позиций.
  • Системы уведомлений.
  • Помощники для управления позициями и money management.

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

Работа с программой

В общем виде процесс превращения идеи в торгового робота состоит из нескольких этапов.

  1. Формирование торговой стратегии в голове трейдера— творческая работа.
  2. Оформление стратегий в виде свода правил "на бумаге" — формализация стратегии, или подготовка технического задания.
  3. Превращение этих правил в машинный код и исполняемый файл торгового робота — программирование советника.

Большинство трейдеров могут успешно самостоятельно справиться с пунктами №1 и №2. Описываемый в данной статье продукт позволяет выполнить и пункт №3, что делает алготрейдинг доступным для любого трейдера.

Конструктор Mission Automate позволяет создавать свои стратегии "с нуля" или на основе одного из готовых шаблонов / примеров, что гораздо проще.

На видео ниже представлен весь процесс создания советника "с нуля". В данном примере создается классическая стратегия на основе двух скользящих средних.

На видео представлены следующие шаги (все они будут более подробно описаны далее).

  • Построение схемы из элементов.
  • Соединение элементов логическими связями.
  • Настройка параметров элементов и связей.
  • Автоматическая генерация .mq5 файла советника.
  • Компиляция кода и получение исполняемого .ex5 файла.
  • Запуск и проверка советника в тестере стратегий.


Стратегии собираются из блоков / модулей. Эти блоки называются элементы.

Все доступные элементы расположены на панели элементов.

Элементы могут быть соединены между собой логическими связями.

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

Все созданные заготовки располагаются на панели заготовок

Элементы перетаскиваются с помощью "drag and drop".

Группа элементов и связей образует схему

Схема может быть создана с помощью шаблона.

Все доступные шаблоны расположены на панели шаблонов.

Обзор


Новую схему можно создать с использованием одного из имеющихся шаблонов или полностью "с нуля".

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

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

Создание схемы

Чтобы добавить к схеме новые элементы, их нужно перетащить на нее с панели элементов.

Если элемент с панели перетащить на чистое пространство, то будет создана новая схема, содержащая только этот элемент. Каждому элементу можно присвоить свое имя. 

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

Элементы

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

Элементы можно условно разделить на три группы.

  1. Элементы для совершения определенных действий (открытие новых позиций, уведомления, изменение существующих позиций и др) при наступлении определенных условий. Условие, необходимое для совершения действия, называется триггером.
  2. Элементы-объекты (тик, бар, символ, позиция, отложенный ордер, индикатор). Сначала нужно сформировать объект и настроить его параметры, и только после этого можно будет получить информацию о нем. 
  3. Элементы для получения информации об объекте (текущие цены, информация о состоянии счета, торговая история и др).

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

Элементы можно соединять логическими связями. Связь передает данные от одного элемента к другому.

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

Соединение элементов

Картинка выше показывает, как выглядела бы утилита, оповещающая о наступлении нового бара.

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

Некоторые действия могут применяться к группе элементов.

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

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

Заготовки

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

Пример №1: Советник "Пересечение Скользящих Средних"

Рассмотрим классическую торговую стратегию, основанную на пересечении двух скользящих средних.

Стратегию можно кратко описать следующим образом.

Покупаем, когда быстрая скользящая средняя (МА) пересекает медленную МА снизу вверх. Продаем, когда быстрая МА пересекает медленную сверху вниз. Закрываем позиции при наступлении противоположного сигнала, а также с помощью Stop Loss и Take Profit.

Теперь опишем стратегию более формальным языком, в виде правил/условий. 

  • Скользящие средние строим по ценам закрытия свечей. Работаем только со сформированными барами. Торговые действия предпринимаем на открытии бара, следующего за появлением сигнала.
  • Периоды быстрой и медленной средних должны быть вынесены во входные параметры советника.
  • Сигнал на покупку (и закрытие продаж) — состояние, когда на предыдущем баре быстрая МА была ниже медленной, а на текущем стала выше неё.
  • Сигнал на продажу (и закрытие покупок) — состояние, когда на предыдущем баре быстрая МА была выше медленной, а на текущем стала ниже неё.
  • Одновременно может быть открыта только одна позиция.
  • Торговля будет вестись постоянным лотом. Размер торгового лота должен быть вынесен во входные настройки советника.
  • Значения Stop Loss и Take Profit в пунктах должны быть вынесены во входные параметры эксперта.
  • Советник должен работать только с тем инструментом, на график которого он помещен. Таймфрейм для расчета индикаторов должен соответствовать периоду текущего графика.
  • Должна быть обеспечена возможность работы нескольких советников на одном счете с помощью уникального идентификатора Magic Number. Этот параметр должен быть вынесен во входные настройки советника.
  • Должна быть возможность задавать пользовательский комментарий для позиций советника.

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

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

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

Период индикатора — целое число. Будем использовать соответствующий элемент. Создадим новую схему. Добавим в нее 2 элемента, дадим им названия и настроим их значения. Для быстрой МА установим значение по умолчанию =14, а для медленной =28. Эти значения можно в дальнейшем оптимизировать в тестере стратегий.

Периоды скользящих средних

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

Нам понадобятся два элемента Moving Average.

Добавим их в нашу схему и соединим элементы периодов индикаторов с параметрами Период Индикатора. После этого схема будет выглядеть так:

Индикаторы

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

Теперь, чтобы определить условия сигналов на покупку/продажу, нам нужно получить по два значения для каждого индикатора — на предыдущем баре и на текущем.

Для получения значения индикатора служит элемент Значение Индикатора. Добавим 4 таких элемента в нашу схему и создадим соответствующие связи.

Бары нумеруются от настоящего к прошлому. Текущий бар, который еще не сформирован, имеет номер 0. Номер 1 присваивается предыдущему сформированному бару, номер 2 —  бару перед ним.

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

Значения скользящих средних

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

Для сравнения чисел используется элемент Сравнение. Этот элемент выдает значение "истина", если два числа удовлетворяют указанному отношению, и значение "ложь" — если нет. Добавим два таких элемента в нашу схему. В первом  будем определять, была ли быстрая МА выше медленной на предыдущем баре, а во втором — стала ли быстрая МА выше медленной на текущем баре. Создадим соответствующие связи и настроим параметры для двух элементов сравнения.

Сравнение значений

Сигналом для открытия покупок должно быть одновременное выполнение двух условий: 

  • быстрая МА НЕ была выше медленной на предыдущем баре
  • быстрая МА стала выше медленной на текущем баре.

Для проверки одновременного выполнения этих условий будем использовать элемент логическое И. Этот элемент выдает значение "истина", если ВСЕ условия выполнены, и значение "ложь", если хотя бы одно из них не выполнено.

Добавим два таких элемента в нашу схему и присоединим оба элемента Сравнение к каждому из них.

При этом нам нужно будет "перевернуть" некоторые связи. Элемент Сравнение выдает "истину", если Быстрая МА была выше Медленной МА на предыдущем баре, а нам нужно проверить что она НЕ была выше. Поэтому мы перевернем выходное значение с помощью настройки соответствующих связей в параметрах элементов. Перевернутые связи обозначаются на схеме красным цветом.

Сигналы

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

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

Нам необходим один такой элемент для покупок и один для продаж. Добавим два этих элемента на схему и настроим их соответствующим образом:

Группы сделок

Чтобы получить информацию о группе сделок (нам нужно знать их количество), будем использовать элемент Информация о Группе Сделок (Целое). Добавим два таких элемента в нашу схему. Полученное значение будем сравнивать с нулем с помощью элемента Сравнение

Количество сделок

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

  1. Триггер для открытия покупки — (1) Нет открытых покупок и (2) есть сигнал на покупку
  2. Триггер для открытия продажи — (1) Нет открытых продаж и (2) есть сигнал на продажу
  3. Триггер для закрытия покупки — (1) Есть открытая покупка и (2) есть сигнал на продажу
  4. Триггер для закрытия продажи — (1) Есть открытая продажа и (2) есть сигнал на покупку

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

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

Тригееры

Триггеры готовы. Осталось добавить торговые элементы.

Для открытия позиции используется элемент Открыть Сделку. Нам нужно по одному для открытия продаж и покупок.

Для закрытия сделок используется элемент Закрыть Группу Сделок. Здесь тоже нужно по одному для закрытия продаж и закрытия покупок.

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

Торговые элементы

Торговая логика советника полностью готова. Осталось сделать так, чтобы торговый лот, magic, комментарий сделок и значения Stop Loss/Take Profit можно было настраивать из входных параметров советника. Для этого нам опять понадобятся элементы из группы Входные Параметры.

Торговый лот задается десятичным числом, комментарий — строкой, а magic, stop loss и take profit — целыми числами. Добавим эти элементы в схему и присоединим их к соответствующим параметрам торговых элементов.

Окончательный вид схемы

Схема готова. Теперь необходимо создать файл советника. 

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

Упорядочивание входных параметров

Мы готовы к генерации кода и к созданию файла советника. Весь процесс показан на картинке ниже и состоит из следующих шагов.

  1. Генерация файла советника через меню файлового навигатора программы.
  2. Открытие готового файла исходного кода советника (.mq5) в программе MetaEditor.
  3. Компиляция советника и получение файла эксперта (.ex5).

Создание файла советника

После успешной компиляции в той же папке, где находится файл исходного кода (.mq5), появится файл советника с расширением .ex5 и тем же названием, что и файл исходного кода.

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

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

Проверка в визуальном режиме

Советник готов и полностью соответствует первоначальным правилам торговой стратегии!

Пример №2: Советник "Перевёртыш с Мартингейлом"

Рассмотрим другую очень популярную торговую стратегию с использованием системы Мартингейла. Стратегия может быть описана следующим образом.

Открываем позицию в любом направлении начальным лотом. Устанавливаем Stop Loss и Take Profit равными друг другу. Если позиция закрылась в профит, то следующая открывается опять с начальным лотом. Если позиция закрылась в убыток, то следующая сделка должна быть увеличенного объема, чтобы при закрытии в плюс компенсировать предыдущие потери.

Техническое задание на такого робота могло бы выглядеть следующим образом.

  • Первая сделка открывается в направлении, заданном пользователем (входной параметр) и с начальным лотом (входной параметр).
  • Для открытой позиции устанавливаются одинаковые stop loss и take profit в пунктах (входной параметр).
  • Если сделка закрывается в профит, следующая сделка открывается в противоположном направлении с начальным лотом.
  • Если сделка закрывается в убыток, следующая сделка открывается в противоположном направлении с увеличенным лотом (Lot Multiplier — входной параметр).
  • Должна быть возможность задавать комментарий для сделок советника (входной параметр Comment).
  • Должна быть предусмотрена возможность одновременной работы нескольких советников (входной параметр Magic).
  • Советник должен торговать инструментом графика, на который он установлен. Таймфрейм не имеет значения.

Приступим к созданию этого советника с помощью конструктора.

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

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

Группы сделок

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

Открытие позиции

Если позиция есть, для неё нужно установить Стоп Лосс и Тейк Профит.

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

Установку (модификацию) уровней СЛ и ТП обеспечивает элемент Изменить Группу Сделок.

Кроме этого, добавим элементы для входного параметра с Комментарием к сделкам и для входного параметра со значением величины СЛ и ТП в пунктах.

Установка стопов

Для определения типа следующей сделки нужно знать направление последней закрытой позиции. Для доступа к информации о позиции воспользуемся элементом Информация о Сделке. Для этого нужно знать тикет последней сделки. Его можно получить с помощью элемента Информация о Группе Сделок.

Последняя сделка

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

Тип последней сделки

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

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

Тип следующей сделки

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

Прибыль и объем последней сделки

Если это первая сделка или если последняя сделка закрылась в профит, мы начнем новый цикл с начальным лотом.

Для определения условия начала нового цикла воспользуемся элементом логическое ИЛИ. Он возвращает "истину", если хотя бы одно из условий выполнено, и "ложь" — если все условия не выполнены. Нам нужно проверить два условия. (1) Условие закрытия сделки в плюс мы возьмем из элемента Сравнение, где проверяется, была ли прибыль меньше нуля (эту связь к элементу ИЛИ необходимо перевернуть). (2) — проверку того, что это первая сделка, создадим с помощью элемента И, куда присоединим перевернутые значения из элементов Равно. Ведь если предыдущая сделка — это не покупка и не продажа — значит, это как раз та ситуация, когда предыдущей сделки просто нет.

Новый цикл

Если же сделка была открыта, то нужно вычислить новый объем. Для этого воспользуемся элементом Арифметика. Он позволяет производить различные математические операции с двумя числами. В данном случае будем умножать лот предыдущей сделки на параметр Множитель Лота, который создадим с помощью элемента Входной Параметр. Для нашей стратегии установим его значение по умолчанию, равное =2.

Вычисление лота

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

Кроме этого, добавим элемент для начального объема (входной параметр). В окончательном виде схема будет выглядеть так:

Выбор лота

Для быстрого обзора параметров всех элементов схемы/стратегии можно воспользоваться функцией Обзор Параметров.

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

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

Обзор параметров

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

Проверка в тестере

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


Пример №3: Утилита "Закрытие группы сделок по совокупной прибыли"

С помощью конструктора можно реализовывать не только торговые стратегии, но и более простые утилиты - помощники в торговле.

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

Утилита должна удовлетворять следующим требованиям.

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

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

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

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

Группа сделок

Узнаем текущую прибыль этой группы позиций (элемент Информация о Группе Сделок) и сравним это значение с заданным уровнем прибыли для закрытия (элемент Входной Параметр).

Прибыль группы сделок

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

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

Закрытие группы будем осуществлять элементом Закрыть Группу Сделок

Закрытие группы сделок

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

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

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

Добавим элементы на схему и настроим их, как показано ниже:

Счетчик попыток

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

Алерт MetaTRader 5 реализован с помощью элемента Алерт.

Алерт

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

Если нужно, чтобы эти действия выполнялись в определенном порядке — например, чтобы Алерт был создан ДО закрытия сделок, — нужно воспользоваться опцией Упорядочить Окончания. Тогда появится диалоговое окно, как и в случае с организацией порядка входных параметров, в котором можно будет перемещать элементы вниз/вверх.

Упорядочивание окончаний

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

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

Исполнение схемы


Заключение

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

Скачать программу в Маркете и попробовать её в действии — бесплатно и легко. В комплекте идут 5 готовых бесплатных советников.

Для MetaTrader4Mission Automate Demo MT4

Для MetaTrader5Mission Automate Demo MT5

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

Сделаем алготрейдинг доступным каждому!

Последние комментарии | Перейти к обсуждению на форуме трейдеров (138)
Andrey Barinov
Andrey Barinov | 15 февр. 2022 в 11:07
stason22 Колесников Станислав #:
Подскажите как запустить советник в демо. В тестере не запускается . Пролетает график без сделок, как обычный неработающий советник при визуализации. Так и должно быть?  Может есть инструкция для запуска.

Статья и есть инструкция. В тестере конструктор не работает. Это НЕ советник.

Aleksandr Kurilchik
Aleksandr Kurilchik | 30 сент. 2022 в 21:59

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

Andrey Barinov
Andrey Barinov | 1 окт. 2022 в 15:09
Aleksandr Kurilchik #:

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

Демо версии сейчас недоступны

Aleksandr Kurilchik
Aleksandr Kurilchik | 28 окт. 2022 в 14:38
Пользовательские индикаторы поддерживает? Если да, то где можно посмотреть как их использовать.
Ekaterina Maslova
Ekaterina Maslova | 3 дек. 2022 в 04:20

Могу сказать вот что ! Конструктор не простой ! Я девушка которая далека от программирования. Но нужно в нем разобраться ! Вещь самая лучшая на рынке. Автор очень приятный человек и помогает всегда! С его помощью и конечно труда вы осилите ! 
я не просто говорю что это лучшая вещь. Можно любую задумку осуществить! Абсолютно любую ( эксперт,советник ,помощник с алертами)
Пока разбираюсь сама ! Но скажу :
К автору большая просьба сделать подробный pfd файл руководство с указанием тех элементов которые изначально заданы в конструкторе - потому что на многих примерах они переименованы . Понятно что что пользователь все переименует под себя чтоб понимать схему , но учиться очень сложно когда в примере иконка таких 5 - и приходиться методом научного тыка нам тем кто с программированием не дружил ))
Хотелось бы так же увидеть прайс на более длительный сроки ну и если конечно это у автора в плане лайф тайм ( но это не мое дело )
Так же очень хочется чтоб была возможность в конструкторе создавать индикаторы пользовательские 

ВСЕМ РЕКОМЕНДУЮ ЭТОТ ПРОДУКТ! ЛУЧШИЙ НА РЫНКЕ 
p/s

Честный отзыв блондинки трейдера

Написание биржевых индикаторов с контролем объема на примере индикатора дельты Написание биржевых индикаторов с контролем объема на примере индикатора дельты
В статье рассмотрен алгоритм построения биржевых индикаторов на реальных объемах с использованием функций CopyTicks() и CopyTicksRange(). Также приведены особенности построения таких индикаторов и описаны нюансы их работы в реальном времени и в тестере стратегий.
Глубокие нейросети (Часть VIII). Повышение качества классификации bagging-ансамблей Глубокие нейросети (Часть VIII). Повышение качества классификации bagging-ансамблей
В статье рассматриваются три метода, с помощью которых можно повысить качество классификации bagging-ансамблей, и оценивается их эффективность. Проведена оценка того, как влияет оптимизация гиперпараметров нейросетей ELM и параметров постпроцессинга на качество классификации ансамбля.
График PairPlot на основе CGraphic для анализа зависимостей между массивами данных (таймсериями) График PairPlot на основе CGraphic для анализа зависимостей между массивами данных (таймсериями)
Часто в процессе технического анализа перед трейдерами ставится задача сравнения нескольких временных рядов. Проведение такого анализа требует соответствующих инструментов. В этой статье я предлагаю построить инструмент для графического анализа и поиска зависимостей между двумя и более временных рядов.
Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#) Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)
Статья описывает, как добавить в экспертов на MQL5 возможность работы с сервером баз данных Microsoft SQL Server. Используется импорт функций из DLL. Для создания DLL применяется платформа Microsoft .NET и язык C#. Используемые в статье методы с незначительными изменениями подходят и для экспертов, написанных на MQL4.