Среда, 1 февраля, 2023

MQL5: Пишем мультивалютный советник

Создание мультивалютного мультисистемного советника

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

После того как параметры подобраны, можно было бы установить советники торговать, но еще один немаловажный вопрос останется без ответа. Как бы выглядели результаты тестирования, если бы трейдер мог объединить все свои стратегии в один советник? Иногда можно неприятно удивиться, обнаружив, что просадки по нескольким символам или стратегиям в какой-то момент могут наложиться друг на друга и привести к непростительной общей просадке или даже маржинколу.

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

1. Схема эксперта

В общих чертах схема выглядит следующим образом:

Схема мультивалютно-мультистратегического советника

Рис. 1. Схема мультивалютно-мультистратегического советника

Как видно, в основе программы лежит цикл for. Каждую стратегию упаковываем в цикл, где каждая итерация отвечает за торговлю отдельно по каждому символу. В данном случае можно упаковать неограниченное количество стратегий. Главное — хватило бы ресурсов компьютера «переварить» такую программу.

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

Для более подробного разбора структуры советника возьмем 2 стратегии, каждая из которых будет торговать по двум символам:

  • Покупка: цена Ask касается нижней полосы индикатора Bollinger Bands, рассчитанного по цене low.
    Закрытие: цена Bid касается нижней полосы индикатора Bollinger Bands, рассчитанного по цене high.
  • Продажа: цена Bid касается верхней полосы индикатора Bollinger Bands, рассчитанного по цене high.
    Закрытие: цена Ask касается верхней полосы индикатора Bollinger Bands, рассчитанного по цене low.
  • Ограничение: на одном баре может быть совершена только одна сделка.
  • Покупка: предыдущий бар медвежий (close < open) и цена Ask касается максимума (high) предыдущего бара.
    Закрытие: по стоплоссу или тейкпрофиту.
  • Продажа: предыдущий бар бычий (close > open) и цена Bid касается минимума (low) предыдущего бара.
    Закрытие: по стоплоссу или тейкпрофиту.
  • Ограничение: на одном баре может быть совершена только одна сделка.

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

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

Вместо EventSetTimer() можно также использовать EventSetMillisecondTimer(), где периодичность устанавливается с точностью до миллисекунды, однако не стоит злоупотреблять чрезмерно частыми вызовами расчетов программы.

Для доступа к свойствам счета, позиций, символов и торговым функциям будем использовать классы, соответственно CAccountInfo, CPositionInfo, CSymbolInfo и CTrade. Подключаем их к советнику:

Так как советник основан на циклах for, то внешние параметры необходимо будет занести в массивы. В начале создадим константы, равные количеству символов для каждой стратегии:

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

Ниже приведен пример для одного символа стратегии А:

Чтобы иметь возможность отключить торговлю по данному символу, создана логическая переменная IsTrade_A0, которую будем помещать в самом начале циклов for.

2. Инициализация эксперта

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

Скопируем внешние переменные в массивы.

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

Читать статью  Стоит ли покупать форекс советники?

В данном случае мы видим, что BBPeriod_A0 был создан как uint, чтобы не позволить пользователю установить отрицательное значение. В этом месте преобразовываем его в int и копируем в массив, который тоже был создан как int. Иначе, подставляя параметр типа uint в хэндл индикатора, компилятор выдаст предупреждение.

Далее проверим, присутствует ли торгуемый символ в «Обзоре Рынка» и не был ли он использован более одного раза в рамках одной стратегии:

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

Все это осуществим внутри цикла for.

Затем с помощью объекта Trade_A класса CTrade установим параметры для торговых операций стратегии А.

Эту же процедуру повторяем для каждой стратегии, т.е.

  1. Копируем внешние переменные в массивы;
  2. Проверяем, правильно ли выбраны символы;
  3. Проверяем ошибки, устанавливаем хэндлы индикаторов, рассчитываем данные для лота и всего того, что необходимо для данной стратегии;
  4. Устанавливаем параметры для торговых операций.

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

3. Торговые циклы for

Так выглядит каркас из циклов for внутри функции OnTimer():

Если в одновалютно-одностратегическом советнике предусмотрено условие, при котором надо приостановить все последующие вычисления, используется оператор return. В данном случае нам нужно лишь прервать текущую итерацию и перейти к следующей итерации для очередного символа. Для этой цели лучше всего применить оператор continue.

Если в мультистратегический советник надо будет перенести стратегию, где есть цикл for, внутри которого прописано условие прекращения всех последующих расчетов, то можно применить такую схему:

После того как каркас из циклов for создан, просто переносим туда коды из других советников, а затем некоторые переменные заменяем на элементы массивов.

Например, предопределенную переменную _Symbol заменяем на Symbol_A[i] или _Point на Point_A[i]. Значения этих переменных характерны для данного символа, поэтому при инициализации они были скопированы в массивы.

Например, найдем значение индикатора:

Закрытие позиции на покупку запишем следующим способом:

Открытие позиции на покупку:

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

4. Результаты тестирования

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

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

Ниже показаны настройки тестера:

Настройка тестера

Рис. 2. Настройка тестера стратегий

Результат для стратегии А, символ EURUSD:

Результат теста для стратегии A, символ EURUSD

Рис 3. Результат теста для стратегии A, символ EURUSD

Результат для стратегии А, символ GBPUSD:

Результат теста для стратегии A, символ GBPUSD

Рис 4. Результат теста для стратегии A, символ GBPUSD

Результат для стратегии B, символ AUDUSD:

Результат теста для стратегии В, символ AUDUSD

Рис. 5. Результат теста для стратегии В, символ AUDUSD

Результат для стратегии B, символ EURJPY:

Результат теста для стратегии В, символ EURJPY

Рис. 6. Результат теста для стратегии В, символ EURJPY

Результат теста по всем стратегиям и символам:

Результат теста по всем стратегиям и символам

Рис. 7. Результат теста по всем стратегиям и символам

Заключение

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

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

Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.

MQL5: Пишем мультивалютный советник

Уважаемые коллеги, друзья трейдеры-программисты, здравствуйте!

Есть мнение, что мультивалютный советник более успешен в торговле, так как оперирует одновременно несколькими валютными парами. Что ж, давайте напишем мультивалютный эксперт для терминала МetaТrader 5. Именно этому и будет посвящен наш сегодняшний видео урок из цикла по MQL5.

Домашнее задание

  1. Мы с вами написали эксперт для торговли на трёх валютных парах, расширьте диапазон торговли, добавив ещё несколько пар, к примеру USDJPY, AUDUSD, EURGBP.
  2. Добавьте в советник для каждой валютный пары StopLoss и TakeProfit.
  3. Вместо сигнала от Moving Average используйте сигналы индикатора MACD.
  4. Напишите функцию ErrorDescription и вместо кода ошибки выводите её текстовое описание.

Скачать исходник советника

Предыдущие уроки по MQL5:

С уважением, Сергей aka xbms
TradeLikeaPro.ru

Искать на сайте

Ссылки

Разделы

Рекомендую

Вы новичок? Скачайте бесплатный видеокурс!

О Сайте

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

Советую ознакомиться

Торговые сигналы

Взгляд аналитика на рынок Форекс на 28.10.2022

Анализ Форекс рынка на 26.10.2022

Краткий обзор рынка на 26.10.2022

Обзор торговых идей на 25.10.2022

AMarkets

Alfa-forex

forex4you-C

Tickmill_small

NPBFX_small

Посты с форума

Популярные акции

Внимание! Торговля на валютном рынке Форекс (Forex) сопряжена с финансовыми рисками и подходит не всем инвесторам. Сайт tlap.com не предоставляет услуги торговли на финансовых рынках, носит исключительно информационный характер и не несет ответственности за последствия принимаемых вами торговых решений, либо работу программного обеспечения. Начиная работать на валютных рынках, убедитесь, что вы осознаете риски, с которыми сопряжена торговля с использованием кредитного плеча, и что вы имеете достаточный уровень подготовки. Данный ресурс управляется компанией TLAPFX LTD — регистрационный номер 24245 IBC 2017, адрес управления: Suite 305, Griffith Corporate Centre, P.O. Box 1510, Beachmont, Kingstown, St. Vincent and the Grenadines .
TLAPFX LTD не имеет представительств компании на территории Российской Федерации.

Читать статью  Трендовые советники

Мультивалютные советники, как Forex Hacked Pro – это мощное оружие дохода!

Добрый день уважаемые дамы и господа, сегодня блог веб-мастера Максима расскажет вам об об одном из лучших советников форекс под названием Forex Hacked Pro. На сей раз это мультивалютная версия.

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

  • Платформа: Метатрейдер 4.
  • Версия советника: 1,14
  • Валютные пары. AUDUSD, GBPUSD, USDCAD, EURGBP, EURUSD, EURJPY, EURCHF, USDJPY, USDCHF.
  • Рабочее время: круглосуточно.
  • Рекомендуемый ДЦ: forex4you

Лучший советник форекс - мультивалютный Forex Hacked Pro мощное оружие дохода!

Кредитное плечо должно быть использовано по максимуму, кто-то когда то сказал, что чем выше кредитное плечо, тем выше риск при сделке. Ничего подобного, риск зависит от размера лота и стоп-лосса. А плечо наоборот тем лучше, чем больше.

Обеспечьте советнику работу без отключения, то есть он должен работать круглые сутки! Для этого рекомендую ставить на vps сервер для форекса и отключение света и интернета станут не страшны!

Правильно использования мультивалютного советника Forex Hacked Pro

Скачать

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

Можете проверить лучшего советника в тестере метатрейдера, то есть прогнать по истории. В любом случае, даже когда вам понятна идея советника его нужно проверить на тестере. Нет ничего более печального, чем советник, который без проверки на тестере размещается на реальном счете, но к сожалению не все советники можно корректно проверить в тесторе, так как их стратегии рассчитаны на большое количество валютных пар (как советник сеточник), а тестер прогоняет только лишь по одной!

Обязательно нужно выводить прибыль постоянно. Прибыль должна выводиться раз или два в месяц. Частые выводы позволяют вам свести к минимуму любые форекс убытки.

Нужно досконально изучить советника. Как говориться «переспите» с советником. Нужно точно представлять, как часто он открывает сделки, как долго их держит, когда закрывает. Что у него в сильной стороне, что в слабой. Только после этого можно выводить его на реальный депозит.

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

Применять VPS-сервер. Раз уж вы решили получить от советника форекс прибыль, то просто дайте ему делать свое дело 24 часа в сутки 5 дней в неделю. И тогда у вас не возникнет с ним проблем. Для этого в интернете оборудованы специальные VPS сервера, куда можно установить нужный терминал. Это даст вам возможность не гонять свой компьютер сутками!

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

Смотреть про установку

Вот смотрите видео по установке и тестированию мультивалютного советника Forex Hacked Pro:

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

Вот смотрите таблицу с рекомендациями для разных брокеров:

Тип счета и брокерМинимальный лот и шаг лотаМин. стартовый депозит
Сent-NDD Forex4you0.01$100 (10000 центов)
Стандарт Афорекс0.01$10000
Нано Alpari0.01$100 (10000 центов)
Центовый Roboforex0.1$1000

Советник «Forex Hacked Pro» применяет стратегию Мартингейла. Я думаю вы слышали о ней, то есть, если советник получил убыточную сделку, то в следующей он повышает лот, это делается чтобы в следующей сделке покрыть убыток от первой сделки, если опять убыток, то опять поднимается лот и так до тех пор пока не получим прибыль!

То есть такая торговля на форекс требует достаточного начального капитала, чтобы хватило средств на постоянное повышения лота!

А в случае получения прибыли, советник вернется обратно к минимальному лоту.

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

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

Читать статью  Стабильный, не сливающий на тестах советник с минимальной просадкой Tokamato

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

Бэктесты проводились по валютным парам отдельно из-за ограничений накладываемых платформой Метатрейдер 4, которые не позволяет проводить мультивалютный тест.

AUDUSD 2009-2013 EURCHF 2009-2013 EURGBP 2009-2013 EURJPY 2009-2013 EURUSD 2009-2013 GBPUSD 2009-2013 USDCAD 2009-2013 USDCHF 2009-2013

Как видно, периоды, на которые приходятся просадки не случаются одновременно на всех парах. Это увеличивает вероятность получить прибыль.

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

Вот смотрите мой мониторинг счетов с реальными деньгами, кликнув по графику вы увидите полную статистику, Альпари реальный счет:

Настройки мультивалютного советника Forex Hacked Pro

    1. UseManualLots — Если начальный лот, который вы намерены использовать будет больше, чем 0,01, то нужно зафиксировать значение TRUE
    2. Lots — заданный начальный лот, по умолчанию 0,01,
    3. Booster — коэффициент по которому будет увеличиваться лот у сетки ордеров
    4. TakeProfit — тейкпрофит в пунктах
    5. PipStarter — расстояние, которое должна пройти цена, чтобы открылся следующий ордер в сетке.
    6. TurboMode — опция, которая поможет увеличить прибыль во время работы во флете
    7. TurboDivider — количество ордеров, которые должны будут открыты, чтобы включился TurboMode
    8. ContinueTrading — опция завершения работы после закрытия текущей сетки ордеров. При TRUE торговля в обычном режиме, при FALSE если закроется текущая сетка с ордерами новая строиться не будет.
    9. MM – Money management system, система управления капиталом с помощью последовательного увеличения лота при росте или снижении баланса в зависимости от расчетной суммы формулы. Рассчитывается как Lots = 0,00001 * (AccountBalance/Divider). Обычно отключена.
    10. Divider — параметр для подсчета Mm, примеры вычисления лотов:
    1. $100,000 — Divider 100 = 0,01 lots
    2. $200,000 — Divider 100 = 0,02 lots
    3. $100,000 — Divider 10 = 0,1 lots
    4. $10,000 — Divider 100 = 0,001 lots
    5. $10,000 — Divider 10 = 0,01 lots
    6. $10,000 — Divider 1 = 0,1 lots
    7. $20,000 — Divider 100 = 0,002 lots
    8. $20,000 — Divider 10 = 0,02 lots
    9. $20,000 — Divider 1 = 0,1 lots
    10. $5,000 — Divider 10 = 0,005 lots
    11. $5,000 — Divider 1 = 0,05 lots
    12. $5,000 — Divider 0,5 = 0,1 lots
    13. $200,000 — Divider 10 = 0,2 lots
    1. chartDisplay — проецирует информацию от советника на экран
    2. UseStopLossPct – включает опцию StopLossPct
    3. StopLossPct — размер просадки. Измеряется в процентах от баланса. Величина, которая, как щелчком закрывает все сделки. Параметр, который используется, как аварийная защита от потери депозита во время излишне значимых трендов.
    4. UseTakeProfitPCT – опции TakeProfitPCT и её включение.
    5. TakeProfitPCT — размер прибыли измеряющийся в процентах от баланса, которая приведет к закрытию всех сделок.
    6. UseTrailingStop — опция трейлинг, включение, выключение.
    7. StartTrailing — количество пунктов для активации трейлинга
    8. StopTrailing — размер трейлингстопа в пунктах
    9. UseStrategy_1 – опция применения первой стратегии
    10. MagicNumber_1 – мэджик для ордеров первой стратегии
    11. MaxTrades_1 – максимум ордеров по первой стратегии
    12. UseStrategy_2 — опция применения второй стратегии
    13. MagicNumber_2 – мэджик для ордеров второй стратегии
    14. MaxTrades_2 – максимум ордеров по второй стратегии
    15. UseStrategy_3 — опция применения третьей стратегии
    16. MagicNumber_3 – мэджик для ордеров третьей стратегии
    17. MaxTrades_3 – максимум ордеров по третьей стратегии
    18. UseDollarTakeProfit_s1 – включение DollarTakeProfit_s1 специальной опции
    19. DollarTakeProfit_s1 — размер прибыли в депозитной валюте, который закроет ордера по первой стратегии
    20. UseDollarTakeProfit_s2 – опция DollarTakeProfit_s2
    21. DollarTakeProfit_s2 — размер прибыли в депозитной валюте, который закроет ордера по второй стратегии
    22. UseDollarTakeProfit_s3 – опция DollarTakeProfit_s3
    23. DollarTakeProfit_s3 — размер прибыли в депозитной валюте, который закроет ордера по третьей стратегии
    24. system1_comment — комментарий к сделкам по первой стратегии
    25. system2_comment — комментарий к сделкам по второй стратегии
    26. system3_comment — комментарий к сделкам по третьей стратегии

    Будьте осторожны! Изменения, внесенные в предлагаемые сеты, могут привести к непоправимым последствиям! Я надеюсь, вы знаете как устанавливать сет файлы в советник! В файле который вы скачаете с моего сайта, есть и сеты!

    Помните, что требуется не меньше 1000 единиц валюты на 0,01 лота для каждой пары, в другом случае советник может работать не корректно!

    А вот, лучший советник 2013 года – советники для малых депозитов

    Форекс советники Советник сеточник ReticoloFX — бесплатный робот для торговли на Форекс корзинами ордеров

    Источник https://www.mql5.com/ru/articles/770

    Источник https://tlap.com/mql5-pishem-multivalyutnyiy-ea/

    Источник https://webmastermaksim.ru/sovetniki-foreks/multivalyutnyj-forex-hacked-pro.html

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *