запись данных в массив

 
Как можно записать значения найденные в цикле в массив?
 
Vitaly Stepanov:
Как можно записать значения найденные в цикле в массив?
double q[],o[];

int Hendel = iMACD(Symbol(),Period(),12,5,5,PRICE_CLOSE);
int u=CopyBuffer(Hendel,0,0,6000,q);
ArraySetAsSeries(q,true);

for(int i=0;i<=4000;i++)
{
if(q[i+1]>0 && q[i]<=0)
{
      int ru=ArraySize(o);
      ArrayResize(o, ru+1);
      o[ru]=MathAbs(q[i]);
}
}
 
Evgeny Raspaev:

Да, работает. Спасибо.

Но я хотел ускорить процесс, а получилось еще медленнее, хоть и не значительно.

Думал один цикл будет быстрее, чем  цикл в каждой последовательной функции.

Жаль.

 
Vitaly Stepanov:

Да, работает. Спасибо.

Но я хотел ускорить процесс, а получилось еще медленнее, хоть и не значительно.

Думал один цикл будет быстрее, чем  цикл в каждой последовательной функции.

Жаль.

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

 
Vitaly Stepanov:

Да, работает. Спасибо.

Но я хотел ускорить процесс, а получилось еще медленнее, хоть и не значительно.

Думал один цикл будет быстрее, чем  цикл в каждой последовательной функции.

Жаль.

Что бы быстрей было, не надо изменять размер на каждом проходе цикла. Лучше один раз в начале установить размер с запасом, а в конце укоротить.

 
double q[],o[];

int Hendel = iMACD(Symbol(),Period(),12,5,5,PRICE_CLOSE);
int u=CopyBuffer(Hendel,0,0,6000,q)-1;
ArraySetAsSeries(q,true);
ArrayResize(o,u);
int count=0;
for(int i=0;i<u;i++)
   if(q[i+1]>0 && q[i]<=0)
      o[count++]=MathAbs(q[i]);
ArrayResize(o,count);
Как-то так.
 
Evgeny Raspaev:

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

Разумеется.

 

Всем спасибо. Урок усвоил.

К сожалению скорость не радует. 

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