Как сделать советника для mt4
Урок №12: Пишем советник по индикатору
На прошлом уроке мы с вами писали индикатор, который указывает входы в рынок. Соответственно сегодня мы займёмся разработкой эксперта, использующего его сигналы.
Начнём с создания шаблона советника(как это сделать мы разбирали на уроке №10).
Опишем входные параметры эксперта:
Значения StopLoss, TakeProfit и Slippage, присвоенные в параметрах, указаны для 4-х значного брокера, соответственно, чтобы эти же значения корректно работали у 5-ти значного ДЦ их нужно умножить на 10, что мы и сделаем в функции OnInit:
Начало нашего советника положено, что уже хорошо. Давайте теперь рассмотрим входные параметры индикатора, а заодно и номера буферов для сигналов:
Обычно я просто копирую параметры индикатора в код своего эксперта, в дальнейшем это позволит нам оптимизировать сам советник. В итоге получаем:
Переходим к функции OnTick и пишем заготовку обработчика, где описываю алгоритм работы эксперта:
Точно такой же блок делается и для продаж.
Исходя из написанного алгоритма сразу видно, что предварительно нам потребуется несколько функций: CountBuy(), CountSell(), CloseBuy(), CloseSell(), а также написать код получения сигнала с индикатора.
Объявим в коде несколько переменных для дальнейшей работы и необходимые функции:
Функция CountBuy():
Аналогично пишется функция CountSell(), разве что проверяется тип ордера OP_SELL:
Далее пишем функцию CloseBuy():
Пишем практически всё то же самое и для закрытия ордеров на продажу, разница лишь в типе проверяемого ордера и цене закрытия, функция CloseSell():
На текущий момент нам осталось получить сигналы от индикаторы и написать код, открывающий ордера по его сигналам.
Для получения сигнала от любого пользовательского индикатора используется функция iCustom, обратившись к справке (F1) видим формат вызова функции:
Теперь мы можем с легкостью получить сигнал на покупку в нашем советнике:
заодно и сигнал на продажу:
кстати, обратите внимание на предпоследний параметр mode, который мы передаём в функцию iCustom — это номер буфера индикатора, где хранятся сигналы покупок и продаж.
Таким образом наша функция OnTick() будет выглядеть следующим образом:
Собственно говоря, на этом всё, разработка советника на пользовательском индикаторе завершена.
Создание
Для создания советников используются язык программирования торговых стратегий MetaQuotes Language 4 (MQL4) и редактор MetaEditor. Чтобы запустить редактор советников, необходимо выполнить команду «Создать» контекстного меню окна «Навигатор — Советники», команду меню «Сервис — Редактор MetaQuotes Language», нажать клавишу F4 или кнопку панели «Стандартная».
При создании эксперта автоматически откроется мастер создания советников, позволяющий быстро приступить к работе с новой MQL4-программой. В нем в качестве типа создаваемого объекта необходимо указать «Советник» и заполнить поля требуемыми данными:
После этого в редакторе открывается окно нового советника с заданными параметрами. Файл с исходным текстом (*.MQ4) советника автоматически помещается в папку /EXPERTS клиентского терминала. С этого момента можно приступать к написанию кода эксперта.
По завершении разработки необходимо скомпилировать советник. Для этого в редакторе советников необходимо выполнить команду меню «Файл — Компилировать», нажать клавишу F5 или кнопку панели инструментов. В результате успешной компиляции создается исполняемый файл программы с расширением *.EX4, автоматически помещаемый в папку /EXPERTS. Список скомпилированных экспертов можно просмотреть в окне «Навигатор — Советники» клиентского терминала. Если компиляция не была успешно завершена, пиктограмма эксперта будет закрашена серым цветом. Это означает, что его использовать нельзя.
Редактирование советников
Чтобы приступить к редактированию уже существующего советника из терминала, необходимо выполнить команду «Изменить» контекстного меню окна «Навигатор — Советники». При этом откроется редактор советников, в который уже будет загружен исходный текст выбранного эксперта. После изменения исходного текста советника необходимо повторно скомпилировать его и получить новый исполняемый EX4-файл. В противном случае в терминале будет использоваться неизмененная, предыдущая версия эксперта.
Внимание: если компиляция не была успешно завершена, пиктограмма эксперта будет закрашена серым цветом. Это означает, что его использовать нельзя.
Торговый советник на MQL4: учимся программировать с нуля
В этом руководстве по MQL4 вы научитесь программировать свой собственный торговый советник в MetaEditor.
Прежде чем мы начнем, убедитесь, что вы понимаете следующие типы данных. Каждая переменная, которую мы будем использовать, для начала должна быть определена одним из следующих типов данных:
Скоро вы увидите, как их можно использовать.
Торговый советник три белых солдата
Для того, чтобы создать свой собственный торговый советник, для начала вы должны переключиться на MetaEditor. Вы смоете сделать это, нажав на иконку MetaEditor. В MetaEditor нажмите «Создать» и выберите «Советник (шаблон)». В следующем окне напишем имя нашего эксперта, нажмем на кнопку «Далее» и добавим первые стандартные переменные, нажав на кнопку «Добавить».
Мы добавим TakeProfit, StopLoss, LotSize, Slippage и MagicNumber. Все они являются типом int, кроме LotSize. LotSize должен иметь тип double.
Затем нажимаем «Далее» и «Готово». Мы видим, что MetaEditor сгенерировал файл с вашими предопределенными переменными.
Вы можете увидеть 3 области. Области OnInit(), OnDeinit() и OnTick(). Весь код, который вы пишете, попадает в одну из этих областей.
Код, который мы хотим вызвать, если прикрепим советник к графику, выполняется в области OnInit(). Код в OnDeinit() выполняется, когда мы отсоединяем советник. И, наконец, область, в которой мы будем работать больше всего – область OnTick(). Функция OnTick() вызывается каждый раз, когда мы получаем от брокера новую цену (тик) торгового инструмента, к которому прикреплен советник.
Если вы скомпилируете советника с помощью F7 и вернетесь в Metatrader, вы сможете найти советника в «Навигаторе» MetaTrader (Crtl + N). Если вы попытаетесь присоединить его к графику и перейдете на вкладку «Входные параметры», вы сможете увидеть наши предопределенные переменные.
Мы научимся программировать советника, который торгует по паттерну 3 белых солдата. Это простая стратегия, когда советник открывает сделку на покупку, когда последние 3 свечи были бычьими. Давайте начнем!
Добавим следующие строчки кода:
Для этой стратегии мы используем предопределенную переменную Close[], который является типом double. Close[] дает нам цену закрытия (например, 1.24577) для каждого свечи текущего графика. Close[0] означает текущую цену закрытия. Close[1] – предыдущую цену, и так далее. То же самое справедливо для предопределенных переменных Open[], Low[] и High[].
//Ордер на покупку – это подсказка для нас, что мы создали здесь функцию открытия ордера на покупку. Две обратных черты (//) означают, что эта строка закомментирована. Советник будет игнорировать ее при компиляции.
Если вы поместите курсор на предопределенную функцию или переменную и нажмете F1, откроется справка по MQL4, где вы сможете прочитать, что делает эта данная функция или переменная.
Далее мы используем функцию OrderSend, чтобы отправить ордер на покупку нашему брокеру. Добавим следующий код:
Что из себя представляет функция OrderSend?
Нажмите F7, чтобы скомпилировать советник и проверить результат его работы в тестере стратегий. Вы получите что-то вроде этого:
Наш торговый советник выставляет ордера на покупку на каждом тике, если 3 последних бара были бычьими. Это не то что мы хотим, но, по крайней мере, что-то происходит.
Мы должны запрограммировать новую функцию, которая позволит нашему советнику одновременно открывать только одну сделку. MQL4 уже имеет свои предопределенные функции, например, OrderSend(). Но мы также можем написать свою собственную функцию, в которой мы можем вызвать другие пользовательские или предопределенные функции.
Давайте перейдем к концу нашего файла и запрограммируем новую функцию под названием TotalOpenOrders. Эта функция будет иметь тип int. Она будет возвращать количество открытых ордеров.
Затем добавим данную функцию в область OnTick и добавим проверку на количество открытых ордеров. Если общее количество сделок равно 0, наш торговый советник продолжает свою работу с кодом внутри скобок.
Что из себя представляет функция TotalOpenOrders?
В этой функции у нас есть счетчик (total_orders), который в конце возвращает общее количество открытых ордеров. Также у нас есть цикл for, который перебирает все открытые ордера. Если советник найдет ордер, соответствующий вашему символу и MagicNumer, счетчик увеличится на 1 (это записывается с помощью ++).
Теперь у нас все еще есть проблема. Если свеча слишком длинная, советник открывает вторую сделку на покупку непосредственно после того, как первая сделка на покупку закрывается с помощью StopLoss или TakeProfit. Мы должны добавить вторую функцию «IsNewBar».
Эта функция будет представлять тип bool. Она вернет true, если в Metatrader сгенерирована новая свеча, иначе она вернет false.
Давайте поместим эту функцию прямо над функцией TotalOpenOrder и вызовем ее в области OnTick вместе с TotalOpenOrders().
4-5 или 2-3 значные котировки
Давайте разберемся с проблемой котировок, которые могут предоставлять нам разные брокеры.
Сейчас мы используем предопределенную переменную _Point для преобразования TakeProfit и StopLoss. Но мы хотим создать функцию, которая предоставит нам одинаковое значение для 4 и 5 и соответственно 2-х и 3-х торговых инструментов. Для начала мы создаем глобальные переменные MyPoint и MySlippage. Поместим их прямо под нашими входными параметрами:
Теперь мы создаем функцию, которая сохраняет правильное значение в этих 2 переменных (MyPoint и MySlippage) и помещаем их в наши пользовательские функции:
Мы должны рассчитать эти значения только один раз. Только когда мы прикрепляем наш торговый советник к графику. Поэтому мы вызываем эти функции в разделе OnInit():
Теперь мы можем возвратить наши TakeProfit, StopLoss и Slippage к номальным значениям:
Далее мы заменяем все Slippage и _Point в функциях OnTick нашими 2 новыми глобальными переменными MyPoint и MySlippage. Таким образом, функция OrderSend будут выглядеть следующим образом:
Торговый советник и ECN брокеры
На ECN брокерах мы не можем отправить ордер с TakeProfit или StopLoss. Сначала нам придется отправить наш ордер без них, а затем изменить его.
Сначала мы сохраняем номер тикета из только что открытого ордера в переменной int ticket. Затем мы проверяем, получен ли мы данный ticket от нашего брокера. Далее мы вызываем функцию OrderModify. Функция OrderModify возвращает true или false, которые мы сохраняем в переменной bool res. Мы проверяем результат с помощью if (! Res) (так же, как if (res == false)) и выводим соответствующее сообщение.
Программы для создания советников для MT4 и 5
Программа для создания советника является не чем иным, как автоматизированным алгоритмом торговой стратегии. Если Вы имеете проверенную торговую стратегию Форекс, то при желании можете самостоятельно автоматизировать ее для MT4 и 5, превратив в торгового робота.
Однако чтобы создать советник для Metatrader, необходимо уметь пользоваться языком программирования «Meta Quotes Language», а это умеют делать далеко не все. Как раз для тех, кто не силен в программировании и предназначена программа для создания советника для MT4 и 5.
Сегодня, Вы можете найти массу обучающих материалов на русском языке о том, как написать советник при помощи MQL, но как говорилось выше, новичкам разобраться во всем этом достаточно сложно, а ведь они, как и любой другой трейдер мечтают о создании своей собственной уникальной автоматизированной стратегии, то есть о советнике Форекс для Metatrader.
РЕКОМЕНДУЕМ: ЛУЧШИЕ ФОРЕКС БРОКЕРЫ 2021 ГОДА НА ВЕДУЩИХ РЕЙТИНГАХ
ТОП ЛУЧШИХ БРОКЕРОВ БИНАРНЫХ ОПЦИОНОВ 2021 ГОДА
Не требуется верификация! | обзор | отзывы | НАЧАТЬ ТОРГОВЛЮ С 10$
Старт с 300 рублей. | обзор | отзывы | 60.000 РУБЛЕЙ НА ДЕМО
Депозит от 5$. Копирование сделок. | обзор | отзывы | ПОПРОБОВАТЬ СИГНАЛЫ
Поэтому мы хотим рассказать Вам о некоторых популярных на сегодняшний день программах для создания советников Форекс для MT4 и 5. Некоторые из них на русском языке, а некоторые если даже и не русифицированы, то понятны на интеллектуальном уровне, поэтому разобраться в них будет не сложно.
Программа для создания советника Форекс «StrategyQuant» для MT4 и 5
Итак, начнем с того, что сама программа для создания советника StrategyQuant является универсальной, так как способна создавать сложные алгоритмы для Forex трейдинга и также опционной торговли и торговли акциями. Уникальность программы в том, что от самого трейдера не требуется каких либо знаний в области торговли и программирования. Результат использования данного алгоритма будет сохранен как советник для metatrader, причем с полным кодом.
Как же работает программа для создания советника StrategyQuant?
StrategyQuant является программным обеспечением, не имеющим ни опыта в трейдерстве ни мозга, она попросту сочетает стандартные доступные блоки (цены, индикаторы и тому подобное) для создания новых торговых правил. Затем все это тестируется по историческим данным, чтобы определить, насколько стратегия эффективна.
Начинается все с выбора правил, которые могут быть представлены показаниями стандартных индикаторов:
Затем необходимо выбрать валютную пару и промежуток времени, а также фильтр отбора прибыльных стратегий (допустимые просадки, прибыльность, убытки и тому подобное). Указав все интересующие нас параметры – запускаем генератор стратегий.
Вариантов создания торговых систем, заложенных в программу StrategyQuant разработанную с целью создания советников Форекс под Metatrader огромное количество.
Подведя итоги можно сказать, что программа для создания советника StrategyQuant даст возможность создавать массу самых уникальных стратегий торговли, разрабатывать системы под любые сроки и виды рынков, а не только для Форекс, сохранять стратегии в виде торговых роботов с полным кодом, улучшать уже имеющиеся стратегии.
Еще одна программа для создания советника «Ensed Cor», подходящего для MT4 и 5
По большому счету, любая программа для создания советника для MT4 и 5 работает по аналогичным алгоритмам, и основными отличиями такого ПО являются дополнительные функции. Рассматриваемый нами программный конструктор Ensed Cor, предлагает использование минимального набора функций.
Примечательно еще и то, что данный конструктор может замечательно работать как с «заточенными» индикаторами metatrader-а, так и с версиями пользовательских алгоритмов. Просто нанесите на графическое окно инструмента необходимые индикаторы и сохраните шаблон, после чего загрузите его в Ensed Cor.
Настройки вводятся в отдельной вкладке ПО, после чего все параметры будут доступны в исходном коде советника.
Неплохая разработка программы «Expert Advisor» для создания советника Forex
Терминал Metatrader 5, сравнительно недавно появился на рынке Форекс, поэтому на русском языке программ для создания под него советников пока нет. Но это не страшно, программа для создания советников и других алгоритмов Expert Advisor, хоть и не русифицирована (пока), но является интуитивно понятной, так как представляет собой графическую среду с набором уже готовых блоков торговли, позволяющих создать торгового робота буквально в считанные минуты, причем без навыка программирования.
В программе реализован подход, позволяющий создавать визуальные представления сигналов и стратегий торговли, то есть Вы как бы работаете с бумагой и карандашами. Полученные диаграммы торговли в автоматическом режиме анализируются MQL5 генератором и преобразуются им в уже готовые к торговле советники.
ЛУЧШИЕ ФОРЕКС БРОКЕРЫ, ПО ДАННЫМ РОССИЙСКОГО РЕЙТИНГА НА 2021 ГОД:
А ТАКЖЕ ЛУЧШИЕ БРОКЕРЫ БИНАРНЫХ ОПЦИОНОВ НА СЕГОДНЯ:
Самые выгодные условия! ТОРГОВЛЯ БЕЗ ВЕРИФИКАЦИИ | обзор / отзывы
Доходность до 85%. 30.000 НА ДЕПОЗИТ | обзор / отзывы
Торговые системы и индикаторы. 10.000 НА ДЕМО СЧЕТ | обзор / отзывы
Чтобы создать торгового робота при помощи программы Expert Advisor и начать торговать, нужно понять такие моменты:
Trading diagram (торговая диаграмма) является графическим представлением робота, которое отображает процесс принятия решений системой торговли. Такие диаграммы создают из специальных блоков, соединяющихся между собой. В результате получаются сложные торговые советники. Главное правильно задать параметры таких блоков и связать их между собой.
Итак, запускаем программу и на торговую диаграмму помещаем несколько блоков «Technical Analysis»:
Для определения торговых условий будущей стратегии, кликните по иконкам «ТА» мышкой и задайте параметры. К примеру, для открытия длинных позиций:
Для открытия коротких позиций:
Далее, на диаграмму торговли поместим блоки «SELL» и «BUY»:
Теперь необходимо задать параметры «Stop Loss» / «Take Profit», а также величину «Trailing Stop» для блока «BUY»:
То же самое проделайте с блоком «SELL»:
Далее соединяем между собой все блоки и получаем диаграмму торговли:
После того, как Ваша диаграмма торговли будет готова, необходимо сгенерировать код торгового робота. Для этого следует выбрать в подменю главного меню пункт «Trading Diagram» и в выпадающем окошке активировать «Generate MQL5 Code»:
Также, программа полностью преобразует диаграмму торговли в работоспособный торговый робот. После того, как будет сгенерирован код советника, он станет доступным для работы с ним в терминале metatrader 5. Чтобы советник начал торговать просто запустите его на своем рабочем графике.
Программная разработка для создания советника «Gordago Forex Optimizer»
В заключение хотим рассмотреть еще одну программу современности – «Gordago Forex Optimizer». Данное ПО практически не отличается от платформы metatrader, при этом сам процесс создания программных модулей реализован достаточно удобно.
Окно для работы разделено на две области (верхняя/нижняя). В верхней Вы задаете параметры вхождения в рынок, а в нижней области, задаются условия, по которым ордера будут закрываться.
Как видите, все очень просто и понятно, хоть конструктор и не на русском. Все стратегии, данный конструктор сохраняет с расширением «.gso».
Создаем советник в программе Forex ЕА generator для MT4
ТОП БРОКЕРОВ, ПРИЗНАННЫХ НЕЗАВИСИМЫМИ РЕЙТИНГАМИ
ЛУЧШИЕ ФОРЕКС БРОКЕРЫ ПО ДАННЫМ «ИНТЕРФАКС»