Discusión sobre el artículo "Indicadores personalizados para principiantes en MQL5" - página 2

 
serg7771959:

¡Nicholas!

¿Puedes decirme por qué cuando intento rellenar un array de indicadores en un bucle utilizando la fórmula Masa[ i ]= Masa[ i+1]+A; donde A es una variable, la compilación va sin errores, pero cuando entro en la ventana me aparece el mensaje array out of range (array fuera de rango)?


Porque el bucle debe hacerse teniendo en cuenta la celda donde se hará la última entrada. Si el tamaño del array Mass[], digamos, es 10, el bucle de cero a 9 (este es el índice de la última celda del array), entonces en i==9, se intenta escribir en la celda con el índice 9+1. El array no tiene la celda 10. Así que obtienes una salida fuera del array.
 
¡¡¡Necesitamos más tutoriales como este!!!
 

Nikolay, gracias. Es un gran tutorial!
Pero creo que la variable

const int begin

siempre tendrá valor cero, en el código. ¿Es significativo para el cálculo?

 
igorsds:

Nikolay, gracias. Es un gran tutorial!
Pero creo que la variable

siempre tendrá valor cero, en el código. ¿Es significativo para el cálculo?

El valor de "begin" será diferente dependiendo de qué indicador se aplica a. Si se aplica a RSI,"begin " será 14, por ejemplo.

 

Si intenta compilar por primera vez, puede obtener un error de búfer. Así que por favor cambie la cantidad de buffers:

#propiedad indicator_buffers 2

Más tarde, puedes volver a 1 (un) buffer:

#propiedad indicator_buffers 1

 
Como combinar con fibo zigzag
 

No lo entiendo. Supongamos que

rates_total == MA_Period - 1

y esta es la primera llamada de la función por lo que

prev_calculado == 0

y también begin == 0

entonces la condición en el primer if(rates_total < MA_Period - 1 + begin) se evalúa a false

entonces

first = MA_Period - 1 se ejecutaría

pero entonces NO HAY CÁLCULOS porque la condición en el primer bucle for evalúa a false.

Creo que la primera condición if debería ser

if( rates_total < MA_Period + begin )

¿me estoy perdiendo algo aquí?

 

Y una más. ¿Por qué debo empezar a calcular a partir de la barra con el número (prev_calculado - 1), si ya calculé el indicador prev_calculado veces?

Por ejemplo, calculé el indicador 5 veces para las barras 0, 1, 2, 3 y 4. No necesito calcularlo en la barra 4 de nuevo. Debo continuar a partir de la barra 5.

 
LRDPRDX #:

Y una más. ¿Por qué debo empezar a calcular a partir de la barra con el número (prev_calculado - 1), si ya he calculado el indicador prev_calculado veces?

Por ejemplo, he calculado el indicador 5 veces para las barras 0, 1, 2, 3 y 4. No necesito calcularlo en la barra 4 de nuevo. Debo continuar a partir de la barra 5.

Ok. Creo que no estoy en lo cierto aquí, porque la barra 4 podría haber cambiado desde mi último cálculo. Entonces el (prev_calculado - 1) parece correcto.
 
Estafas a la orden del día. Bravi