Создание мультивалютного мультисистемного советника
Думаю, найдется немало трейдеров, которые торгуют на более чем одном торговом символе и используют несколько стратегий. Такой подход позволяет не только потенциально увеличить прибыль, но и про умелом управлении капиталом снизить риск значительных просадок. При создании любого советника первым и естественным этапом проверки эффективности стратегии, заложенной в программе, является ее оптимизация с целью подбора наилучших входных параметров.
После того как параметры подобраны, можно было бы установить советники торговать, но еще один немаловажный вопрос останется без ответа. Как бы выглядели результаты тестирования, если бы трейдер мог объединить все свои стратегии в один советник? Иногда можно неприятно удивиться, обнаружив, что просадки по нескольким символам или стратегиям в какой-то момент могут наложиться друг на друга и привести к непростительной общей просадке или даже маржинколу.
В данной статье представлена концепция создания мультивалютно-мультистратегического советника, который позволит найти ответ на этот важный вопрос.
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 установим параметры для торговых операций стратегии А.
Эту же процедуру повторяем для каждой стратегии, т.е.
- Копируем внешние переменные в массивы;
- Проверяем, правильно ли выбраны символы;
- Проверяем ошибки, устанавливаем хэндлы индикаторов, рассчитываем данные для лота и всего того, что необходимо для данной стратегии;
- Устанавливаем параметры для торговых операций.
Напоследок не помешает проверить, не был ли один и тот же символ выбран для нескольких стратегий (ниже приведен пример для двух стратегий):
3. Торговые циклы for
Так выглядит каркас из циклов for внутри функции OnTimer():
Если в одновалютно-одностратегическом советнике предусмотрено условие, при котором надо приостановить все последующие вычисления, используется оператор return. В данном случае нам нужно лишь прервать текущую итерацию и перейти к следующей итерации для очередного символа. Для этой цели лучше всего применить оператор continue.
Если в мультистратегический советник надо будет перенести стратегию, где есть цикл for, внутри которого прописано условие прекращения всех последующих расчетов, то можно применить такую схему:
После того как каркас из циклов for создан, просто переносим туда коды из других советников, а затем некоторые переменные заменяем на элементы массивов.
Например, предопределенную переменную _Symbol заменяем на Symbol_A[i] или _Point на Point_A[i]. Значения этих переменных характерны для данного символа, поэтому при инициализации они были скопированы в массивы.
Например, найдем значение индикатора:
Закрытие позиции на покупку запишем следующим способом:
Открытие позиции на покупку:
При деинициализации не забудем остановить генерацию события таймера и удалить хэндлы индикаторов:
4. Результаты тестирования
После того как советник готов, протестируем его отдельно по каждой стратегии и каждому символу и сравним с результатом теста в режиме торговли одновременно по всем стратегиям и символам.
Предполагается, что пользователь уже подобрал наилучшие значения входных параметров.
Ниже показаны настройки тестера:
Рис. 2. Настройка тестера стратегий
Результат для стратегии А, символ EURUSD:
Рис 3. Результат теста для стратегии A, символ EURUSD
Результат для стратегии А, символ GBPUSD:
Рис 4. Результат теста для стратегии A, символ GBPUSD
Результат для стратегии B, символ AUDUSD:
Рис. 5. Результат теста для стратегии В, символ AUDUSD
Результат для стратегии B, символ EURJPY:
Рис. 6. Результат теста для стратегии В, символ EURJPY
Результат теста по всем стратегиям и символам:
Рис. 7. Результат теста по всем стратегиям и символам
Заключение
Получилась удобная и одновременно простая схема мультивалютно-мультистратегического советника, куда можно поместить практически любые свои стратегии.
Такой советник позволит лучше оценить эффект торговли по всем своим стратегиям. Он может также пригодиться в случае, если на счету может работать только один эксперт. В приложении находится код советника для изучения вышеизложенного материала.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
MQL5: Пишем мультивалютный советник
Уважаемые коллеги, друзья трейдеры-программисты, здравствуйте!
Есть мнение, что мультивалютный советник более успешен в торговле, так как оперирует одновременно несколькими валютными парами. Что ж, давайте напишем мультивалютный эксперт для терминала МetaТrader 5. Именно этому и будет посвящен наш сегодняшний видео урок из цикла по MQL5.
Домашнее задание
- Мы с вами написали эксперт для торговли на трёх валютных парах, расширьте диапазон торговли, добавив ещё несколько пар, к примеру USDJPY, AUDUSD, EURGBP.
- Добавьте в советник для каждой валютный пары StopLoss и TakeProfit.
- Вместо сигнала от Moving Average используйте сигналы индикатора MACD.
- Напишите функцию ErrorDescription и вместо кода ошибки выводите её текстовое описание.
Скачать исходник советника
Предыдущие уроки по MQL5:
С уважением, Сергей aka xbms
TradeLikeaPro.ru
Искать на сайте
Ссылки
Разделы
Рекомендую
Вы новичок? Скачайте бесплатный видеокурс!
О Сайте
Наша цель – обучать простых людей торговле на валютном рынке Forex, а также предоставить все необходимые для успешной работы инструменты.
Советую ознакомиться
Торговые сигналы
Взгляд аналитика на рынок Форекс на 28.10.2022
Анализ Форекс рынка на 26.10.2022
Краткий обзор рынка на 26.10.2022
Обзор торговых идей на 25.10.2022
Посты с форума
Популярные акции
Внимание! Торговля на валютном рынке Форекс (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
Кредитное плечо должно быть использовано по максимуму, кто-то когда то сказал, что чем выше кредитное плечо, тем выше риск при сделке. Ничего подобного, риск зависит от размера лота и стоп-лосса. А плечо наоборот тем лучше, чем больше.
Обеспечьте советнику работу без отключения, то есть он должен работать круглые сутки! Для этого рекомендую ставить на vps сервер для форекса и отключение света и интернета станут не страшны!
Правильно использования мультивалютного советника Forex Hacked Pro
Скачать
Чаще всего к советнику идут дополнительные рекомендации. Ещё не было такого советника, который бы достался просто так, без инструкций. Это было бы странно, если бы вы получили советника без аннотации ведь это целая торговая система. И как применять её нужно знать точно.
Можете проверить лучшего советника в тестере метатрейдера, то есть прогнать по истории. В любом случае, даже когда вам понятна идея советника его нужно проверить на тестере. Нет ничего более печального, чем советник, который без проверки на тестере размещается на реальном счете, но к сожалению не все советники можно корректно проверить в тесторе, так как их стратегии рассчитаны на большое количество валютных пар (как советник сеточник), а тестер прогоняет только лишь по одной!
Обязательно нужно выводить прибыль постоянно. Прибыль должна выводиться раз или два в месяц. Частые выводы позволяют вам свести к минимуму любые форекс убытки.
Нужно досконально изучить советника. Как говориться «переспите» с советником. Нужно точно представлять, как часто он открывает сделки, как долго их держит, когда закрывает. Что у него в сильной стороне, что в слабой. Только после этого можно выводить его на реальный депозит.
Торговать на свободных от свопов счетах. Бывают советники, которые держат позиции несколько дней и даже месяцев. Информацию об этом вы поучаете во время тестирований. В таком случае, нужно выбрать счета без свопов. Это будет, по меньшей мере, разумно.
Применять VPS-сервер. Раз уж вы решили получить от советника форекс прибыль, то просто дайте ему делать свое дело 24 часа в сутки 5 дней в неделю. И тогда у вас не возникнет с ним проблем. Для этого в интернете оборудованы специальные VPS сервера, куда можно установить нужный терминал. Это даст вам возможность не гонять свой компьютер сутками!
И в заключении хочу сказать, что лучше использовать счета с плавающим спредом.
Смотреть про установку
Вот смотрите видео по установке и тестированию мультивалютного советника Forex Hacked Pro:
Стратегические правила работы мультивалютного советника.
Вот смотрите таблицу с рекомендациями для разных брокеров:
Тип счета и брокер | Минимальный лот и шаг лота | Мин. стартовый депозит |
Сent-NDD Forex4you | 0.01 | $100 (10000 центов) |
Стандарт Афорекс | 0.01 | $10000 |
Нано Alpari | 0.01 | $100 (10000 центов) |
Центовый Roboforex | 0.1 | $1000 |
Советник «Forex Hacked Pro» применяет стратегию Мартингейла. Я думаю вы слышали о ней, то есть, если советник получил убыточную сделку, то в следующей он повышает лот, это делается чтобы в следующей сделке покрыть убыток от первой сделки, если опять убыток, то опять поднимается лот и так до тех пор пока не получим прибыль!
То есть такая торговля на форекс требует достаточного начального капитала, чтобы хватило средств на постоянное повышения лота!
А в случае получения прибыли, советник вернется обратно к минимальному лоту.
Помимо мартина, советник «Форекс взломщик Про» применяет несколько скальпирующих стратегии, которые определяют точки входа, это увеличивает эффективность работы на форекс.
Расставленные ордера будут закрываться быстрее, и их будет много больше, чем при одновалютной системе, как это было в прошлой версии советника. Это обеспечит плавный рост депозита на небольших форекс просадках.
Мультивалютный советник использует индивидуальные настройки по каждой паре, а это обеспечивает диверсификацию торгов и снижает риски. Это объясняется тем, что по каждой паре торгуем серьезно уменьшенными лотами по сравнению с одновалюткой, а периоды значительных просадок у всех пар одновременно не могут совпасть.
Бэктесты проводились по валютным парам отдельно из-за ограничений накладываемых платформой Метатрейдер 4, которые не позволяет проводить мультивалютный тест.
Как видно, периоды, на которые приходятся просадки не случаются одновременно на всех парах. Это увеличивает вероятность получить прибыль.
Кроме того. Результаты бектестов проводились на разных брокерах разных типах счетов и в разное время запуска. Поэтому могут отличаться ваши тесты от наших, однако принцип диверсификации также будет на лицо.
Вот смотрите мой мониторинг счетов с реальными деньгами, кликнув по графику вы увидите полную статистику, Альпари реальный счет:
Настройки мультивалютного советника Forex Hacked Pro
- UseManualLots — Если начальный лот, который вы намерены использовать будет больше, чем 0,01, то нужно зафиксировать значение TRUE
- Lots — заданный начальный лот, по умолчанию 0,01,
- Booster — коэффициент по которому будет увеличиваться лот у сетки ордеров
- TakeProfit — тейкпрофит в пунктах
- PipStarter — расстояние, которое должна пройти цена, чтобы открылся следующий ордер в сетке.
- TurboMode — опция, которая поможет увеличить прибыль во время работы во флете
- TurboDivider — количество ордеров, которые должны будут открыты, чтобы включился TurboMode
- ContinueTrading — опция завершения работы после закрытия текущей сетки ордеров. При TRUE торговля в обычном режиме, при FALSE если закроется текущая сетка с ордерами новая строиться не будет.
- MM – Money management system, система управления капиталом с помощью последовательного увеличения лота при росте или снижении баланса в зависимости от расчетной суммы формулы. Рассчитывается как Lots = 0,00001 * (AccountBalance/Divider). Обычно отключена.
- Divider — параметр для подсчета Mm, примеры вычисления лотов:
- $100,000 — Divider 100 = 0,01 lots
- $200,000 — Divider 100 = 0,02 lots
- $100,000 — Divider 10 = 0,1 lots
- $10,000 — Divider 100 = 0,001 lots
- $10,000 — Divider 10 = 0,01 lots
- $10,000 — Divider 1 = 0,1 lots
- $20,000 — Divider 100 = 0,002 lots
- $20,000 — Divider 10 = 0,02 lots
- $20,000 — Divider 1 = 0,1 lots
- $5,000 — Divider 10 = 0,005 lots
- $5,000 — Divider 1 = 0,05 lots
- $5,000 — Divider 0,5 = 0,1 lots
- $200,000 — Divider 10 = 0,2 lots
- chartDisplay — проецирует информацию от советника на экран
- UseStopLossPct – включает опцию StopLossPct
- StopLossPct — размер просадки. Измеряется в процентах от баланса. Величина, которая, как щелчком закрывает все сделки. Параметр, который используется, как аварийная защита от потери депозита во время излишне значимых трендов.
- UseTakeProfitPCT – опции TakeProfitPCT и её включение.
- TakeProfitPCT — размер прибыли измеряющийся в процентах от баланса, которая приведет к закрытию всех сделок.
- UseTrailingStop — опция трейлинг, включение, выключение.
- StartTrailing — количество пунктов для активации трейлинга
- StopTrailing — размер трейлингстопа в пунктах
- UseStrategy_1 – опция применения первой стратегии
- MagicNumber_1 – мэджик для ордеров первой стратегии
- MaxTrades_1 – максимум ордеров по первой стратегии
- UseStrategy_2 — опция применения второй стратегии
- MagicNumber_2 – мэджик для ордеров второй стратегии
- MaxTrades_2 – максимум ордеров по второй стратегии
- UseStrategy_3 — опция применения третьей стратегии
- MagicNumber_3 – мэджик для ордеров третьей стратегии
- MaxTrades_3 – максимум ордеров по третьей стратегии
- UseDollarTakeProfit_s1 – включение DollarTakeProfit_s1 специальной опции
- DollarTakeProfit_s1 — размер прибыли в депозитной валюте, который закроет ордера по первой стратегии
- UseDollarTakeProfit_s2 – опция DollarTakeProfit_s2
- DollarTakeProfit_s2 — размер прибыли в депозитной валюте, который закроет ордера по второй стратегии
- UseDollarTakeProfit_s3 – опция DollarTakeProfit_s3
- DollarTakeProfit_s3 — размер прибыли в депозитной валюте, который закроет ордера по третьей стратегии
- system1_comment — комментарий к сделкам по первой стратегии
- system2_comment — комментарий к сделкам по второй стратегии
- 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