индикатор на различных таймфреймах

 
Создал простой индикатор, что выводится поверх основного графика, согласно цветам BW MFI.

Проблема в том, что если переходишь на другой таймфрейм, то на графике появляется всякий мусор.
Если закрываешь Мета Трейдер, напимер на дневном таймфрейме, и запускаешь заново, то на текущем таймфрейме все ОК, переходим на часовой все ОК, возвращаемся на дневной - опять мусор???

//+------------------------------------------------------------------+
//|                                             SM Bars With MFI.mq4 |
//|                             Copyright © 2005, Smazovec developer |
//|                                                 smazovec@mail.ru |
//+------------------------------------------------------------------+
//| For SM Bars With MFI we recommend next chart settings ( press F8 |
//|  or select on menu 'Charts'->'Properties...'):                   |
//|  - On 'Common' Tab disable 'Chart on Foreground' checkbox        |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, smazovec developer."
#property link      "smazovec@yandex.ru"

#property indicator_chart_window
#property indicator_buffers 4

double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators style
   SetIndexStyle(0, DRAW_HISTOGRAM, 0, 2, Lime);
   SetIndexStyle(1, DRAW_HISTOGRAM, 0, 2, Pink);
   SetIndexStyle(2, DRAW_HISTOGRAM, 0, 2, Blue);
   SetIndexStyle(3, DRAW_HISTOGRAM, 0, 2, SaddleBrown);

//---- indicator buffers mapping
   SetIndexBuffer(0, ExtMapBuffer1);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexBuffer(2, ExtMapBuffer3);
   SetIndexBuffer(3, ExtMapBuffer4);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double smOpen, smHigh, smLow, smClose;
   double smRange, smVolume, smMFI;

   double smOpen2, smHigh2, smLow2, smClose2;
   double smRange2, smVolume2, smMFI2;

   for(int i = 0; i < Bars; i++)
     {
      smOpen   = Open[i];
      smClose  = Close[i];
      smHigh   = High[i];
      smLow    = Low[i];
      
      smOpen2  = Open[i+1];
      smClose2 = Close[i+1];
      smHigh2  = High[i+1];
      smLow2   = Low[i+1];      
      
      smVolume  = Volume[i];
      smVolume2 = Volume[i+1]*1.1;

      smRange = smHigh - smLow;
      smMFI   = smRange / smVolume;
      
      smRange2 = smHigh2 - smLow2;
      smMFI2   = (smRange2 / smVolume2) * 1.1;
   
      if ((smVolume > smVolume2)  && (smMFI > smMFI2))
        {
         ExtMapBuffer1[i] = smHigh;
         ExtMapBuffer2[i] = smLow;
         
        }
      else if ((smVolume > smVolume2)  && (smMFI < smMFI2))
        {
         ExtMapBuffer2[i] = smHigh;
         ExtMapBuffer1[i] = smLow;

        }      
      else if ((smVolume < smVolume2)  && (smMFI > smMFI2))
        {
         ExtMapBuffer3[i] = smHigh;
         ExtMapBuffer4[i] = smLow;

        }      
      else
        {
         ExtMapBuffer4[i] = smHigh;
         ExtMapBuffer3[i] = smLow;
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                             End. |
//+------------------------------------------------------------------+