![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Desarrolladores, tienen un error en alguna parte.
Mira la captura de pantalla de Comment después de cerrar el terminal y abrirlo después de 1 minuto.
Número de elementos inicializados y que el primer, segundo, tercer y cuarto elemento del buffer está vacío.
El indicador sólo cuenta el buffer 0. Entonces, ¿por qué 2 velas?
Desarrolladores, tienen un error en alguna parte.
Mira la captura de pantalla de Comment después de cerrar el terminal y abrirlo después de 1 minuto.
Número de elementos inicializados y que el primer, segundo, tercer y cuarto elemento del buffer está vacío.
El indicador sólo cuenta el buffer 0. Entonces, ¿por qué 2 velas?
Porque cuando se analiza una nueva barra, no se comprueba el número de barras, sino que se limita a comprobar el tiempo. Cuando se inicia el terminal o se interrumpe la conexión con el servidor durante la operación, llega un tick antes de que lleguen las barras que faltan (al historial completo). En este tick, se crea una nueva vela, pero hay un hueco (falta de historia) entre ella y la historia en el terminal, que se descargará del servidor y se insertará en el sistema, y como no se analiza el número de barras, se pensará que no hay ninguna barra nueva en el siguiente cálculo, y es cuando aparece la segunda vela. Tras la apertura de un nuevo bar, éste desaparecerá.
¿Y no importa que en deinit la puesta a cero se produzca cuando el terminal está cerrado?
Vasily, ejecuta un indicador de prueba que imprima el número de barras.
Esto es lo que imprime en el registro.
Tal vez esto le diga de dónde viene el problema...
Por favor, pregunte a los desarrolladores para obtener una respuesta sencilla.
Cuando se cierra el terminal, ¿se ejecuta la función DeInit() en los programas adjuntos al gráfico?
Estrictamente hablando, no.
Se ejecuta OnDeinit. DeInit sólo se ejecutará si se llama explícitamente desde OnDeinit.
Si te refieres a la antigua función deinit, ten en cuenta también que los nombres de las funciones distinguen entre mayúsculas y minúsculas. Es decir, deInit es una función desconocida, deinit es un punto de entrada estándar en la desinicialización (como OnDeinit)
¿Y no importa que en deinit la puesta a cero tenga lugar cuando el terminal está cerrado?
¿A quién le importa? Cuando se cierra el terminal, estos búferes ya no son necesarios, porque se liberarán inmediatamente cuando se descargue el programa, lo que ocurre inmediatamente después de OnDeinit
Pruebe a cambiar sólo el marco temporal. OnDeinit funcionará, los buffers permanecerán (porque la descarga del programa no ocurre en este caso), pero nadie garantiza su contenido de la "vida pasada"
¡Lea por fin la documentación! https://docs.mql4.com/ru/runtime/running y https://docs.mql4.com/ru/runtime/event_fire#deinit
¿A quién le importa? Cuando se cierra la terminal, estos búferes ya no son necesarios, porque serán liberados inmediatamente cuando se descargue el programa, lo que ocurre inmediatamente después de OnDeinit
Pruebe a cambiar sólo el marco temporal. OnDeinit funcionará, los buffers permanecerán (ya que la descarga del programa no ocurre en este caso), pero nadie garantiza su contenido de la "vida pasada"
¡Lea por fin la documentación! https://docs.mql4.com/ru/runtime/running y https://docs.mql4.com/ru/runtime/event_fire#deinit
Entonces, en mi caso, ¿los búferes se bifurcan cuando se reabre el gráfico?
No tiene bifurcación de búferes.
Así es como se llena el búfer uno mismo. La primera vez, cuando se dibuja; la segunda, cuando se obtiene una porción de datos. Ambas veces se opera con el mismo valor de Time[0].
No está teniendo una división del buffer.
Así es como se llena el búfer uno mismo. La primera vez en el momento de la representación y la segunda en la llegada de los datos. Ambas veces se opera con el mismo valor de Time[0].
BIEN.
Por favor, corrige la ayuda en inglés y ya está.
También la ayuda en inglés dice queArrayInitialize no devuelve nada.