Минимизировать количество массивов для расчета "среднего" и "комбинаторика".

 

Подскажите, плз, элегантное решение из "комбинаторики".
Есть 2 вложенных цикла, в которых рассчитываю

  for(int iSymbol1 = 0; iSymbol1 < CountPair; iSymbol1++)
   for(int iSymbol2 = 0; iSymbol2 < CountPair; iSymbol2++)
   {
    if(iSymbol1 <= iSymbol2) continue;
    double CurrФункцция = Функцция(iSymbol1, iSymbol2);
   

Получается "треугольная матрица" (уж простите, не полезу в википедииза за точным название)
После этого, мне хочется вычислить для каждого "узла" среднее за MAPeriod баров назад.

Для "нормального"/по-барного/одномерного расчета, я сделал бы так

double AvgArray[];
//В init't
ArrayResize(AvgArray, MAPeriod);
ArrayInitialize(AvgArray, 0.00);

//В start
    double CurrФункцция = Функцция(iSymbol1, iSymbol2);

    for(int iAverage = 0; iAverage < MAPeriod-1; iAverage++)
     AvgArray[iAverage] = AvgArray[iAverage+1];
    AvgArray[MAPeriod-1] = CurrФункцция;
    double AvgФункцция = iMAOnArray(AvgArray, 0, MAPeriod, 0, MODE_SMA, 0);

- Для одномерного массива (один цикл for в начале) и, тем более, для двумерного, получается, что нужно описать массив AvgArray тоже как двух (трехмерный) - по-другому никак?
- Если я хочу работать с iMAOnArray (просто есть еще iBandsOnArray, iCCIOnArray, iMomentumOnArray и т.п.), то получается, что мне нужен будет еще один массив, в который я буду копировать нужное "измерение" многомерного массива AvgArray?
Собственно вопрос - есть ли более элегантное решение

 

Элегантно многомерными массивами (если их не 250 ;)).

А так все зависит от алгоритма сравнивания содержимого буф.

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