Содержание
Конструкторы советников Форекс: красивая игрушка или реальный помощник?
Когда есть стабильно прибыльная торговая стратегия, возникает желание превратить ее в автоматический алгоритм, который будет торговать сам и без эмоции, которые часто приводят к убыткам. Но, что делать, когда нет опыта программирования на языке торгового терминала? Помочь в этом может конструктор советников Форекс.
Начнем с определения. Итак, конструктор автоматических советников — это программа, позволяющая в визуальном режиме перевести торговую стратегию в графический вид и получить итоговый программный код для установки и запуска в торговом терминале.
Получить бесплатно ТОП 5 лучших торговых роботов можно здесь!
Статья является обзорной и любые упоминания о конкретном программном обеспечении, торговых марках и брокерах Форекс не является рекламой. Какой конструктор автоматических советников использовать трейдер решает самостоятельно!
Создание роботов в торговом терминале
Автоматизировать свою стратегию можно не выходя из терминала. Как это делает MQL5 Wizard в соответствующей версии терминала. Прежде чем запустить конструктор и нажимать кнопку «Далее» для своих торговых стратегий нужно четко описать следующее:
- какие технические индикаторы используются, их базовые настройки и будут они меняться или нет;
- условия входа, выхода и сопровождения сделок особенно по трейлинг-стопу и Мартингейлу;
- время торговли на Форекс и прочие параметры: спред, проскальзывание и т.д;
- управление рисками: объем открываемой позиции, ее изменение при текущей прибыли/убытках.
Эти три базовых блока присутствуют всегда, независимо от того какой конструктор для создания роботов вы выберете. Другими словами, это торговый план, который должен быть всегда под рукой.
Конструктор от независимых разработчиков
Терминальная визуальная среда разработки хорошо работает на стандартных стратегиях, но для реализации, по-настоящему уникальных торговых идей, помочь могут только «внешние» конструкторы, которые могут быть как платными, так и бесплатными.
Пример нестандартных функций советников, не требующих программирования, но полезных в торговле:
- Конструктор может установить «скрытые» уровни открытия ордеров, которые открываются только при определенных условиях. Хорошо для новостной торговли, ведь уровень предварительно открытых позиций виден брокеру, он вполне может «сбить» их непосредственно перед выходом новости. Здесь входим в рынок, только когда видна реакция на событие (если конечно позволяет торговый поток);
- также для собственных советников можно работать с ордерами Take Profit и Stop Loss. Брокер не видит где «реально» трейдер собирается уходить с рынка и не может при появлении выгодных для него торговых моментов «выдавить» его резким изменением котировки.
- для советников можно использовать внешние программные модули на других языках программирования, таких как C# и Python. Это могут быть алгоритмы машинного обучения, высокочастотной торговли и другие. MQL5 может это делать, но сторонние приложения делают это удобнее, а если это платный продукт разработчики могут оперативно обновлять библиотеки под текущую рыночную ситуацию.
Важно: рекомендуется выбирать конструктор, генерирующий не только исполняемый файл а и исходный код советника. Если исходного кода нет, и все работает «как есть» нет гарантии, что разработчики не включили туда какие-либо инструкции для получения собственной выгоды. Например, рассылку спам сообщений через компьютер пользователя (часто бывает при использовании внешних библиотек типа DDL) или «округление» профита в пользу брокера на несколько центов. Подобные случаи редко, но пока еще встречаются, «поймать» такие действия непросто.
И еще. Даже если в Пользовательском соглашении брокер не запрещает торговлю роботов это не означает, что можно торговать как того хочет трейдер. Если конструктор будет давать код, который сильно нагружает торговый поток или торговля явно будет некорректна, он может быть отключен технической службой до выяснения всех обстоятельств.
Программы создания советников от брокеров Форекс
Для того чтобы не иметь проблем выбирайте конструктор от брокера. Так вы избежите возможных проблем с технической службой и будете уверены, что учтены все «неторговые» факторы такие как проскальзывание, комиссии, спред и реквоты. Пример подобных решений от брокера – платформы R Trader и StrategyQuant компании RoboForex. Еще раз напоминаем, что информация приведена только как пример без какой-либо рекламы и рекомендаций.
Процесс автоматизации торговых стратегий такой же, как и в предыдущих вариантах. Имеется набор всех стандартных технических индикаторов плюс оригинальные инструменты, поставляемые вместе с торговым терминалом MetaTrader. Трейдеру нужно только установить порядок действий для открытия/закрытия сделки и настроить параметры индикаторов и манименеджмента. StrategyQuant обладает расширенными возможностями для тестирования и заявлен как конструктор для скальпинга и высокочастотной торговли. К подобным заявлениям нужно относиться с долей скепсиса, даже с учетом того, что краткосрочные сделки проводятся «внутри» брокера не выходя на межбанк.
Если вас все устраивает в вашем брокере Форекс, нет проблем использовать визуальный инструмент для создания собственных советников. Но, при переходе на другую компанию могут быть проблемы: возможно, нужно будет поменять настройки индикаторов под новые торговые условия.
Тестирование программного кода
Неважно, какой конструктор генерировал код, тщательное тестирование торговых алгоритмов обязательно перед их использованием в реальной торговле. При этом нужно не только правильно выбрать исторические периоды, на которых будет идти проверка, а и учесть особенности используемых торговых терминалов. MetaTrader 5 по умолчанию предлагается большинством брокеров Форекс, но «четверка» еще достаточно популярна, особенно на маломощных компьютерах. Давайте рассмотрим обе версии с точки зрения тестирования автоматических торговых алгоритмов.
MetaTrader 4
Медлительность тестера четвертой версии в первую очередь вызвана использованием только одного процессорного ядра, поэтому простое увеличение вычислительных мощностей мало влияет на общую скорость теста советников. Частично решить проблему, можно запустив параллельный терминал с другим набором параметров. Кроме скорости MT4 имеет еще ряд существенных недоработок:
Отсутствуют реальные тиковые данные
На реальном рынке терминал Форекс показывает каждый отдельное изменение цены (тик), приход которого никак не связан со временем. Тестер работает иначе: все исторические данные хранятся в минутном (М1) таймфрейме, на базе которого затем моделируются более длительные промежутки. Большинство брокеров в своих торговых историях не сохраняет тики, и как цена пришла к определенному значению, мы не видим. Читатели могут сказать, что это не так уж и важно и будут неправы – отсутствие данных о тиковом объеме не дает возможность понять, какова была активность рынка в нужный момент времени, даже если конструктор все сделал правильно можно получить неправильный результат тестирования. Может движение вызвали несколько манимейкеров или наоборот цену двигает основная рыночная толпа.
Для решения этой проблемы тестирования роботов были разработаны специальные тиковые тестеры и одними из самых популярных, являются Tickstory Lite (бесплатная) или платная Tick Data Suite позволяющая анализировать советники не только по тиковому потоку, плавающему спреду, а и эмуляции проскальзывания.
Качество моделирования
При стандартных торговых настройках качество редко поднимается выше уровня 90%, но если загрузить тики можно получить и все 99%. В Интернете говорят, что 90% это никуда не годится, нужно 99% и особенно «грешат» этим платные продукты и методики. Как же все происходит на самом деле? Не будем спорить, посмотрим, по какой формуле рассчитывает качество теста компания MetaQuotes (она есть в свободном доступе):
Как видим значение «качества» только показывает, на каких таймфреймах все происходило. Если взять М1 в качестве основы для более старшего М15, то получим стабильные 90%. Скажем больше: результат для советников «99%» был придуман исключительно для того, чтобы показать тестирование именно на тиках. Трейдер должен всегда помнить: качество тестирования и качество котировок — это принципиально разные вещи.
Зависимость от брокера
Выше мы уже говорили об этом, если используется внешний конструктор — это проблема. Тиковые данные у разных брокеров Форекс будут отличаться. В принципе разница в 2-3 пункта между разными поставщиками ликвидности считается вполне допустимой, но встречаются уникальные конторы, в которых даже цены закрытия отличаются от других на 10-15%. Также могут пробелы в самой базе данных – могут отсутствовать несколько часов, а то и дней.
MetaTrader 5
В язык MQL5 было добавлено много новых возможностей, но появился и минус – советники, написанные для MT4, работать не будут. Для разработчиков это несомненный плюс, так как появился мощный поток клиентов, вынужденных переписывать уже работающие продукты для новых терминалов или переделывать их через конструктор MQL5 Wizard. Тем более компания MetaQuotes получает свой процент от каждого заказа в разделе «Фриланс», но у каждого свой бизнес, ничего личного. Из других особенностей:
Использование нескольких процессорных ядер
Конструктор может задействовать любое их количество через специальный менеджер агентов тестирования. Также можно подключиться к облаку тестирования MetaQuotes где за умеренную плату приобрести дополнительные вычислительные мощности других трейдеров. По факту наблюдается почти трехкратное увеличение скорости тестирования.
Проблема с тиковыми данными
MT5 использует только тики, и кажется, что трейдеры могут начинать ликовать. НО! Нет возможности импортировать свою проверенную базу котировок для проверки советников, а только автоматически получить их от брокера. На первый взгляд и это хорошо – где торгуем там и проверяем, но получаем второе НО! Хорошо, когда есть история хотя бы за последние 1-2 года, на деле у многих брокеров и за последние несколько месяцев ничего нет. В случае отсутствия данных терминал выгружает их с сервера MetaQuotes, а уж, какое их качество не знает никто.
Сравнение с результатами MT4
Результаты на обеих платформах получаются примерно одинаковые, но на большинстве советников в МТ5 лучше на несколько процентов. Вероятнее всего это связано с более точными котировками.
Получить бесплатно ТОП 5 лучших торговых роботов можно здесь!
Подведем итог. Конструктор советников Форекс представляет собой хороший инструмент для разработки внутридневных, средне- и долгосрочных советников на базе стандартных технических индикаторов. Здесь нет повышенных требований к скорости исполнения торговых приказов как в скальпинге и высокочастотной (HFT) торговле, поэтому получаемый код не требует точной оптимизации, может сразу использоваться на демо или реальном счете.
Комментарии
Все материалы на сайте носят исключительно информационный характер и не являются указанием к действию. Представленные данные – это только предположения, основанные на нашем опыте. Публикуемые результаты торговли добавляются исключительно с целью демонстрации эффективности и не являются заявлением доходности. Прошлые результаты не гарантируют конкретных результатов в будущем. Проведение торговых операций на финансовых рынках с маржинальными финансовыми инструментами имеет высокий уровень риска, поэтому подходит не всем инвесторам. Вы несёте полную ответственность за принятые торговые решения и результат, полученный в ходе работы.
Как написать Форекс робота: инструкция по созданию
Рано или поздно все трейдеры приходят к мысли о создании своего собственного торгового робота Форекс. Торгуя самостоятельно, вы тратите много личного времени, которое можно было бы уделять своим родным и близким. Ну а так как появилась возможность автоматизировать процесс заключения сделок и рыночного анализа, то почему бы не воспользоваться этим?
Когда я пришел к такому решению после нескольких лет самостоятельной торговли, то у меня возникла проблема выбора — написать Форекс робота самому или же купить или обратиться к профессиональному программисту. Естественно, первый вариант будет самым выгодным и дешевым. Но одновременно и самым сложным.
Сегодня я расскажу вам, как поэтапно создать робота самостоятельно. Разобравшись в этом вопросе, все окажется не таким уж и сложным, как может показаться на первый взгляд.
Трейдер сильно отличается по мышлению от обычного человека. Его головной мозг мыслит исключительно свечными паттернами, фигурами графического анализа и комбинацией сигналов от технических индикаторов. Смотря на ценовой график, он видит не просто хаотично движущуюся то вверх то вниз линию, а борьбу покупателей и продавцов. Он может заранее понять их поведение и предугадать будущее движение цены. Но для этого нужно уметь производить множество расчетов в голове.
Скажу честно, наличие автоматизированного Форекс робота не избавит вас от финансовых проблем и не сделает богатым человеком. Без наличия хотя бы базовых знаний в области технического анализа, вы не сможете написать Форекс робота, который бы приносил прибыль. Поэтому рекомендую первым делом поучиться рыночному анализу и создать свою собственную прибыльную торговую стратегию, протестированную и полностью пригодную к работе.
Ну а после у вас самих уже возникнет желание перенести ее в программный код советника, который будет вместо трейдера сам анализировать рынок и заключат сделки в рамках тех правил, которых вы и сами придерживались, торгуя самостоятельно. Более того, робот позволяет избежать многих ошибок, которые периодически происходят по причине человеческого фактора, от которого никто из нас не застрахован. Ведь все мы люди, все мы совершаем ошибки. Мы же с вами не роботы!
Этап 1: разработка идеи
Нельзя просто так взять, и создать из воздуха торгового советника. В первую очередь он должен базироваться на определенной идее. Многие наивные новички по-прежнему ищут тот самый священный Грааль, который бы приносил только прибыльные сделки. Я уже давно развеял этот миф, хотя признаться честно, и сам на первых порах верил в такую волшебную палочку. Но если бы существовал беспроигрышный робот, тогда все бы мы с вами ходили уже давно миллионерами. Только вот никакого рынка бы уже не существовало.
Не старайтесь скопировать идею какого-то робота в сети, про который пишут, что он якобы мега успешный. Это далеко не факт. Создайте собственную идею, продумайте свой скелет торговой стратегии. Как бы вам хотелось, чтобы робот торговал? По тренду или во флете? По каким индикаторам? Вы должны детально знать их принцип работы, чтобы в будущем была возможность оптимизировать и подкорректировать его результат.
Этап 2: предварительная подготовка к созданию
Прежде чем написать Форекс робота, вам нужно предварительно ответить на следующие важные вопросы, которые являются своего рода фундаментом:
• какова основная идея вашей стратегии,
• какие задачи будет решать программа по автоматическому трейдингу,
• понадобятся ли свечные паттерны или элементы графического анализа? Или же достаточно будет обойтись классическими индикаторами,
• нужен ли будет какой-нибудь второстепенный дополнительный скрипт,
• сможете ли вы реализовать все вышеперечисленные идеи самостоятельно, или же все-таки придется обращаться к профессиональному программисту.
Отнеситесь со всей ответственности к ответам на такие вопросы, так как в будущем они сэкономят вам массу времени, денег и нервов при создании собственного робота для торговли на Форекс.
Самым идеальным вариантом будет тот, когда у вас на руках уже имеется собственная прибыльная торговая стратегия. Вы досконально знаете все ее особенности, сигналы. Вы четко понимаете, на основании каких индикаторов генерируются рекомендации к торговле и так далее.
Если ваше представление о торговом роботе будет расплывчатым уже на первом этапе, то в будущем ничего хорошего может и не получиться. В итоге вы еще больше потратите денег на его создание. А если создадите некачественный продукт, то и вовсе потеряете не один депозит при торговле.
Этап 3: Конструктор
Крайне важно понимать рынок в целом. За счет чего происходит ценообразование, что влияет на динамику котировок и так далее. Порой и вовсе на первых порах будет достаточно прочитать знаменитую книгу Билла Вильямса «Теория Хаоса», чтобы научиться выявлять рыночные закономерности и понять, почему здесь нельзя открывать сделку, а вот здесь в самый раз!
Одним из самых популярных конструкторов для создания советников является MQL5 Wizard. Именно здесь создается большинство из существующих советников для торговых терминалов Метатрейдер 4 и 5.
Такой мастер-конструктор будет идеален для реализации простых и банальных идей, как пересечение двух скользящих средних. Здесь, даже особо не требуются навыки программирования и знание сложных языков программирования. Более того, сразу после создания вы можете протестировать свое творение прямо в том же MetaTrader и убедиться лично на истории котировок, стоит ли ваш робот ставить на реальный торговый счет, или же все-таки нужно доработать его.
Этап 4: MQL5 WIZARD
Ну а чтобы написать Форекс робота с более сложным алгоритмом, потребуется уже специальная программа. Для этого запускаем торговый терминал МТ5 и нажимаем на кнопку F4, тем самым запуская редактор по созданию советников.
После этого пишем название самого советника и заполняем стандартные входные данные. Следующим этапом будет добавление модулей технических индикаторов, на основании которых программа будет анализировать рынок и генерировать торговые сигналы. Индикаторы могут быть как классические встроенные в сам Метатрейдер, так и авторские, которые были созданы вами лично или другими более опытными профи.
На официальном сайте конструктора можно найти подробную информацию про каждый классический индикатор. Здесь же можно скачать и авторские. Выбираете один из них. Далее необходимо настроить его для работы. Заполняем все необходимые поля: период, тип, значения и так далее.
Можно выбрать параметры самой сделки — закрывать сразу после получения торгового сигнала или же самостоятельно выставлять стоп лоссы и тейк профиты. В настройках этой программы по самостоятельному созданию торговых роботов можно указать размер ставки либо в виде торгового лота, или же в процентном соотношении от суммы вашего депозита.
Если вы относитесь к рискованным трейдерам, то можно добавить принцип Мартингейла. В рамках такой тактики после каждой убыточной сделки робот будет удваивать сумму ставки. Тем самым, в случае следующего успеха прибыль перекроет все прошлые потери. Но это только в теории. На практике же нужно использовать эту методику очень осторожно. А новичкам и вовсе я бы рекомендовал воздержаться на первых порах от удваивания и торговать по классической схеме.
Этап 5: Создание сложного торгового советника
Ранее я описал процесс создания простого и примитивного Форекс Робота. Но сейчас трейдеры предпочитают создавать советника с несколькими индикаторами, дополненными элементами графического или свечного анализов.
Теперь представим, что у вас уже имеется неплохой опыт, вы точно знаете, что хотите получить от торгового советника, у вас есть проверенная идея, которая уже неплохо показывает себя на практике. Далее уже можно переходить к написанию детальных правил для вашей торговой стратегии. Зачастую у людей с гуманитарным складом ума именно на этом этапе возникают трудности, так как не все могут понять сложный технический язык по созданию Форекс советника.
Эта проблема очень распространенная. Ну а так как спрос рождает предложение, то сейчас появилась целая профессия специализированных программистов, которые смогут легко написать Форекс Робота.
Одно хочу сказать, что детально проработанная торговая стратегия — это уже половина работы. Но помните, что это не задача и обязанности самого программиста. Он будет заниматься только технической стороной. Никакую готовую торговую стратегию, тем более прибыльную, он не обязан вам предоставлять, пусть даже за большие деньги. Вы должны создать ее и детально расписать самостоятельно и перед тем, как будете обращаться к программисту.
Мало просто перечислить ему список индикаторов, по которым будет работать робот. Вы должны расписать, как и когда будет открываться сделка, каким способами она будет сопровождаться, при каких условиях закрываться, в какое время, в каких объемах, и многое другое. Программист не будет продумывать и догадываться про это вместо вас.
Если в вашем задании не будут прописаны подобные мелочи, то специалист по написанию робота может сам их дополнить, как посчитает нужным. Но это может в будущем сыграть с вами злую шутку.
Подводя итоги, вы должны описать как можно больше подробностей вашей стратегии и торговли. Чем их больше, тем легче будет специалисту реализовать то, что вы хотите.
Этап 6: Выбор программиста
Здесь тоже стоит учитывать некоторые нюансы. Помните, что цена может сильно различаться. Все специалисты на тех же фриланс-биржах будут устанавливать свои цены. И порой они не всегда могут быть адекватными. Есть определенный минимум, ниже которого ни один из адекватных программистов не будет браться за ваш заказ. Если у него за плечами большой опыт работы, то и вовсе он будет завышать цену. Тут уже вы должны сами для себя определить, сколько вы готовы выделить денег на создание своего Форекс Робота. Ну и далее уже выбирать исполнителя исходя из таких рамок.
Также я вам советую не быть чересчур уж щедрыми и разбрасываться деньгами. Бывают и такие недобросовестные программисты, которые поняв вашу щедрость, могут и вовсе обнаглеть и продолжать сдирать с вас денежки под разными предлогами.
Если вы ни разу не обращались за помощью к таким специалистам, то лучше спросить стоимость на специализированных независимых форумах. Там вам расскажут, какая примерно должна быть стоимость вашего заказа.
Общайтесь только с проверенными и опытными разработчиками, у которых за плечами уже далеко не первый год создания подобных программ и советников для автоматической работы на Форексе.
Не бойтесь общаться с ними, спрашивайте любые моменты, которые вам не понятны. Постарайтесь сами вникнуть в процесс создания, внимательно следите за каждым его этапом. Будьте в курсе всего, что происходит с вашим будущим торговым советником. Написать Форекс робота сможет каждый адекватный программист. Но вот учесть все нюансы в самой торговой стратегии и реализовать их в программе можно только сообща! В такой работе всегда должны принимать участие двое человек как минимум. Это вы и сам программист!
Этап 7: Получение готового советника
Ну и наконец-то наступил волнительный момент, когда вы получаете на руки своего готового к работе торгового робота. Его остается только включить и настроить к работе. Ну а далее можно спокойно расслабиться и периодически выводить прибыль.
Поверьте, это столь же волнительный момент не только для вас, а для самого программиста. Ведь позади долгие недели, когда вы плодотворно сотрудничали, дорабатывали, изменяли, корректировали торгового робота. Ему тоже не хочется сдать некачественный продукт. Так как от этого пострадает его репутация. Ну а это напрямую скажется на уменьшении потенциальных клиентов в будущем.
Но и здесь вам не нужно требовать от специалистов создания Грааля и на 100% безубыточного робота. Такого попросту не существует. Ни один робот Форекс не совершенен. Точно также как и ваша торговая стратегия.
Да, вы будете настолько окрыленными, что появятся мысли: «Раз я платил деньги, то он должен мне создать такого робота, который будет приносить только прибыль». Но опять же повторюсь. Программист — всего лишь исполнитель, который работает по тому ТЗ, которое составили вы сами. Поэтому если получится так, что торговый советник не будет работать, то здесь может присутствовать и ваша вина. Поэтому не нужно полностью перекладывать ее на исполнителя.
В ваших же интересах полностью контролировать работу исполнителя, даже если вы ничего не понимаете в самом языке программирования и других технических сторонах. Участвуйте в тестировании, проводите совместно предварительные бета-тесты. В общем, нельзя просто отдать программисту бумажку и ждать получения готового продукта. Важно постоянно и самому принимать участие в работе.
Заключение
Чтобы написать Форекс Робота, который будет эффективно работать вместо вас, нужно проделать огромную работу. Но не стоит бояться трудностей. Поверьте, процесс его создания очень интересный и увлекательный.
Торговый советник на MQL4: учимся программировать с нуля
В этом руководстве по MQL4 вы научитесь программировать свой собственный торговый советник в MetaEditor.
Прежде чем мы начнем, убедитесь, что вы понимаете следующие типы данных. Каждая переменная, которую мы будем использовать, для начала должна быть определена одним из следующих типов данных:
- int — это обычное число. Например: 1, 15, 521.
- double — число с десятичным знаком. Например: 1,154, 0,0144, 255,145.
- string — строка, слово, фраза. Например: «Ордер на покупку», «Ордер на продажу успешно размещен».
- bool — принимает значения либо false, либо true.
Скоро вы увидите, как их можно использовать.
Торговый советник три белых солдата
Для того, чтобы создать свой собственный торговый советник, для начала вы должны переключиться на 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?
- _Symbol — возвращает текущий торговый инструмент, к которому прикреплен советник.
- OP_BUY — мы хотим открыть ордер на покупку.
- LotSize — размер лота, который мы определили в самом начале.
- Ask — текущая цена Ask, по которой открываются ордера на покупку.
- Slippage — размер проскальзывания.
- StopLoss — это наш StopLoss. Или цена Ask за вычетом цены StopLoss. Запомните, что StopLoss — это целое число (500 пунктов), а Ask — это цена (например, 1.20521). Теперь, чтобы вычесть стоп-лосс из цены Ask, мы должны умножить его на 0,00001 или 0,001. Мы делаем это с помощью предопределенной переменной _Point, которая отражает текущие значением пунктов торгового инструмента.
- TakeProfit — то же самое, как и StopLoss.
- Комментарий — комментарий, который должен появиться в журнале, когда торговый советник разместит наш ордер.
- MagicNumer — магическое число, которое было определено нами вначале.
Нажмите 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)) и выводим соответствующее сообщение.
Теперь наш код будет работать на всех ECN и не ECN брокерах.
Очистим наш код
Наш исходный код выглядит сейчас слишком сложным. Но мы можем его упростить. Для этого мы помещаем торговую логику и OpenOrder / ModifyOrder в пользовательскую функцию и вызываем ее в области OnTick().
Добавляем индикаторы
Теперь я покажу вам, как можно добавить индикаторы в наш торговый советник. Мы добавим индикатор RSI с фильтром скользящей средней.
Во-первых, нам нужны глобальные переменные для хранения значений наших индикаторов, чтобы мы могли работать с ними позже. Добавим их после MyPoint и MySlippage:
Теперь нам нужно создать функцию, которая будет возвращать текущую цену наших индикаторов и далее сохранить ее в наших предопределенных переменных. Добавим их в области пользовательских функций нашего кода:
Мы вызываем функции iRSI и iMA и сохраняем эти цены в переменных. В обоих функциях мы сначала используем текущий символ и таймфрейм, для которых мы хотим получить показания индикаторов. В нашем случае это символ и таймфрейм (период), к которому мы прикрепляем советник.
Для RSI мы хотим, чтобы период 14 рассчитывался по цене закрытия. Скользящая средняя должна быть периодом 200, Сдвиг 0. Что такое 1 в конце? Здесь мы определяем, от какой свечи мы хотим получать эти значения. 0 означает текущую свечу, 1 — предыдущую и т. д.
Чтобы эта функция работала, мы должны вызывать ее в разделе OnTick:
Теперь у нас есть все необходимые значения для создания нашей логики входа. Мы хотим открыть ордер на покупку, если RSI находится ниже уровня 30, а минимум предыдущей свечи находится выше скользящей средней:
Изменяем параметры индикаторов
На данный момент, если мы хотим изменить, скажем, период RSI от 14 до 20, мы должны сделать это в исходном коде. Теперь я покажу вам, как вы можете изменить все параметры индикаторов как обычный входной параметр в Свойствах эксперта. Для этого мы пишем:
Теперь мы должны связать эти параметры с нашими индикаторами и торговой логикой. Для этого мы изменим наш код на следующий:
Источник https://sovetniki-fx.ru/sozdanie-torgovix-robotov/konstruktory-sovetnikov-foreks
Источник https://fin-bank.com/roboty-dlya-zarabotka/780-kak-napisat-foreks-robota-instruktsiya-po-sozdaniyu
Источник https://traderblog.net/torgovyj-sovetnik-na-mql4/