Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 622

 
¿Cómo puedo aumentar el número de barras en el probador en MT4 antes de inicializar el indicador? El indicador debería calcular en el historial - hay que comprobar si es correcto en el probador.
 
Otra pregunta, ¿cómo puedo comprobar la integridad del historial durante la inicialización en MT4? Sospecho que en el momento de la inicialización se está intercambiando el historial, lo que afecta al cálculo previo...
 
-Aleks-:
Otra pregunta, ¿cómo puedo comprobar la integridad del historial durante la inicialización en MT4? Tengo la sospecha de que en el momento de la inicialización se está intercambiando el historial, lo que afecta al cálculo previo...
Comprueba el número de barras rates_total. Si rates_total > prev_calculated+1 - entonces se ha intercambiado más de 1 barra y por tanto se está intercambiando el historial.
 
Alexey Kozitsyn:
Comprueba el número de barras rates_total. Si rates_total > prev_calculated+1 - significa que se ha intercambiado más de 1 barra y, por tanto, se ha intercambiado el historial.
Y comprobar la frecuencia una vez por segundo, y después de una larga pausa continuar la inicialización, ¿verdad?
 
-Aleks-:
Y la frecuencia de la comprobación hacer una vez por segundo, y después de una larga pausa continuar la inicialización, ¿verdad?

En general, como me dijeron recientemente en SD, es mejor prescindir del temporizador en los indicadores.

Basta con añadir la condición: if( prev_calculado <= 0 || rates_total > prev_calculado+1 ) como condición de primer inicio y recálculo completo del indicador. Si lo haces en OnCalculate(), no habrá problemas.

 
¿Y de qué "larga pausa" hablas?
 
Alexey Kozitsyn:

En general, como me dijeron recientemente en SD, en los indicadores es mejor prescindir del temporizador.

Basta con añadir la condición: if( prev_calculado <= 0 || rates_total > prev_calculado+1 ) como condición de primer inicio y recálculo completo del indicador. Si lo haces en OnCalculate(), no habrá ningún problema.

Quiero tener un cálculo correcto de la clase de indicador en mi Asesor Experto.

Si permitimos 10 000 barras por gráfico, y las tenemos, entonces Bares no devolverá más de 10000 aunque haya una nueva barra. Entonces, ¿cómo puedo saber si hay una nueva barra cuando se carga el historial?

 
Y aparentemente la comprobación no debe hacerse en la inicialización, ya que el EA se inicializa cuando se carga el terminal antes de conectarse a DC....
 
-Aleks-:

Bueno, necesito que la clase de tipo de indicador se calcule correctamente en mi EA.

Por lo tanto estoy confundido, si se permiten 10000 barras por gráfico y así es, entonces Bares no devolverá más de 10000 aunque aparezcan nuevas barras. Entonces, ¿cómo puedo saber si hay una nueva barra al cargar el historial?

¿Por qué no? Sí, lo hará. Y Bars() y rates_total aumentarán. Comprueba el número en OnCalculate().

El número de barras fijado en el terminal no afecta al número de barras del probador (algo menos de 100000).

 
Alexey Kozitsyn:

¿Por qué no? Lo hará. Tanto Bars() como rates_total aumentarán. Comprueba el número en OnCalculate().

El número de compases fijado en el terminal no afectó al número de compases en el probador (algo menos de 100000).

No, no, no lo necesito en el probador, sino cuando ejecuto el terminal en un gráfico real - allí sólo funcionará si el historial tiene menos del número máximo de barras, ¿o me equivoco?