Devuelve true si el array que se está comprobando es un array de series temporales, en caso contrario devuelve false. Las matrices pasadas como parámetro a OnCalculate() deben ser comprobadas por el orden en que se accede a los elementos de la matriz con ArrayGetAsSeries().
El array que has declarado no es una serie temporal y no puede convertirse en una bajo ninguna circunstancia. Las series de tiempo son matrices definidas en tiempo de ejecución, por ejemplo, en la función OnCalculate():
El array que has declarado no es una serie temporal y no puede convertirse en una bajo ninguna circunstancia. Las series de tiempo son matrices predefinidas en tiempo de ejecución, por ejemplo en la función OnCalculate():
AlexSTAL: ArrayGetAsSeries no funciona como se pretende.
La función ArrayGetAsSeries sólo cambia la dirección de indexación, pero no convierte el array en una serie de tiempo. ¿Qué se pretende conseguir con esta función?
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
Rosh: La función ArrayGetAsSeries sólo cambia el sentido de la indexación, pero no convierte un array en una serie temporal. ¿Qué se pretende conseguir con esta función?
Esta función comprueba la dirección, no el cambio.
1) Sin inicialización
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) Con la inicialización
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) El código anterior, sólo con la función ArrayGetAsSeries obteniendo la dirección de indexación del array
Ejecute dicho indicador y lo comprobará por sí mismo:
Es comprensible. Y mi pregunta no se refería a errores, todo funciona como está escrito en la ayuda:
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
La pregunta surgió por la discrepancia entre lo que la ayuda resaltó en color y negrita y lo que usted dijo:
Rosh: Las series de tiempo son matrices predefinidas en tiempo de ejecución, por ejemplo en OnCalculate():
Por eso lo hago en 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);
//--------------------------------------
El array que has declarado no es una serie temporal y no puede convertirse en una bajo ninguna circunstancia. Las series de tiempo son matrices predefinidas, por ejemplo en la función OnCalculate():
Sí, creo que con estas funciones ya se han solucionado.
Pero como un deseo, para que no se me olvide - en el editor, cuando se le pide después de escribir tres o cuántos caracteres, al hacer clic en pie en la primera línea de la lista no se elimina de la lista. Acostumbrados a ser tan ya como en el estudio, creo que muchos se "molestarán" si no se hace de la misma manera que en el estudio. EN MI OPINIÓN.
Sois muy lentos :) Las caídas no son falsas, pero todo funciona. Estás buscando en el lugar equivocado. )))) Hay una función correcta.
Estoy tratando de averiguar por qué ArrayIsSeries(High) es siempre falso
La ayuda de esta función dice(https://www.mql5.com/ru/docs/array/arrayisseries)
Valor de retorno
Devuelve true si el array que se está comprobando es un array de series temporales, en caso contrario devuelve false. Las matrices pasadas como parámetro a OnCalculate() deben ser comprobadas por el orden en que se accede a los elementos de la matriz con ArrayGetAsSeries().
El array que has declarado no es una serie temporal y no puede convertirse en una bajo ninguna circunstancia. Las series de tiempo son matrices definidas en tiempo de ejecución, por ejemplo, en la función OnCalculate():
La ayuda de esta función dice(https://www.mql5.com/ru/docs/array/arrayisseries)
El array que has declarado no es una serie temporal y no puede convertirse en una bajo ninguna circunstancia. Las series de tiempo son matrices predefinidas en tiempo de ejecución, por ejemplo en la función OnCalculate():
ArrayGetAsSeries no funciona como se pretende.
Las series de tiempo son matrices predefinidas en tiempo de ejecución, por ejemplo, en OnCalculate():
Lo que sobre esto está escrito en la ayuda:
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
Lo que sobre esto está escrito en la ayuda:
Ejecute dicho indicador y lo comprobará por sí mismo:
La función ArrayGetAsSeries sólo cambia el sentido de la indexación, pero no convierte un array en una serie temporal. ¿Qué se pretende conseguir con esta función?
Esta función comprueba la dirección, no el cambio.
1) Sin inicialización
2) Con la inicialización
3) El código anterior, sólo con la función ArrayGetAsSeries obteniendo la dirección de indexación del array
En el servicio de atención al cliente me equivoqué en el nombre de la función sóloEjecute dicho indicador y lo comprobará por sí mismo:
Es comprensible. Y mi pregunta no se refería a errores, todo funciona como está escrito en la ayuda:
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
La pregunta surgió por la discrepancia entre lo que la ayuda resaltó en color y negrita y lo que usted dijo:
Rosh:
Las series de tiempo son matrices predefinidas en tiempo de ejecución, por ejemplo en OnCalculate():
Por eso lo hago en OnCalculate():
La ayuda de esta función dice(https://www.mql5.com/ru/docs/array/arrayisseries)
El array que has declarado no es una serie temporal y no puede convertirse en una bajo ninguna circunstancia. Las series de tiempo son matrices predefinidas, por ejemplo en la función OnCalculate():
La comprobación tampoco funciona en el indicador.
Además,prev_calculado ya no funciona, siempre es 0:
Sí, creo que con estas funciones ya se han solucionado.
Pero como un deseo, para que no se me olvide - en el editor, cuando se le pide después de escribir tres o cuántos caracteres, al hacer clic en pie en la primera línea de la lista no se elimina de la lista. Acostumbrados a ser tan ya como en el estudio, creo que muchos se "molestarán" si no se hace de la misma manera que en el estudio. EN MI OPINIÓN.