Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vadim Zhunko
5226
Vadim Zhunko  
В справке написано это:
"Расчет скользящего среднего на данных, хранящихся в массиве. В отличие от iMA(...) функция iMAOnArray не выбирает данные на основе названия инструмента, таймфрейма и используемой цены - ценовые данные должны быть подготовлены заранее. Расчет производится слева направо. Для организации доступа к элементам массива, как к таймсерии (то есть справа налево), необходимо использовать функцию ArraySetAsSeries. "
Нет времени на эксперементы. Поясните пожалуйста, если кто знает, это предложение : "Расчет производится слева направо."
Я понял так. Беру ячейку N, а расчёт к ней производится из ячеек N+1,  N+2, N+3, и т.д. Правильно понимаю?
Владимир Тезис
4266
Владимир Тезис  
Текущий бар считается нулевым, предыдущий - первым, пред-предыдущий - вторым и так далее. Тут имеется ввиду, что нумерация баров берётся для рассчётов слева направо - то есть, из прошлого к настоящему.
Vadim Zhunko
5226
Vadim Zhunko  
Поясню свой вопрос.
Предложение - расчет производится слева направо - можно трактовать, по моему, двумя способами. И в обоих способах расчет будет производится слева направо.
1.Беру ячейку N, а расчёт к ней производится из ячеек N+1, N+2, N+3, и т.д.
2.Беру ячейку N, а расчёт к ней производится из ячеек N-3, N-2, N-1, и т.д.
Что из этого правильно?
Dmitry Fedoseev
43505
Dmitry Fedoseev  
У массива должно быть установлено SetAsSeries true. У индикаторных буферов по умолчанию true. Иначе все будет наоборот
Slava
Модератор
6918
Slava  
Zhunko:
Поясню свой вопрос.
Предложение - расчет производится слева направо - можно трактовать, по моему, двумя способами. И в обоих способах расчет будет производится слева направо.
1.Беру ячейку N, а расчёт к ней производится из ячеек N+1, N+2, N+3, и т.д.
2.Беру ячейку N, а расчёт к ней производится из ячеек N-3, N-2, N-1, и т.д.
Что из этого правильно?


Ни то, ни другое не правильно.

3. ... N+3, N+2, N+1, N

Vadim Zhunko
5226
Vadim Zhunko  
stringo:
Zhunko:
Поясню свой вопрос.
Предложение - расчет производится слева направо - можно трактовать, по моему, двумя способами. И в обоих способах расчет будет производится слева направо.
1.Беру ячейку N, а расчёт к ней производится из ячеек N+1, N+2, N+3, и т.д.
2.Беру ячейку N, а расчёт к ней производится из ячеек N-3, N-2, N-1, и т.д.
Что из этого правильно?


Ни то, ни другое не правильно.


3. ... N+3, N+2, N+1, N


Спасибо. Только хотел ответить на свой вопрос. Вот уже ответили. Второй вариант был ближе. Он и был правильным.
В вопрос не включалась тема индексирования в массиве. Индексирование было относительным.
Vadim Zhunko
5226
Vadim Zhunko  
Объясните сей феномен, если сможете.
Результат расчёта функции "iMAOnArray()" одного и того же массива с инверсным индексированием и прямым почему-то не отличается. Это скрипт.
//+------------------------------------------------------------------+
//|                                        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] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0};
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
 {
  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, 3, 0, 0, Shift));
  ArraySetAsSeries (Array, true);
  string str3 = 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 str4 = StringConcatenate ("\n", iMAOnArray (Array, 0, 3, 0, 0, Shift));
  Comment (str1, str2, str3, str4);
  return(0);
 }
//+------------------------------------------------------------------+

Файлы:
Slava
Модератор
6918
Slava  

1. Инверсное индексирование не влияет на физическое расположение элементов.

2. Расчёт всегда производится слева направо

Vadim Zhunko
5226
Vadim Zhunko  
stringo:

1. Инверсное индексирование не влияет на физическое расположение элементов.


2. Расчёт всегда производится слева направо



Да, но влияет на номер ячейки для которой производится вычисления.
Для параметра "Shift" в одном случае соответствует значение "5" в другом "15".
Почему для разных ячеек получаются одинаковые значения?
Vadim Zhunko
5226
Vadim Zhunko  
Может быть в iMAOnArray() встроено автоматическое инвертирование индексов?
Иначе не объяснишь это. Только как она узнаёт куда мне считать надо?
Mykola Bilak
620
Mykola Bilak  
вы считаете простую среднюю, а для нее порядок элементво не имеет значения
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий