Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2968
- Рейтинг:
- Опубликован:
- 2019.12.08 09:03
- Обновлен:
- 2019.12.10 12:32
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Идея торговой стратегии
Советник использует такие индикаторы
- два индикатора iMA (Moving Average, MA) - каждый может создаваться на своём таймфрейме отличном от общего
- один индикатор iBands (Bollinger Bands, BB) - работает на общем таймфрейме
- один пользовательский индикатор ZigZag (индикатор расположен в Examples\\ZigZag.mq5) - работает на общем таймфрейме
Поиск торгового сигнала может осуществляться только в момент рождения нового бара на общем таймфрейме "Timeframe". Выдача торговых приказов может быть только один раз на бар.
При получении сигнала открываются две позиции BUY или две позиции SELL, при этом объёмы позиций задаются в First position: Money management, First position: The value for "Money management" и Second position: Money management, Second position: The value for "Money management" (подробнее об этом в разделе "Управление размером позиции (расчёт лота)").
Первая позиция открывается с указанием StopLoss и TakeProfit, а вторая - только со StopLoss. StopLoss для позиции BUY - это последний минимум индикатора ZigZag минус " SL: Indent from ZigZag extreme", для позиции SELL - это последний максимум индикатора ZigZag плюс "SL: Indent from ZigZag extreme". TakeProfit рассчитывается как (разница между ценой открытия и ценой StopLoss) умноженная на коэффициент "TP: coefficient".
Торговые сигналы:
Пояснения к коду - в массиве индекс [0] соответствует самому правому бару на графике.
- m_symbol.Bid() - текущая цена Bid
- ma_1 - массив значений индикатора "MA #1"
- ma_2 - массив значений индикатора "MA #2"
- rates - массив значений OHLC общего таймфрейма (задаётся в параметре "Timeframe")
- lower_band - массив значений индикатора Bollinger Band (индикаторный буфер Lower)
- upper_band - массив значений индикатора Bollinger Band (индикаторный буфер Upper)
Торговые сигналы формируются из пяти условий:
bool signal_2_buy_condition_1=(m_symbol.Bid() >= ma_1[0]); bool signal_2_buy_condition_2=(m_symbol.Bid() >= ma_2[0]); bool signal_2_buy_condition_3=(rates[2].low <= lower_band[2]); bool signal_2_buy_condition_4=(rates[1].high >= lower_band[1]); bool signal_2_buy_condition_5=(m_symbol.Bid() >= lower_band[1]); bool signal_2_buy = ( (signal_2_buy_condition_1) && (signal_2_buy_condition_2) && (signal_2_buy_condition_3) && (signal_2_buy_condition_4) && (signal_2_buy_condition_5) ); bool signal_2_sell_condition_1=(m_symbol.Bid() <= ma_1[0]); bool signal_2_sell_condition_2=(m_symbol.Bid() <= ma_2[0]); bool signal_2_sell_condition_3=(rates[2].high >= upper_band[2]); bool signal_2_sell_condition_4=(rates[1].low <= upper_band[1]); bool signal_2_sell_condition_5=(m_symbol.Bid() <= upper_band[1]); bool signal_2_sell = ( (signal_2_sell_condition_1) && (signal_2_sell_condition_2) && (signal_2_sell_condition_3) && (signal_2_sell_condition_4) && (signal_2_sell_condition_5) );
Пример сигнала SELL:
Рис. 1. Пример сигнала SELL
При нахождении сигнала производится поиск экстремумов индикатора ZigZag - эти данные необходимы для указания StopLoss и расчёта TakeProfit.
Подробнее о настройках советника:
Обратите внимание: торговый сигнал имеет наивысший приоритет! Ограничить его исполнение можно только при помощи параметра Only one positions. Если Only one positions равен "true" и количество позиций открытых этим советником на данном символе больше "1" - тогда торговый сигнал игнорируется.
Параметр Close opposite равен "true": сначала ЗАКРЫВАЕМ противоположную позицию, потом отрабатываем торговый сигнал.
Торговые настройки
В советнике можно как включать, так и выключать Stop Loss, Take Profit и Trailing Stop. Для отключения выбранный параметр установить в "0.0".
Трейлинг и поиск торгового сигнала может срабатывать или через N- секунд или только в момент рождения нового бара. Интервал Трейлинга в секундах задаётся в Trailing, in seconds, а интервал поиска торговых сигналов в Search signals, in seconds. Для этих двух параметров общее правило: если интервал задать меньше, чем "10" - это означает работу ТОЛЬКО в момент рождения нового бара, если же интервал задать ровно или более "10" - это означает работу каждые "N" секунд.
Дополнительные возможности
- Only one positions - в рынке всегда только одна позиция
- Reverse - переворот торгового сигнала
- Close opposite - закрытие позиций противоположных торговому сигналу, причём сначала идёт гарантированное закрытие противоположной позиции и только потом открытие новой позиции в направлении сигнала
Обратите внимание: торговый сигнал имеет наивысший приоритет! Ограничить его исполнение можно только при помощи параметра Only one positions. Если Only one positions равен "true" и количество позиций открытых этим советником на данном символе больше "1" - тогда торговый сигнал игнорируется.
Параметр Close opposite равен "true": сначала ЗАКРЫВАЕМ противоположную позицию, потом отрабатываем торговый сигнал.
Управление размером позиции (расчёт лота)
Лот может быть как постоянный (Money management установить в Constant lot и задать размер лота в The value for "Money management") так и динамический - в процентах риска на сделку (Money management установить в Risk in percent for a deal и задать процент риска в The value for "Money management"). Также можно задать постоянный лот равный минимальному лоту - Money management установить в Lots Min.
![SilverTrend Signal Delay](https://c.mql5.com/i/code/expert.png)
Краткое описание
![VR---SETKA---3_v2](https://c.mql5.com/i/code/expert.png)
VR---SETKA---3_v2 - советник для MetaTrader 5. Продолжение VR---SETKA---3 . Советник сетка работает по принципу мартина. Сетка. Мартингейл. Использовать только на hedge счетах.
![S-v1](https://c.mql5.com/i/code/expert.png)
Торговая панель, с возможностью использования в тестере.
![Simple Trailing 2](https://c.mql5.com/i/code/expert.png)
Советник-утилита: выполняет трейлинг прибыльных позиций по текущему символу