Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Публикуй программы в Code Base. Увеличивай свой рейтинг!
ramnek
149
ramnek 2014.06.13 19:36 
int start()
{
   int i,j;
   int limit;
   int counted_bars=IndicatorCounted();
   int InpShadowPeriod = 5;
        double median_volume = 0;
        
   if(Bars<50)
      return 0;
      

   if(counted_bars>0) counted_bars--;
      limit=Bars-counted_bars;
      

   for(i = InpMedianPeriod; i < limit; i ++)
        {  
      ExtMedianBufferUp[i] =  0;
           median_volume = 0;
           for(j = i-InpShadowPeriod; j < i; j ++)
           {
                median_volume+=Volume[j];
           }
        ExtMedianBufferUp[i] = median_volume/InpShadowPeriod;
     }


   return(0);
  }
//+------------------------------------------------------------------+



median =  iCustom(Symbol(),0,"Median_ver1", 0,1); 

 

Это код индикатора среднего объема за  InpShadowPeriod. На графике все чудесно отображается, но при использовании iCustom он возвращает всегда число 2147483647..

где-то в цикле переполнение.. я пытался удалить его разными if-ами, но ничего не помогает... Где  моя ошибка?! Подскажи, пожалуйста!


Victor Nikolaev
Модератор
14028
Victor Nikolaev 2014.06.14 01:13  
ramnek:

 

Это код индикатора среднего объема за  InpShadowPeriod. На графике все чудесно отображается, но при использовании iCustom он возвращает всегда число 2147483647..

где-то в цикле переполнение.. я пытался удалить его разными if-ами, но ничего не помогает... Где  моя ошибка?! Подскажи, пожалуйста!



В будущее заглядываете

 Проверьте чему равна переменная j

for(j = i-InpShadowPeriod; j < i; j ++)
ramnek
149
ramnek 2014.06.14 11:54  
Не могу сообразить как я могу в будущее заглядывать, если большой цикл имеет ограничение i < limit, а внутренний цикл j < i.. итого: j < i < limit - разве так не верно?
Victor Nikolaev
Модератор
14028
Victor Nikolaev 2014.06.14 12:08  
ramnek:
Не могу сообразить как я могу в будущее заглядывать, если большой цикл имеет ограничение i < limit, а внутренний цикл j < i.. итого: j < i < limit - разве так не верно?

При i =0 (обрабатываем нулевой бар) j=-InpShadowPeriod
Boeing747
241
Boeing747 2014.06.14 12:15  
ramnek:
Не могу сообразить как я могу в будущее заглядывать, если большой цикл имеет ограничение i < limit, а внутренний цикл j < i.. итого: j < i < limit - разве так не верно?

индексы буферов и массивов должны быть целыми положительными числами (число 0 относится к этим числам), если я правильно понял особенности индексирования буферов и массивов. наверно в этом направлении следует искать ошибку. равенства

for(i = InpMedianPeriod; и for(j = i-InpShadowPeriod; 

должны быть больше или равны 0.
ramnek
149
ramnek 2014.06.15 17:39  
При i =0 (обрабатываем нулевой бар) j=-InpShadowPeriod

 

Но такого быть не может, потому что большой цикл начинается при i = InpMedianPeriod;

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