Порядок расчёта в "iMAOnArray()" и подобных функциях. - страница 2

 
nickbilak:
вы считаете простую среднюю, а для нее порядок элементво не имеет значения

ЭТО КАК ЭТО????????!!!!!......
 
Zhunko:
nickbilak:
вы считаете простую среднюю, а для нее порядок элементво не имеет значения

ЭТО КАК ЭТО????????!!!!!......


(1+2+3)/3=2

(3+2+1)/3=2

А ВОТ ТАК!!!!!!!!!!!

:)

 
nickbilak:
Zhunko:
nickbilak:
вы считаете простую среднюю, а для нее порядок элементво не имеет значения

ЭТО КАК ЭТО????????!!!!!......


(1+2+3)/3=2

(3+2+1)/3=2

А ВОТ ТАК!!!!!!!!!!!

:)


Для каждого, отдельно взятого элемента согласен, а последовательность элементов ?
 

стало интересно и проверил скрипт с различными типами средних - все равно значения одинаковы

переиначил скрипт, теперь SMA одинаковы,а EMA - уже нет

//+------------------------------------------------------------------+
//|                                        Checking_iMAOnArray().mq4 |
//|                                        Copyright © Zhunko        |
//|                                        zhunko@mail.ru            |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007 Zhunko"            
#property link      "zhunko@mail.ru"
//----
#property show_inputs
//----
extern int Shift = 5;
//----
double Array[21];
double Array2[21];
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
 {
   
  ArraySetAsSeries (Array2, true);
  for (int i=0; i!=21; i++) {
    Array[i]=i;
    Array2[i]=i;
  }
  string str1 = StringConcatenate ("\nArray[21] = {", Array[0], ", ", Array[1], ", ", Array[2], ", ", Array[3], ", ", Array[4], ", ", Array[5], ", ", Array[6], ", ", Array[7], ", ", Array[8], ", ", Array[9], ", ", Array[10], ", ",
                                                      Array[11], ", ", Array[12], ", ", Array[13], ", ", Array[14], ", ", Array[15], ", ", Array[16], ", ", Array[17], ", ", Array[18], ", ", Array[19], ", ", Array[20], "};");
  string str2 = StringConcatenate ("\n", iMAOnArray (Array, 0, 11, 0, MODE_EMA, Shift));
  string str3 = StringConcatenate ("\nArray2[21] = {", Array2[0], ", ", Array2[1], ", ", Array2[2], ", ", Array2[3], ", ", Array2[4], ", ", Array2[5], ", ", Array2[6], ", ", Array2[7], ", ", Array2[8], ", ", Array2[9], ", ", Array2[10], ", ",
                                                      Array2[11], ", ", Array2[12], ", ", Array2[13], ", ", Array2[14], ", ", Array2[15], ", ", Array2[16], ", ", Array2[17], ", ", Array2[18], ", ", Array2[19], ", ", Array2[20], "};");
  string str4 = StringConcatenate ("\n", iMAOnArray (Array2, 0, 11, 0, MODE_EMA, Shift));
  Comment (str1, str2, str3, str4);
  return(0);
 }
//+------------------------------------------------------------------+
 
nickbilak:
Zhunko:

nickbilak:
вы считаете простую среднюю, а для нее порядок элементво не имеет значения

ЭТО КАК ЭТО????????!!!!!......


(1+2+3)/3=2


(3+2+1)/3=2


А ВОТ ТАК!!!!!!!!!!!


:)


Для параметра "Shift" в одном случае соответствует значение "5" в другом "15".
Т.е.:
(3+4+5)/3=6 ,а не 14;
(13+14+15)/3=14 как и получается.
 
там stringo товечал что для iMAOnArray важно физическое расположение элементов в памяти, а ArraySetAsSeries его не меняет. отсюда и результат.
 
nickbilak:
там stringo товечал что для iMAOnArray важно физическое расположение элементов в памяти, а ArraySetAsSeries его не меняет. отсюда и результат.

А что параметр "Shift" ни чего уже не значит?
Тогда вообще зачем он нужен?
И зачем тогда функция "ArraySetAsSeries()" нужна?
Зачем, если они ни чего не меняют?
 
Объяснение может быть такое.
Обращение к элементам происходит в памяти.
Но тогда как быть с параметром "Shift"?
Получается, что он тоже обращается прямо в память.
Остаётся последний вопрос. Зачем нужна функция "ArraySetAsSeries()"?
Для красоты поменять направление индексирования?
 

iMAOnArray не смотрит на ArraySetAsSeries, а shift в ней считается справа-налево, независимо от индекса массива

ArraySetAsSeries видимо ввели в связи с особенностями внутренней реализации массивов серий данных

 

ArraySetAsSeries просто обеспечивает доступ к элементам массива справа налево через индекс в квадратных скобках, не меняя физического расположения его элементов.

То есть, запись arr[0] обеспечит доступ к последнему элементу массива, а не к первому

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