Пишем эффективного советника
Советника назову «Binarnic». Имя файла будет выглядеть например, так: Binarnic_1.0.
Думаю с этими простыми правилами согласятся все, ибо они разумны.
Всем доброго вечера и хорошего настроения!
Идея с «несливатором» сама по себе интересна, правда, есть очень много «Но!»
В общем, стартуйте, постараюсь помочь.
С уважением, Владимир.
Собираем базовый материал, на основании которого будем делать код эксперта. Вот скриншот очередной ошибки моего торга на бинарных опционах:
Договоримся о терминах пробитие и прокол. Напрмер, пробитие вверх и прокол вверх.
На данном скриншоте очередная зелёная свеча закрылась выше синего уровня локалного хая. Этот уровень она пробила. Теперь прокол:
MQL4: Пишем советник по индикатору открытых позиций трейдеров
Не так давно на сайте появился индикатор открытых позиций трейдеров. Мне он понравился тем, что можно одновременно получать данные из нескольких источников. Кроме того, в рамках написания этой статьи я немного протестировал визуально этот индикатор, и результат показался мне многообещающим. И сегодня мы поработаем с этим индикатором, чтобы использовать его данные в своем советнике.
Итак, сегодня мы будем писать советник, который будет брать данные с сайта и использовать их в анализе. Всю работу эксперта я разделил бы на несколько задач: получение данных с сайта в виде строки, парсинг нужных нам данных из полученной строки, анализ этих данных и совершение сделок, запись статистики в файл для подробного анализа.
Мы будем использовать библиотеку wininet.dll, которая как раз позволяет получать данные из сети. Также мы будем плотно работать со строками, используя такие функции, как StringFind, StringSubstr, StringConcatenate, StrToDouble и прочие.
Советник получился довольно объемным, поэтому конкретный код приводить в рамках статьи будет нецелесообразно. Все это вместе с подробными пояснениями можно увидеть в видеоуроке.
Заключение
Итак, мы написали советник, который берет данные из сети, анализирует их и совершает сделки, исходя из этого анализа. Вы можете получать абсолютно любые данные, которые вам требуются, и которые есть в общем доступе. По большому счету, сложность тут состоит только в том, чтобы правильно преобразовать их из строки для дальнейшего анализа.
Я же пока установлю данный советник на счет и начну собирать статистику для того, чтобы позже продолжить анализ, – подобрать оптимальные уровни, источники данных и сопровождение позиций.
3.1 Создаем советник, торгующий по сигналу двух скользящих средних
Всем привет. На этом уроке мы продолжим изучать теорию создания торговых советников. На прошлом занятии мы использовали систему рандомного входа в рынок, которая показала свою несостоятельность, ведь Форекс это не игра в казино и случайности не могут принести доход трейдеру.
Давайте же попробуем модифицировать уже изученный код и добавим условие входа по пересечению двух скользящих средних (МА) разного периода. Суть урока — научиться использовать сигналы классических индикаторов в торговой системе.
Алгоритм работы советника на MQL4
Представленная последовательность действий схематически показывает процесс работы кода будущего советника. Все действия эксперта также будут происходить в функции обработки событий OnTick. Попробую вкратце описать логику работы: в терминал поступил новый тик, функция OnTick запустился в работу. Советник циклом перебирает все открытые ордера, чтобы провести их подсчет, а также модифицировать те ордера, у которых по какой-либо причине нет выставленных целей. Дальнейшие действия происходят только раз в свечу, а именно: анализ показаний индикаторов, поиск сигнала и открытие ордера с последующим закрытием противоположного.
Торговая система по пересечению двух скользящих средних
Так как этот урок по созданию советника mql4 является вторым по счету, то особо мудрить с торговой системой мы не будем и обратимся к классике. Одной из самых первых стратегий, что я узнал, изучая мир Форекс, была торговля по пересечению скользящих средних. Суть ее логики проста, как две копейки: берутся показания двух Moving Average и сравниваются их положения на графике относительно друг друга. Если быстрая МА пересекла медленную сверху вниз, то стоит предположить, что тренд вниз и это сигнал на продажу. Соответственно при пересечении снизу вверх дает сигнал на покупку. Период торговли пусть будет М15.
На скриншоте медленная МА показана фиолетовым цветом, а быстрая желтым.
Основной минус при использовании скользящих средних заключается в том, что они запаздывают и показывают направление тренда уже после того, как тот сформировался. Плюс при наступлении флета она дает очень большое количество ложных сигналов. Что ж, попробуем проверить как себя покажет советник по этой тривиальной торговой системе.
Пишем программный код советника
Как я уже писал выше, мы будем модифицировать код, который изучили на прошлом уроке, так что можете использовать его в качестве подложки для редактирования, если вам так удобнее.
Начнем с включения библиотеки ошибок и объявления внешних переменных, необходимых для открытия ордеров. Это размер торгового лота, проскальзывание, СЛ, ТП, комментарий и магик номер. Из новых переменных у нас появится bool переключатель для закрытия существующего ордера при появлении противоположного сигнала индикатора, а также настройки скользящей средней. Для МА нам важно знать ее период, а также тип сглаживания.
Функция OnInit() будет включать в себя только оператор, ответственный за умножение внешних параметров в пунктах на десять при условии, чтобы брокер использует пятизнак (трех- для JPY).
Функция OnDeinit() в нашем коде использоваться не будет, нет нужды.
Переходим к функции OnTick(). Сначала мы активируем цикл for, который будет подсчитывать и модифицировать уже открытые ордера. Подсчет нужен, чтобы не открыть второй ордер в таком же направлении, когда первый еще в рынке. Соответственно, переменная cnt_b будет хранить в себе актуальное количество открытых ордеров на покупку, а cnt_s на продажу. Перебор идет только по рыночным ордерам (выделяется по MODE_TRADES), начиная от максимального количества открытых ордеров OrdersTotal() в сторону уменьшения. После выделения ордера идет стандартная проверка на то, чтобы он был рыночным, его символ совпадал с текущим, как и магик номер соответствовал магику вашего советника.
Чтобы не возвращаться потом к этому циклу, мы сразу же добавим в него проверку на наличие целей у ордеров и последующую модификацию при их отсутствии. Тут все просто. Если у ордера нет ТП или СЛ, то идет его расчет в зависимости от внешних значений и происходит модификация с последующим принтом об успешности операции.
Если вы спрашиваете себя, зачем вначале модифицировать ордера, а уже после только отрывать, то тут все логично. Как я объяснял на прошлом уроке, для современных типов торговых счетов, таких как NDD, ECN, STP нельзя модифицировать ордер сразу при его открытии, поэтому действие выполняется поэтапно — открыли, потом выставили цели. В прошлом примере советника мы не учти возможность того, что сервер нам может не позволить модифицировать уже открытый ордер по какой-либо внутренней ошибке. В таком случае этот ордер останется болтаться в рынке без ТП и СЛ, пока вы этого не заметите сами. Это небезопасный подход. Поэтому в этой версии советника мы вводим проверку на наличие целей у ордеров каждый тик. Соответственно на первом тике ордер открывается, а на втором уже модифицируется. Если модификация не пройдет по какой-либо ошибке на этом тике, то на следующем будет предпринята очередная попытка. Данная вариация также полезна, если вдруг пользователь вашей программы или вы по случайности удалите заданные алгоритмом цели. В этом случае советник их просто восстановит, ибо нечего лезть руками в настроенную программу.
Открытие ордера по показаниям индикатора
Переходим к извлечению показаний из индикатора МА. Нам нужно найти тот момент, когда одна линия пересечет вторую и закрепится за ней. Это можно узнать только после закрытия текущей свечи. Соответственно нам нет никакого смысла каждый тик узнавать значение скользящих средних и тормозить тем самым работу советника. Получение данных индикатора и проверка условий для входа в рынок будут происходить один раз в момент открытия новой свечи. Для этого введем переменную Update_Time для хранения времени на глобальном уровне, которая будет сравнивать время открытия текущий свечи со значением, сохраненным в ней. Как только откроется новая свеча, время станет различным и запустится условие проверки с перезаписью значения этой переменной. Прописываем следующий код после цикла проверки ордеров:
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 следует отметить баги бета-версии и будущую запланированную плату за опцию. Так что спешим писать и экспортировать советников, пока платформа имеет открытую лицензию.
На ней можно попробовать создать прототип своей торговой идеи и, если она окажется прибыльной, обратиться к программистам для полноценной ее реализации.
Урок №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() будет выглядеть следующим образом:
Собственно говоря, на этом всё, разработка советника на пользовательском индикаторе завершена.