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

Two iMA Crossing Arrow EA - эксперт для MetaTrader 5

Просмотров:
1795
Рейтинг:
(8)
Опубликован:
2020.01.15 10:37
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Принцип работы

Пример создания советника по пользовательскому индикатору Two iMA Crossing Arrow EA. На баре может быть только одна сделка 'вход в рынок' (это внутренний параметр, он не вынесен во входные параметры и это не имеет отношения к параметру '   Only one positions')

    Сигналы  индикатора

    Индикатор на базе стиля рисования DRAW_COLOR_ARROW. Содержит два индикаторных буфера:

    • '0' - буфер значков (если в этом буфере значение отличное от '0.0' - значит это сигнал
    • '1' - буфер цвета значков (может принимать значение '0.0' или '1.0', имеет смысл проверять только если в буфере '0' есть сигнал)

    Индикатор ищет пересечение двух iMA (Moving Average, MA) на баре 'Bar Crossing'. Когда пересечение обнаружено - на баре рисуется значок, код которого задан в 'Arrow code for style DRAW_COLOR_ARROW' (коды значков можно посмотреть в шрифте   Wingdings).

    Two iMA Crossing Arrow EA

    Рис. 1. Пример торговых сигналов

    Главная функция - получение сигналов: проверка, чтобы в буфере значков было число больше нуля ив зависимости от значения в буфере цвета - генерируем BUY или SELL сигнал:

    //+------------------------------------------------------------------+
    //| Search trading signals                                           |
    //+------------------------------------------------------------------+
    bool SearchTradingSignals(void)
      {
       double crossing_buffer[],crossing_colors[];
       ArraySetAsSeries(crossing_buffer,true);
       ArraySetAsSeries(crossing_colors,true);
       int start_pos=0,count=InpBar+1;
       if(!iGetArray(handle_iCustom,0,start_pos,count,crossing_buffer) ||
          !iGetArray(handle_iCustom,1,start_pos,count,crossing_colors))
         {
          return(false);
         }
       int size_need_position=ArraySize(SPosition);
       if(crossing_buffer[InpBar]>0.0)
         {
          if(crossing_colors[InpBar]==0.0)
            {
             if(!InpReverse)
               {
                if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
                   return(true);
                ArrayResize(SPosition,size_need_position+1);
                SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
                if(InpPrintLog)
                   Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
                return(true);
               }
             else
                if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
                   return(true);
             ArrayResize(SPosition,size_need_position+1);
             SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
             if(InpPrintLog)
                Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
             return(true);
            }
          if(crossing_colors[InpBar]==1.0)
            {
             if(!InpReverse)
               {
                if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
                   return(true);
                ArrayResize(SPosition,size_need_position+1);
                SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
                if(InpPrintLog)
                   Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
                return(true);
               }
             else
                if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
                   return(true);
             ArrayResize(SPosition,size_need_position+1);
             SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
             if(InpPrintLog)
                Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
             return(true);
            }
         }
    //---
       return(true);
      }


    Подробнее о настройках советника:

    Торговые настройки

    В советнике можно как включать, так и выключать Stop LossTake 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.

        iDeMarker Levels iDeMarker Levels

        Торговая стратеги по осциллятору iDeMarker (DeMarker, DeM)

        Custom Moving Average Levels EA 2 Custom Moving Average Levels EA 2

        Торговая стратегия на основе пользовательского индикатора Custom Moving Average Levels (вторая версия стратегии)

        Pending Trailing Pending Trailing

        Трейлинг отложенных ордеров. Отложенный ордер идёт вслед за ценой.

        Breakdown OHLC Breakdown OHLC

        Индикатор отображает момент пересечения предыдущего бара. Использует стиль рисования DRAW_COLOR_ARROW