Ошибка после первого тика

 

Пропадает график индикатора после появления первого тика. Помогите исправить :0

#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Green
#property  indicator_color2  Red
//----
extern int RSIPeriod1=14;
extern int RSIPeriod2=28;

double   ind_buffer1[];
double   MABuffer1[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
//----   
   SetIndexBuffer(0, ind_buffer1);
   SetIndexBuffer(1, MABuffer1);
//----   
   IndicatorShortName("Waddah Attar Def RSI");
   Comment("copyright waddahwttar@hotmail.com");
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   Comment("");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double RSI1,RSI2,Explo;

   int  limit, i, counted_bars = IndicatorCounted();
//----
   if(counted_bars < 0) 
       return(-1);
//----
   if(counted_bars > 0) 
       counted_bars--;
   limit = Bars - counted_bars;
//----
   for(i = limit - 1; i >= 0; i--)
   {
     RSI1 = iRSI(NULL, 0, RSIPeriod1, PRICE_CLOSE, i);
     RSI2 = iRSI(NULL, 0, RSIPeriod2, PRICE_CLOSE, i);

     MABuffer1[i] = (RSI1-RSI2);
   }

   for(i = 0; i < Bars; i++)
   {
     ind_buffer1[i] = iMAOnArray(MABuffer1,0,14,0,MODE_SMA,i);
   }

   for(i = 0; i < Bars; i++)
   {
     MABuffer1[i]=0;
   }

   return(0);
}
//+------------------------------------------------------------------+
 
 
Сообщения об ошибках в логах терминала посмотрите, может там найдете подсказку в чем проблема.
 
Vitalii Ananev:
Сообщения об ошибках в логах терминала посмотрите, может там найдете подсказку в чем проблема.
терминал ошибок не выдает
 
fedonkin:
терминал ошибок не выдает
Если нет ошибок времени выполнения, значит разбирайтесь с логикой работы индикатора. 
 

Не нужно очищать только что заполненный буфер MABuffer1 от данных на каждом тике. Для чего это? (не вставляется код почему-то).

 
Игорь Герасько:

... (не вставляется код почему-то).

В конце случайно нет пробела или пустой строки?
 
fedonkin:

Пропадает график индикатора после появления первого тика. Помогите исправить :0

На первом же тике:

for(i = 0; i < Bars; i++)
   {
     MABuffer1[i]=0;
   }

 Обнулит MABuffer1 по всем барам.

 Затем на следующем тике 

for(i = limit - 1; i >= 0; i--)
   {
     RSI1 = iRSI(NULL, 0, RSIPeriod1, PRICE_CLOSE, i);
     RSI2 = iRSI(NULL, 0, RSIPeriod2, PRICE_CLOSE, i);

     MABuffer1[i] = (RSI1-RSI2);
   }

 Заполнит MABuffer1 только по обновленным барам,

А код:

for(i = 0; i < Bars; i++)
   {
     ind_buffer1[i] = iMAOnArray(MABuffer1,0,14,0,MODE_SMA,i);
   }

 Пересчитает ind_buffer1 по всем барам, базируясь на MABuffer, фактически обнуленном на предыдущем тике, и только лишь последние значения будут давать показания (обычно текущий бар).

 В общем, как запрограммировали, так и работает.

 
Karputov Vladimir:
В конце случайно нет пробела или пустой строки?

Нет. Специально через HTML смотрел. Такое частенько бывает на форумах MQL. То вставленный код удаляется, то ссылка. Со временем все восстанавливается. Какой-либо закономерности не выявил.

Проба вставки кода:

 

P. S. Как видно, пока не починилось...