Советники: Fractals at Close prices EA

 

Fractals at Close prices EA:

Советник торгует по индикатору Fractals at Close prices - данный индикатор должен быть скомпилирован и находится в папке [date folder]\MQL5\Indicators\.

Возможности по заданию временного интервала для торговли:

  • Торговля внутри дня (параметр Start trade hour меньше параметра End trade hour);
  • Торговля с переходом на следующий день (параметр Start trade hour больше параметра End trade hour);
  • Торговля круглые сутки (параметр Start trade hour равен параметру End trade hour).

При открытии позиции сразу устанавливается заданные уровни стоп лосс и тейк профит. Также реализован трейлинг позиций.

Пример открытия позиции Sell:

Fractals at Close prices - open sell position

Автор: Vladimir Karputov

 
Automated-Trading :

Fractals at Close prices EA :

Author: Vladimir Karputov


****

 

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

 

Идея такая же, но с индикатором зигзага и открытым порядком только после разрыва, подобного этому на изображении, у нас будет более интересный советник!

Файлы:
zigzag.png  19 kb
 
kwlin_089:

Идея такая же, но с индикатором зигзага и открытым порядком только после разрыва, подобного этому на изображении, у нас будет более интересный советник!


По ЗигЗагу был вот такой код: Last ZZ50

Стратегия на основе индикатора ZigZag и отложенных ордерах.

Код родился в ветке Стратегия на базе индикатора "ZigZag" - "Last ZZ50".

Автор идеи - Vitaly Muzichenko, реализация MQL5 кода - Vladimir Karputov.

Общий принцип стратегии "Last ZZ50":

Стратегия на базе индикатора "ZigZag" - "Last ZZ50"

В индикаторе ZigZag всегда рассматриваем два последних луча: AB и BC. Луч AB - это луч, который еще не зафиксирован и может меняться (точка A может менять свое положение).

Отложенные ордера выставляются посередине луча AB и BC с таким расчетом, что:

  • Срабатывание отложенного ордера на луче AB - это случай продолжения тенденции, которую демонстрирует луч BC;
  • Срабатывание отложенного ордера на луче BC - это случай разворота тенденции, которую демонстрирует луч BC.

Так как луч AB - это луч, который еще не зафиксирован и может меняться (точка A может менять свое положение), отложенный ордер будет все время модифицироваться так, чтобы его цена была всегда посередине луча AB.

Трейлинг открытых позиций работает по правилу: ждем, когда позиция будет в прибыли (без учета комиссии и свопа) минимум на (Trailing Stop + Trailing Step) пунктов, и тогда включаем для этой позиции трейлинг.

 
Vladimir Karputov :

По ЗигЗагу был вот такой код:  Last ZZ50

Стратегия на основе индикатора ZigZag и отложенных ордерах.

Код родился в ветке  Стратегия на базе индикатора "ZigZag" - "Last ZZ50" .

Автор идеи -  Vitaly Muzichenko , реализация MQL5 кода -  Vladimir Karputov .

Общий принцип стратегии "Last ZZ50":

В индикаторе ZigZag всегда рассматриваем два последних луча:  AB  и  BC . Луч  AB  - это луч, который еще не зафиксирован и может меняться (точка  A  может менять свое положение).

Отложенные ордера выставляются посередине луча  AB  и  BC  с таким расчетом, что:

  • Срабатывание отложенного ордера на луче  AB  - это случай  продолжения  тенденции, которую демонстрирует луч  BC ;
  • Срабатывание отложенного ордера на луче  BC  - это случай  разворота  тенденции, которую демонстрирует луч  BC .

Так как луч  AB  - это луч, который еще не зафиксирован и может меняться (точка  A  может менять свое положение), отложенный ордер будет все время модифицироваться так, чтобы его цена была всегда посередине луча  AB .

Трейлинг открытых позиций работает по правилу: ждем, когда позиция будет в прибыли (без учета комиссии и свопа) минимум на (Trailing Stop + Trailing Step) пунктов, и тогда включаем для этой позиции трейлинг.

Проблема с этой стратегией «Последний ZZ50» заключается в том, что она открывает много отложенных ордеров в середине зигзага индикатора, и это вызывает много путаницы, приводящей к многочисленным потерям и просадкам. То, как вы построили этот индикатор «Fractals at Close Prices EA», более интересно адаптировать индикатор «зигзаг».

Если есть возможность сделать EA, это было бы интересно! Я думаю, что это создаст превосходный советник!
 
kwlin_089:
Проблема с этой стратегией «Последний ZZ50» заключается в том, что она открывает много отложенных ордеров в середине зигзага индикатора, ***

Никогда не поздно внести ограничение на количество подряд открываемых позиций.

 

есть ли у него какая-либо функция, чтобы она не закрывала порядок в противоположном сигнале?

 

Может быть, true/false, чтобы включить и отключить противоположный знак или даже сказать, что я могу извлечь из кода, чтобы я мог проверить его, не закрывая ордера в противоположном знаке! Благодарим вас за сотрудничество с этим советником!

 
kwlin_089:

есть ли у него какая-либо функция, чтобы она не закрывала порядок в противоположном сигнале?


Вам просто нужно закомментировать эти строки:

   if(InpStarHour<InpEndHour) // trade in one day
     {
      if(time_current<time_start || time_current>=time_end)
        {
         CloseAllPositions();
         return;
        }
     }
   else if(InpStarHour>InpEndHour) // trade with transition next day
     {
      if(struct_time_current.hour<InpStarHour && struct_time_current.hour>=InpEndHour)
        {
         CloseAllPositions();
         return;
        }
     }
   else if(InpStarHour==InpEndHour)
     {
      // trade full day!!!
     }
 
Vladimir Karputov :

Вам просто нужно закомментировать эти строки :

Я сделал это, но это не сработало, то эта часть коды, размещенное по-видимому, связана с открытием и закрытием графика! Но то, что мне нужно, что она не закрывает позицию, когда появляется противоположное сигнал фрактала, то есть, я хочу, чтобы закрыть позицию только в «стоп-лосс» или «тейк-профит»

Я пытался прокомментировать эту часть кода, который оказался правильным, но не работает

 //--- 
   if (last_lower!= EMPTY_VALUE && previous_lower!= EMPTY_VALUE )
       if (previous_lower<last_lower)
        {
          ClosePositions( POSITION_TYPE_SELL ); 
         if (CalculatePositions( POSITION_TYPE_BUY )== 0 )
           {
             double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Ask ()-ExtStopLoss;
             double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Ask ()+ExtTakeProfit;
            OpenBuy(sl,tp);
           }
        }
   if (last_upper!= EMPTY_VALUE && previous_upper!= EMPTY_VALUE )
       if (previous_upper>last_upper)
        {
          ClosePositions( POSITION_TYPE_BUY ); 
         if (CalculatePositions( POSITION_TYPE_SELL )== 0 )
           {
             double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Bid ()+ExtStopLoss;
             double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Bid ()-ExtTakeProfit;
            OpenSell(sl,tp);
           }
        }
 //--- 
   Trailing();
  }