Возвращается true, если проверяемый массив является массивом-таймсерией, иначе возвращается false. Массивы, передаваемые в качестве параметра функции OnCalculate(), необходимо проверять на порядок доступа к элементам массива функцией ArrayGetAsSeries().
Объявленный Вами массив не является таймсерией и не может ею стать не при каких обстоятельствах. Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
Объявленный Вами массив не является таймсерией и не может ею стать не при каких обстоятельствах. Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
Rosh: Функция ArrayGetAsSeries меняет только направление индексации, но не превращает массив в таймсерию. Что Вы пытаетесь получить с помощью этой функции?
Эта функция проверяет направление, а не меняет.
1) Без инициализации
double Buf[];
voidOnStart()
{
ArrayResize(Buf, 3);
Print("ArrayGetAsSeries(Buf): ", ArrayGetAsSeries(Buf)); // ArrayGetAsSeries(Buf): false// Меняем направление на обратный порядокPrint("Установка в true прошла: ", ArraySetAsSeries(Buf, true)); // Установка в true прошла: truePrint("ArrayGetAsSeries(Buf): ", ArrayGetAsSeries(Buf)); // ArrayGetAsSeries(Buf): false// Меняем направление на прямой порядокPrint("Установка в false прошла: ", ArraySetAsSeries(Buf, false)); // Установка в false прошла: truePrint("ArrayGetAsSeries(Buf): ", ArrayGetAsSeries(Buf)); // ArrayGetAsSeries(Buf): false
}
2) С инициализацией
double Buf[];
voidOnStart()
{
ArrayResize(Buf, 3);
Buf[0] = 0; Buf[1] = 1; Buf[2] = 2;
Print("ArrayGetAsSeries(Buf): ", ArrayGetAsSeries(Buf)); // ArrayGetAsSeries(Buf): false// Меняем направление на обратный порядокPrint("Установка в true прошла: ", ArraySetAsSeries(Buf, true)); // Установка в true прошла: truePrint("ArrayGetAsSeries(Buf): ", ArrayGetAsSeries(Buf), " [", Buf[0], ",", Buf[1], ",", Buf[2], "]"); // ArrayGetAsSeries(Buf): true [2,1,0]// Меняем направление на прямой порядокPrint("Установка в false прошла: ", ArraySetAsSeries(Buf, false)); // Установка в false прошла: truePrint("ArrayGetAsSeries(Buf): ", ArrayGetAsSeries(Buf), " [", Buf[0], ",", Buf[1], ",", Buf[2], "]"); // ArrayGetAsSeries(Buf): false [0,1,2]
}
3) Вышеописанный код, только с функцией получения направления индексации массива ArrayGetAsSeries
Это понятно. И мой вопрос был не из-за ошибок, всё работает как и написано в справке:
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
Вопрос возник из-за несоответствия выделенного в справке цветом и жирным шрифтом с тем, что сказали Вы:
Rosh: Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
Поэтому я в OnCalculate() делаю так:
//--------------------------------------if (ArrayGetAsSeries(time)!=true)
ArraySetAsSeries(time,true);
if (ArrayGetAsSeries(open)!=true)
ArraySetAsSeries(open,true);
if (ArrayGetAsSeries(high)!=true)
ArraySetAsSeries(high,true);
if (ArrayGetAsSeries(low)!=true)
ArraySetAsSeries(low,true);
if (ArrayGetAsSeries(close)!=true)
ArraySetAsSeries(close,true);
//--------------------------------------
Объявленный Вами массив не является таймсерией и не может ею стать не при каких обстоятельствах. Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
Да я думаю с этими функциями они сами уже разберутся.
Но вот в качестве пожелания, что бы не забылось - в редакторе при подсказке после набора трех или сколько там символов, при нажатии вверх стоя на первой строчке списка список не убирается. Просто привычно так уже как в студии, думаю что многих будет "раздражать" если не сделать так же как в студии. ИМХО.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Экие вы тормознутые :) Фалс не фалс, а все работает. Не туда смотрите. :)))) Есть правильная функция.
Кручу, верчу, понять хочу, почему ArrayIsSeries(High) всегда false
В справке для этой функции сказано (https://www.mql5.com/ru/docs/array/arrayisseries)
Возвращаемое значение
Возвращается true, если проверяемый массив является массивом-таймсерией, иначе возвращается false. Массивы, передаваемые в качестве параметра функции OnCalculate(), необходимо проверять на порядок доступа к элементам массива функцией ArrayGetAsSeries().
Объявленный Вами массив не является таймсерией и не может ею стать не при каких обстоятельствах. Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
В справке для этой функции сказано (https://www.mql5.com/ru/docs/array/arrayisseries)
Объявленный Вами массив не является таймсерией и не может ею стать не при каких обстоятельствах. Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
ArrayGetAsSeries не работает как нужно.
Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
А как же быть с этим, написано в справке:
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
А как же быть с этим, написано в справке:
Запустите такой индикатор, и все увидите сами:
Функция ArrayGetAsSeries меняет только направление индексации, но не превращает массив в таймсерию. Что Вы пытаетесь получить с помощью этой функции?
Эта функция проверяет направление, а не меняет.
1) Без инициализации
2) С инициализацией
3) Вышеописанный код, только с функцией получения направления индексации массива ArrayGetAsSeries
В сервис-деске я ошибся с именем функции простоЗапустите такой индикатор, и все увидите сами:
Это понятно. И мой вопрос был не из-за ошибок, всё работает как и написано в справке:
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
Вопрос возник из-за несоответствия выделенного в справке цветом и жирным шрифтом с тем, что сказали Вы:
Rosh:
Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
Поэтому я в OnCalculate() делаю так:
В справке для этой функции сказано (https://www.mql5.com/ru/docs/array/arrayisseries)
Объявленный Вами массив не является таймсерией и не может ею стать не при каких обстоятельствах. Таймсерии - это предопределенные системой исполнения массивы, например, в функции OnCalculate():
В индикаторе проверка тоже не работает.
А еще, чего то перестало работать prev_calculated, постоянно 0 :
Да я думаю с этими функциями они сами уже разберутся.
Но вот в качестве пожелания, что бы не забылось - в редакторе при подсказке после набора трех или сколько там символов, при нажатии вверх стоя на первой строчке списка список не убирается. Просто привычно так уже как в студии, думаю что многих будет "раздражать" если не сделать так же как в студии. ИМХО.