RSI с алертом на прбитие

Добрый день, есть ли возможность сделать RSI с алертом и стрелками на пробитие канала, без перерисовки стрелок после закрытия бара.
  • 0
  • Просмотров: 3151
  • 1 октября 2015, 21:24
  • Grusha
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!


Брокер для ваших роботов, 15 лет на рынке

Комментарии (1)

+
0
Пробовал переделать стандартный RSI под алерты, но он расчитан только на индикацию текущего бара. Переделал другой. Сигналит при пробитии обоих уровней и туда и обратно.
www.opentraders.ru/downloads/886/




// ---------------------------------------------------------------------------
//  Рассчёт RSI по книге Ч.Лебо и Д.Лукаса, для усреднения используется SMA.
// ---------------------------------------------------------------------------

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1  Red
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1  40
#property indicator_level2  60

// Период индикатора.
extern int PERIOD=9;
extern int RSILevel=40;

double LastOpen=0;
// Буферы индикатора.
double buf_rsi[];
// Рабочий период индикатора.
int work_period;
// Инициализация.
int init()
  {
   IndicatorShortName(StringConcatenate(
                      "SMA RSI (",PERIOD,")"));
   IndicatorDigits(0);

   SetIndexBuffer(0,buf_rsi);
   SetIndexEmptyValue(0,-1);
   SetIndexLabel(0,"SMA RSI("+PERIOD+")");

   work_period=Bars-PERIOD;

   return(0);
  }
// Главный цикл.
int start()
  {
   int i;

   for(i=Bars-IndicatorCounted()-1; i>=0; i--)
     {
      if(i<work_period)
        {
         double up=0,dn=0;
         int j;

         for(j=i+PERIOD-1; j>=i; j--)
           {
            double v=Close[j]-Open[j];

            if(v>0)
              {
               up+=v;
                 } else {
               dn-=v;
              }
           }

         buf_rsi[i]=up/(up+dn)*100;
           } else {
         buf_rsi[i]=-1;
        }
     }
     
   if(Open[0]!=LastOpen)
     {
      if(buf_rsi[1]>RSILevel && buf_rsi[2]<RSILevel) Alert(Symbol()+" Пробитие Уровня RSI "+IntegerToString(RSILevel)+" Снизу Вверх!");
      if(buf_rsi[1]<RSILevel && buf_rsi[2]>RSILevel) Alert(Symbol()+" Пробитие Уровня RSI "+IntegerToString(RSILevel)+" Cверху Вниз!");

      if(buf_rsi[1]>(100-RSILevel) && buf_rsi[2]<(100-RSILevel)) Alert(Symbol()+" Пробитие Уровня RSI "+IntegerToString(100-RSILevel)+" Снизу Вверх!");
      if(buf_rsi[1]<(100-RSILevel) && buf_rsi[2]>(100-RSILevel)) Alert(Symbol()+" Пробитие Уровня RSI "+IntegerToString(100-RSILevel)+" Cверху Вниз!");
     }
   LastOpen=Open[0];
   
   Comment("\n buf_rsi[0] ",buf_rsi[1],
           "\n buf_rsi[1] ",buf_rsi[2]);
   return(0);
  }
//+------------------------------------------------------------------+


Редактирован: 2 октября 2015, 15:49
avatar

  35  AM2 Сообщений: 16277 - Андрей

  • 2 октября 2015, 15:27

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий