Цикл for() в цикле for() - страница 2

 
double buffer_volume = 0;
int countbars=20;
for(int k=0;k <= (limit!=0 ? limit-(countbars+1) : limit);k++)
{	buffer_volume = 0;
	for(int i=k; i<=k+countbars;i++){
		buffer_volume += iClose(Symbol(),PERIOD_CURRENT,i);
	}
	//далее просто пишите куда вам эту переменную запихнуть надо
}

А вообще код простейший...

странно что у вас с этим проблемка..

тут код на языке MQL4 к сожалению MQL5 не владею.

в математике такой метод называется "скользящее окно"

способ вейвлет-преобразований будет гораздо круче работать ;)

 

Как много вредных советов. А надо перед первым циклом подкорректировать limit. 

if(limit>Bars-countbars)limit=Bars-countbars;
 
Dmitry Fedoseev:

Как много вредных советов. А надо перед первым циклом подкорректировать limit. 

ну... мне кажется это надо было впитать с молоком матери...)

iClose[k+i]++;

после такого мне кажется человек ничего толкового не напишет что это вообще такое?

инкрементировать цену закрытия да еще и не правильно написанную..хм...или в MQL5 такое выражение что-то значит?

 
Martin Cheguevara:

ну... мне кажется это надо было впитать с молоком матери...)

после такого мне кажется человек ничего толкового не напишет что это вообще такое?

инкрементировать цену закрытия да еще и не правильно написанную..хм...или в MQL5 такое выражение что-то значит?

Он же исправился, вопрос не об этом был

Если человек не указал язык, считайте что он спрашивает про Mql4. Как с городом в обьявлениях, не указан - значит Москва. Так как 80% пишется на MQL4 на данный момент. 


 

Если уж оптимизировать, не надеясь на оптимизацию со стороны компилятора, то:

   double buffer_volume = 0.0;
   int countbars=20,
       max=limit-countbars;
   if (max>0)
      for(int k=0;k<max;++k)
         {
         buffer_volume = 0.0;
         for(int i=k,iMax=k+countbars; i<iMax; buffer_volume += iClose(Symbol(),PERIOD_CURRENT,i++));
         //TODO
         }
Причина обращения: