Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Nevalyashka_BreakdownLevel - эксперт для MetaTrader 5

Опубликовал:
Vladimir Karputov
Просмотров:
2872
Рейтинг:
(29)
Опубликован:
2017.06.26 10:01
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Автор идеи — Vladimir Khlystovавтор кода mq5 — barabashkakvn.

Стратегия торговли — пробой максимума/минимума на выбранном промежутке времени. Для компенсации убыточных позиций используется "Неваляшка" с увеличением лота по принципу мартингейла.

Советник вычисляет максимум и минимум цены во временном промежутке между "Time start" — временем начала контрольного периода и "Time end" — временем окончания контрольного периода:

Nevalyashka BreakdownLevel

Если цена превышает максимум этого периода, открывается позиция "BUY", если цена пошла ниже минимума — открывается позиция "SELL". StopLoss выставляется на противоположную границу периода: для позиции "BUY" — на уровень минимума цены, для позиции "SELL" — на уровень максимума цены. TakeProfit выставляется по уровню высоты контрольного периода.

Если параметр "Use time close" равен true — значит, будет работать параметр "Time close" (время, в которое закрываются все позиции).

Для входных параметров "Time start""Time end" и "Time close" учитываются только часы и минуты.

Закрытие по StopLoss отлавливается в OnTradeTransaction.

Когда обнаруживаем сделку с типом "DEAL_ENTRY_OUT" (ru: "Выход из рынка", en: "Entry out"), просматриваем поле комментария у такой сделки. Если в комментарии обнаруживаем "sl" — это с большой долей вероятности означает, что обнаружена сделка, закрытая по StopLoss:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- there is a chance that this was a closure on the TakeProfit
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- there is a chance that this was a closure on the StopLoss
            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("A StopLoss closure has been detected!");

                  double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume);

                  if(deal_type==DEAL_TYPE_SELL) // the buy position is closed
                    {
                     double SL=m_symbol.Bid()+loss*m_symbol.Point();
                     double TP=m_symbol.Bid()-loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenSell(SL,TP,Lot,"Nevalyashka");

                    }
                  if(deal_type==DEAL_TYPE_BUY) // the sell position is closed
                    {
                     double SL=m_symbol.Ask()-loss*m_symbol.Point();
                     double TP=m_symbol.Ask()+loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenBuy(SL,TP,Lot,"Nevalyashka");
                    }
                  return;
                 }
              }
           }

и открываем позицию — противоположную закрытой (если тип сделки "DEAL_TYPE_SELL", значит была закрыта позиция "BUY"; если тип сделки "DEAL_TYPE_BUY" — значит была закрыта позиция "SELL"), но при этом увеличиваем объём сделки в "K. martin" раз. Если позиция была закрыта с положительной прибылью, то советник ждет времени старта следующего периода "Time end", и все повторяется.

Параметр "No loss" перевод в безубыток: при достижении позицией половины своей прибыли StopLoss позиции переносится на уровень цены открытия.

Пример теста на EURUSD,M30:

Nevalyashka BreakdownLevel test EURUSD M30

DoubleZigZag DoubleZigZag

Для анализа использованы два индикатора ZigZag.

N Candles v4 N Candles v4

Советник ищет N одинаковых свечей подряд. На бычьих свечах идет покупка, на медвежьих — продажа. Учитывается тип торгового счёта: неттинг или хеджинг.

Color_QEMA_Envelopes_Digit Color_QEMA_Envelopes_Digit

Конверты с использованием мувинга Color_QEMA_Digit с индикацией направления тренда и отображением последних значений границ канала.

Color_PEMA_Envelopes_Digit Color_PEMA_Envelopes_Digit

Конверты с использованием мувинга Color_PEMA_Digit с индикацией направления тренда и отображением последних значений границ канала.