индикатор волатильности - не прорисовываеться... помогите

 
написал индикатор, когда присоединяю его на график, ни чего не показывает, а когда нажиа f5, тогда только прорисовываеться, в чем проблема, подскажите.
код индикатора:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DimGray



#property show_inputs
extern int ma_period_fast = 10;
extern int ma_period_slow = 20;
extern int ma_method = 0;//MODE_SMA 0 Простое скользящее среднее 
                         //MODE_EMA 1 Экспоненциальное скользящее среднее 
                         //MODE_SMMA 2 Сглаженное скользящее среднее 
                         //MODE_LWMA 3 Линейно-взвешенное скользящее среднее 


//---- buffers
double Buf_main[];
double Buf[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,Buf_main);
  
   SetIndexBuffer(1,Buf);
   SetIndexLabel(1, "range");
   SetIndexLabel(0, "histogram_range");

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int limit;
    int counted_bars = IndicatorCounted();
//---- последний посчитанный бар будет пересчитан
    if(counted_bars > 0) 
        counted_bars--;
    limit = Bars - counted_bars - 1;
      
  //---- основной цикл //теперь цикл заканчивается на 1
    for(int i = limit; i >= 1; i--)
         {
         Buf[i] = MathAbs((Open[i]-Close[i])/Point);    
         Buf_main[i] = iMAOnArray(Buf,0,ma_period_fast,0,ma_method,i)-iMAOnArray(Buf,0,ma_period_slow,0,ma_method,i);
         }
         
    
      
//----
   return(0);
  }
//+------------------------------------------------------------------+
заранее благодарен!
 
dmmikl86 >>:
написал индикатор, когда присоединяю его на график, ни чего не показывает, а когда нажиа f5, тогда только прорисовываеться, в чем проблема, подскажите.
код индикатора:
заранее благодарен!

Сделайте два цикла - у меня заработало:

  //---- основной цикл //теперь цикл заканчивается на 1
    for(int i = limit; i >= 1; i--)
         Buf[i] = MathAbs((Open[i]-Close[i])/Point);    
    for(i = limit; i >= 1; i--)
         Buf_main[i] = iMAOnArray(Buf,0,ma_period_fast,0,ma_method,i)-iMAOnArray(Buf,0,ma_period_slow,0,ma_method,i);
 
Svinozavr писал(а) >>

Сделайте два цикла - у меня заработало:


спасибо, у меня тоже. может подскажиет почему так?

 
dmmikl86 >>:


спасибо, у меня тоже. может подскажиет почему так?

))) Группа ф-й xxxOnArray - загадочная по логике. Можно предположить, что массив должен быть полностью сформирован, чтобы она заработала как дОлжно.

Так или иначе, такие ф-ии выполняются в отдельном цикле. Можете посмотреть в коде, как считаются сигнальные стохастика, MACD и т.п. - именно так, в своем цикле.

Короче, не заморачиватесь. Считает и ладно.)))

Причина обращения: