Если он успешно выставлен, то происходит проверка параметра CloseOppositeOrder — разрешение закрывать ордер в противоположном направлении после открытия текущего. Мы получили два значения по быстрой МАшке и два по медленной на и свечах. Просто прописываете ее название в коде и нажимаете клавишу F1. Хорошая новость в том, что вам нет необходимости их все хранить в голове. Для получения данных МА на свече мы создадим переменную дробного типа (поскольку значение МА хранятся в цене) и воспользуемся функцией iMA.
Для этого поставим советник на быструю оптимизации с генетическим алгоритмом по Профит Фактору. Мы видим, что он вначале открывает, а потом модифицирует ордер. Комментарии дадут лучше понять то, что делает советник.
1 Создаем советник, торгующий по сигналу двух скользящих средних
- Для МА нам важно знать ее период, а также тип сглаживания.
- Есть необходимость написать или доработать советник, скрипт или индикатор для торговой платформы MT4 или MT5?
- Далее же вы можете пробовать и экспериментировать с этим кодом, менять существующие условия, добавлять дополнительные и т.д.
- Комментарии дадут лучше понять то, что делает советник.
- Функцию для открытия ордера мы рассматривали на прошлом уроке, поэтому останавливаться на ней подробно нет смысла.
Также стоит заметить, что торговля по показателям всего одного технического индикатора не рекомендуется никому. Да и вообще вы должны понимать, что из всей выборки 211 прогонов этот просто лучше всего подстроился под историю и показал наибольший профит фактор. Как видно по графику доходности, данный пример показал себя лучше по сравнению с предыдущим нашим советником. Выберем лучший вариант основываясь на прибыли и максимальной просадке.
Множество трейдеров, торгующих на финансовом рынке, хотя бы раз в жизни задумывались о том, что было бы неплохо иметь собственную программу-советника, которая бы помогала получать стабильную прибыль. Есть необходимость написать или доработать советник, скрипт или индикатор для торговой платформы MT4 или MT5? Во-первых, данный тест шел четыре года, а сделок всего 118, что очень мало. Также нужно посмотреть, как ведет себя функция принудительного закрытия противоположного ордера в журнале. Не получилось — советник делает паузу в 3 секунды и обновляет данные в предопределенных переменных и массивах-таймсериях, далее пробудет закрыться снова.
▶️ Запуск советника
Опыт работы с API Binance. Хотите автоматизировать Вашу торговлю? Вы несёте полную ответственность за принятые в ходе работы торговые решения. Все материалы на сайте носят исключительно информационный характер и не являются указанием к действию. Далее же вы можете пробовать и экспериментировать с этим кодом, менять существующие условия, добавлять дополнительные и т.д.
Открытие ордера по показаниям индикатора
Если условие соблюдено, то активируется функция открытия рыночного ордера. То есть для получения данных индикатора ATR есть функция iATR, для Cтохастика это iStochastic, ну и для скользящей средней соответственно iMA. Название функций для работы с техническими индикаторами начинаются на букву i. Притом для классических индикаторов в редакторе Meta Editor уже предусмотрено порядка 37 функций для удобства импорта их данных. Импорт данных индикатора выполняется с помощью всего одной функции. Соответственно нам нет никакого смысла каждый тик узнавать значение скользящих средних и тормозить тем самым работу советника.
Если вы спрашиваете себя, зачем вначале модифицировать ордера, а уже после только отрывать, то тут все логично. Если у ордера нет ТП или СЛ, то идет его расчет в зависимости от внешних значений и происходит модификация с последующим принтом об успешности операции. Соответственно, переменная cnt_b будет хранить в себе актуальное количество открытых ордеров на покупку, а cnt_s на продажу. Сначала мы активируем цикл for, который будет подсчитывать и модифицировать уже открытые ордера.
- Готовый советник может быть сохранён на любом этапе его создания в формате mql4.
- Давайте же попробуем модифицировать уже изученный код и добавим условие входа по пересечению двух скользящих средних (МА) разного периода.
- Теперь нам остается создать две пользовательские функции вне OnTick() для открытия текущего и закрытия противоположного ордера, а именно OpenTrade() и CloseTrade().
- Для того, чтобы определить пересечение двух линий индикаторов МА, нам нужно знать их данные в момент закрытия последней свечи, а также предыдущей свечи.
- Если условие соблюдено, то активируется функция открытия рыночного ордера.
1 Библиотека для расчета мани менеджмента советников
Суть урока — научиться использовать сигналы классических индикаторов в торговой системе. Давайте же попробуем модифицировать уже изученный код и добавим условие входа по пересечению двух скользящих средних (МА) разного периода. Выбор таймфрейма для торговли – одна из проблем, с которой на начальном этапе сталкивается каждый трейдер.
На каком таймфрейме лучше всего торговать
Ведь когда помощник пишется вручную, необходимо заранее чётко продумывать каждый, даже самый малозначительный параметр будущей программы. Готовый советник может быть сохранён на любом этапе его создания в формате mql4. Она позволяет выбирать параметры, значения и другие условия, от которых будет зависеть алгоритм введения заявок.
Сколько нужно денег, чтобы торговать на Форекс
В прошлом примере советника мы не учти возможность того, что сервер нам может не позволить модифицировать уже открытый ордер по какой-либо внутренней ошибке. Перебор идет только по рыночным ордерам (выделяется по MODE_TRADES), начиная от максимального количества открытых ордеров OrdersTotal() в сторону уменьшения. Из новых переменных у нас как написать советник для mt4 появится bool переключатель для закрытия существующего ордера при появлении противоположного сигнала индикатора, а также настройки скользящей средней. После того, как все вышеуказанные данные будут внесены в программу, необходимо установить фильтры, по которым будет определена степень эффективности отбираемых стратегий.
Это размер торгового лота, проскальзывание, СЛ, ТП, комментарий и магик номер. Начнем с включения библиотеки ошибок и объявления внешних переменных, необходимых для открытия ордеров. Плюс при наступлении флета она дает очень большое количество ложных сигналов.
На этом уроке мы продолжим изучать теорию создания торговых советников.
Из него понравившиеся помощники могут быть отправлены в «Реестр стратегий», после чего появится возможность снова выставить условия для новых фильтров отбора и протестировать их на реальных исторических значениях. В данном случае этот цикл нам нужно только как дополнительная мера на случай, если с первого раза у советника не получится закрыть рыночный ордер. Если все эти условия соблюдены, запускается второй цикл из трех попыток на закрытие ордера. Получение данных индикатора и проверка условий для входа в рынок будут происходить один раз в момент открытия новой свечи. Поэтому в этой версии советника мы вводим проверку на наличие целей у ордеров каждый тик.
📋 Системные требования для работы с торговыми роботами
В этот раздел входят значения различных индикаторов (RSI, Stochastic, MACD или любых других), классические графические паттерны, время и другие условия работы. После выделения ордера идет стандартная проверка на то, чтобы он был рыночным, его символ совпадал с текущим, как и магик номер соответствовал магику вашего советника. Именно так – на основании входных данных StrategyQuant сгенерирует большое количество вариантов помощников, которые после создания пройдут через фильтр эффективности, установленный трейдером. Функцию для открытия ордера мы рассматривали на прошлом уроке, поэтому останавливаться на ней подробно нет смысла. Представленная последовательность действий схематически показывает процесс работы кода будущего советника.
Магики должны совпадать друг с другом и тип ордера должен быть противоположный тому, что был только что открыт. Функция для поиска и закрытия противоположного ордера представляет собой простой цикл по всем рыночным ордерам. Теперь нам остается создать две пользовательские функции вне OnTick() для открытия текущего и закрытия противоположного ордера, а именно OpenTrade() и CloseTrade().