Советники: iRVI Expert

 

iRVI Expert:

Стратегия по индикатору iRVI (Relative Vigor Index, RVI). Закрытие противоположных позиций. Наращивание позиции только если "покупай ниже, продавай выше"

iRVI Expert

Автор: Vladimir Karputov

 
Спасибо, я многому научился за тот год с вашими кодами, и в 2021 году вы добьетесь успеха.
 

Владимир - тестирование на биржевых показало интересный график и на М1 и на М5, если не сложно - можно добавить реверс или напишите вкратце - что заменить и где в коде - хотя бы примерно, т.е. там будет селлы не выше крайнего, но ниже нижнего - вместо баев, как сейчас реализовано (типа по тренду доливка в селл теми же объемами, как на входе первым по индикатору и  баи - не ниже нижнего, как сейчас, но выше предыдущего, т.е. ИНВЕРС полный. На биржевых символах робот тестится успешно. 


 
Roman Shiredchenko:

Владимир - тестирование на биржевых показало интересный график и на М1 и на М5, если не сложно - можно добавить реверс или напишите вкратце - что заменить и где в коде - хотя бы примерно, т.е. там будет селлы не выше крайнего, но ниже нижнего - вместо баев, как сейчас реализовано (типа по тренду доливка в селл теми же объемами, как на входе первым по индикатору и  баи - не ниже нижнего, как сейчас, но выше предыдущего, т.е. ИНВЕРС полный. На биржевых символах робот тестится успешно. 


У меня нет возможности тестировать на бирже - работая на неттинге Вы действуете на свой страх и риск.

 
Vladimir Karputov:

У меня нет возможности тестировать на бирже - работая на неттинге Вы действуете на свой страх и риск.

ОК. Кроме этого что еще заменить в условиях - здесь - бай на селл и селл на бай, чтобы баи были выше предыдущих, а селлы - ниже, типа по тренду:

//--- BUY signal
   if(rvi[m_bar_current+2]<0.0 && rvi[m_bar_current+1]<0.0 && rvi[m_bar_current]<0.0)
      if(rvi[m_bar_current+2]>rvi[m_bar_current+1] && rvi[m_bar_current+1]<rvi[m_bar_current])
        {
         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);
        }
  //--- SELL signal
   if(rvi[m_bar_current+2]>0.0 && rvi[m_bar_current+1]>0.0 && rvi[m_bar_current]>0.0)
      if(rvi[m_bar_current+2]<rvi[m_bar_current+1] && rvi[m_bar_current+1]>rvi[m_bar_current])
     {
      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);
     }
 
Roman Shiredchenko:

ОК. Кроме этого что еще заменить в условиях - здесь - бай на селл и селл на бай, чтобы баи были выше предыдущих, а селлы - ниже, типа по тренду:

Лучше делать правильно: добавить в группу 'Additional features' параметр для реверса - 'Positions: Reverse'. Таким образом появиться больше поля для манёвров - через входной параметр можно будет включать/выключать реверс. А условие новый BUY выше самого высокого BUY и новый SELL ниже самого низкого SELL делается по аналогии iRVI Street, только само условие нужно переписать:

//--- BUY Signal
   if(***)
     {
      
*** 
      double price_lowest_buy    = DBL_MAX;
      double volume_lowest_buy   = 0.0;
      double volume_last_buy     = 0.0;
      double profit_buys         = 0.0;
      double price_highest_sell  = DBL_MIN;
      double volume_highest_sell = 0.0;
      double volume_last_sell    = 0.0;
      double profit_sells        = 0.0;
      CalculateAllPositions_1(price_lowest_buy,volume_lowest_buy,volume_last_buy,profit_buys,
                              price_highest_sell,volume_highest_sell,volume_last_sell,profit_sells);


Наверное я лучше сам сделаю полный код с такими изменениями или Вы сами?

iRVI Street
iRVI Street
  • www.mql5.com
Стратегия по индикатору iRVI (Relative Vigor Index, RVI). Нет Стоп лосс, Тейк профит и Трейлинга. Закрытие только обратными сигналами. Есть Мартингейл.
 

В новой версии добавлю два входных параметра:

input group             "Additional features"
input bool     InpHigherBelow       = true;        // BUY is higher the highest BUY. SELL is below the lowest SELL
input bool     InpReverse           = false;       // Positions: Reverse

'BUY is higher the highest BUY. SELL is below the lowest SELL'

  • при 'true' - Новая BUY выше самой высокой BUY. Новая SELL ниже самой низкой SELL
  • при 'false' - поведение как в советнике iRVI Expert

'Positions: Reverse'

  • при 'false' - поведение как в советнике iRVI Expert
  • при 'true' - переворот сигнала

 
Vladimir Karputov:

Лучше делать правильно: добавить в группу 'Additional features' параметр для реверса - 'Positions: Reverse'. Таким образом появиться больше поля для манёвров - через входной параметр можно будет включать/выключать реверс. А условие новый BUY выше самого высокого BUY и новый SELL ниже самого низкого SELL делается по аналогии iRVI Street, только само условие нужно переписать:


Наверное я лучше сам сделаю полный код с такими изменениями или Вы сами?

Vladimir Karputov:

В новой версии добавлю два входных параметра:

'BUY is higher the highest BUY. SELL is below the lowest SELL'

  • при 'true' - Новая BUY выше самой высокой BUY. Новая SELL ниже самой низкой SELL
  • при 'false' - поведение как в советнике iRVI Expert

'Positions: Reverse'

  • при 'false' - поведение как в советнике iRVI Expert
  • при 'true' - переворот сигнала

ОК, лучше, конечно Вы, как абсолютно погруженный в тему!!!

Я сделал свой вариант реверса, толком его еще не тестил...