Проблема в отображение функции.

 

int start()                        
{

   int      i,                     
             n,                       
             Counted_bars;        

  double Sum_CO;                 
  Counted_bars=IndicatorCounted(); 
  i=Bars-Counted_bars-1;          
  while(i>=0)                     
  {
      Sum_CO=0;                    
      for(n=i;n<=i+Aver_Bars-1;n++) 
         {
         Sum_CO=Sum_CO + Close[n]/Open[n];     
         }
      Buf_0[i]=Sum_CO/Aver_Bars;    
      Buf_1[i]=Close[i]/Open[i];     
      i--;                         
  }
  return;                        
}

вот часть кода программы. Проблема в том, что окно индикатора пустое. НО если заменить деление в цикле на любой другой арифметический знак, все работает прекрасно. Кто подскажет в чем проблема?

 
Monata54:    

      for(n=i;n<=i+Aver_Bars-1;n++) 

i--;  здесь должно быть  n--;

НО если заменить деление в цикле на любой другой арифметический знак, все работает прекрасно.

Возможно деление на 0 происходит, а делить на 0 нельзя, будет критическая ошибка

Цикл не правильно оформлен

 for(n=i; n>=0; n--) 

или

i = Bars - counted_bars;

for (n=0; n<i; n++)
 
Monata54:

int start()                        
{

   int      i,                     
             n,                       
             Counted_bars;        

  double Sum_CO;                 
  Counted_bars=IndicatorCounted(); 
  i=Bars-Counted_bars-1;          
  while(i>=0)                     
  {
      Sum_CO=0;                    
      for(n=i;n<=i+Aver_Bars-1;n++) 
         {
         Sum_CO=Sum_CO + Close[n]/Open[n];     
         }
      Buf_0[i]=Sum_CO/Aver_Bars;    
      Buf_1[i]=Close[i]/Open[i];     
      i--;                         
  }
  return;                        
}

вот часть кода программы. Проблема в том, что окно индикатора пустое. НО если заменить деление в цикле на любой другой арифметический знак, все работает прекрасно. Кто подскажет в чем проблема?

Весь код давайте. Иначе, как воспроизвести Вашу проблему?

Да, еще укажите пару, тайм фрейм, и, интервал времени, где такие чудеса наблюдаются.

 
Mislaid:

Весь код давайте. Иначе, как воспроизвести Вашу проблему?

Да, еще укажите пару, тайм фрейм, и, интервал времени, где такие чудеса наблюдаются.

На любой паре, таймфрейме, временном периоде проблема одна и та же. Окно индикатора пустое. Но если в цикле знак деления заменить на любой другой арифметичсекий знак, все работает прекрасно, будь то поизведение, сумма, или разность. Вот собственно весь код:



#property indicator_separate_window   
#property indicator_buffers 2      
#property indicator_color1 Blue   
#property indicator_color2 Red     
 
extern int Aver_Bars=5;            
 
double Buf_0[],Buf_1[];            
//--------------------------------------------------------------------
int init()                         
  {
   SetIndexBuffer(0,Buf_0);        
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1,Buf_1);        
   SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1);
   return;                        
  }
//--------------------------------------------------------------------
int start()                       
  {
   int    i,                       
          n,                       
          Counted_bars;             
   double Sum_CO;                  
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted();
   i=Bars-Counted_bars-1;         
   while(i>=0)                    
     {
      Sum_CO=0;                    
      for(n=i;n<=i+Aver_Bars-1;n++)
        {
         Sum_CO=Sum_CO + Close[n]/Open[n];   
        }
      Buf_0[i]=Sum_CO/Aver_Bars;    
      Buf_1[i]=Close[i]/Open[i];    
 
      i--;                         
     }
//--------------------------------------------------------------------
   return;                         
  }

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