Помогите написать функцию по обработке массивов

 
неполучается тут разобраться как заполнять двумерные массивы, идея функции в том что она должна заполнять массив из истории сделок, отсортировав в массиве ордера определенным образом, (см. параметры вызова) необходимость в такой функции возникла потому-что не удается гарантерованно и без сбоев, получать из OrdersHistoryTotal()
историю сделок в нужном разрезе. по убыванию/возрастанию времени закрытия/открытия ордера, или убыванию/возрастанию, прибыли кто хорошо знаком с массивами помомгите плиз решить проблему

прямое обращение к OrdersHistoryTotal() считаю ненадежным т.к. этот метод загадочным образом зависит (или наоборот независит?) от состояния окна история счета :(


double ArrayPosHistory[][];

//********************************************************************
// Функция заполняет массив закрытых ордеров в порядке убывания/возрастания
// Параметры
// int obj - сортировка по 
// 1 - времени закрытия
// 2 - времени открытия
// 3 - прибыли
// 4 - по объему
// 5 - по тикету
// int st - в порядке
// 1 - возрастания
// 2 - убывания
// int op - отбор по типу позиций:
// 100 - по всем
// 0 - по лонгам
// 1 - по шортам

double FillUpHistoryArray(int obj=1, int st=2, int op=100)
{//1
 //1-OpenTime 2-CloseTime 3-OpenPrice 4-ClosePrice, 5-Lots, 6-Magic, 7-Profit, 8-Ticket |
 double CommonArray[1][1];
 int tc=0, i=0, cnt = OrdersHistoryTotal();
 ArrayResize(CommonArray,cnt);
 for (i=cnt; i>=0; i--){//2
  if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){// 3
  	if (OrderSymbol() == Symbol() && OrderMagicNumber() == ExpertID){//4
    if (op==100 && (OrderType() == OP_BUY || OrderType() == OP_SELL)){//5
     //по времени закрытия
     if(obj==1){CommonArray[0][0]=0;}
     //по времени открытия
     if(obj==2){CommonArray[0][0]=0;}
     //по прибыли
     if(obj==3){CommonArray[0][0]=0;}
     //по объему
     if(obj==4){CommonArray[0][0]=0;}
     //по тикету
     if(obj==5){CommonArray[0][0]=0;}
  	 }//5
    if (op==0 && (OrderType() == OP_BUY)){//5
     //по времени закрытия
     if(obj==1){CommonArray[0][0]=0;}
     //по времени открытия
     if(obj==2){CommonArray[0][0]=0;}
     //по прибыли
     if(obj==3){CommonArray[0][0]=0;}
     //по объему
     if(obj==4){CommonArray[0][0]=0;}
     //по тикету
     if(obj==5){CommonArray[0][0]=0;}
  	 }//5
    if (op==1 && (OrderType() == OP_SELL)){//5
     //по времени закрытия
     if(obj==1){CommonArray[0][0]=0;}
     //по времени открытия
     if(obj==2){CommonArray[0][0]=0;}
     //по прибыли
     if(obj==3){CommonArray[0][0]=0;}
     //по объему
     if(obj==4){CommonArray[0][0]=0;}
     //по тикету
     if(obj==5){CommonArray[0][0]=0;}
  	 }//5
  	}//4
  }//3
 }//2
 if(op==0)  // это по всем.
 {
  if(st==1){ArraySort(CommonArray);}              // порядок возрастания 
  if(st==2){ArraySort(CommonArray,MODE_DESCEND);} // порядок убывания 
  ArrayCopy(ArrayPosHistory,CommonArray);
 } 
}//1