![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
No estoy seguro, pero probablemente sea por esto:
No tengo ArrayResize, para INDICATOR_DATA e INDICATOR_CALCULATIONS el tamaño lo fija el terminal, y dibuja desde la barra 0
Entonces resulta que todo ArrayInitialize(array,EMPTY_VALUE); no funciona ni siquiera para barra cero?
No tengo ArrayResize, el terminal establece el tamaño para INDICATOR_DATA e INDICATOR_CALCULATIONS y lo dibuja desde la barra 0
Tal vez no, pero los arrays son dinámicos y cada marco temporal tiene un número diferente de barras. Al cambiar de uno a otro cambia el tamaño de los arrays (esto se hace sin tu participación) y ves la basura.
Entonces resulta que todo ArrayInitialize(array,EMPTY_VALUE); no funciona ni siquiera para barra cero?
En tu caso, es el último elemento del array (aunque esté en la barra 0), porque la indexación por defecto es de izquierda a derecha.
Es posible que no, pero las matrices son dinámicas y cada marco temporal tiene un número diferente de barras. Al cambiar de una a otra, se cambian los tamaños de las matrices (esto se hace sin tu participación) y se ve basura.
Parece lógico. Entonces la inicialización de los buffers de los indicadores en el inite no tiene ningún sentido, todo debería hacerse en OnCalculate
En tu caso, es el último elemento del array (aunque esté en la barra 0), porque por defecto se indexa de izquierda a derecha.
Cierto, aún no lo he volteado.
He corregido un error, he volteado arrays, he jugado con ArrayInitialize (lo he dejado por ahora)...
Parece que es imposible deshacerse de la basura en Inite. Incluso PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,countBars); no lo detendrá; puede aparecer al principio del gráfico o al final.
Lo dejaré en un tráiler, tal vez los desarrolladores lo miren.
PS pero la aparición de basura en el mismo lugar en el gráfico después de la eliminación del indicador y / o recompilación - es una lata.
una belleza...
He corregido un error, he volteado arrays, he jugado con ArrayInitialize (lo he dejado por ahora)...
Parece que es imposible deshacerse de la basura en Inite. Incluso PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,countBars); no lo detendrá; puede aparecer al principio del gráfico o al final.
Lo dejaré en un tráiler, tal vez los desarrolladores lo miren.
PS pero la aparición de basura en el mismo lugar en el gráfico después de la eliminación del indicador y / o recompilación - es una lata.
Qué belleza...
Ahí lo tienes, parece que funciona como necesitas:
Ahí lo tienes, parece que funciona como quieres:
No, también es basura, se puede saber por los números de la esquina superior izquierda.
Sólo funciona después de cargar estas celdas en OnCalculate
Su versión parece ser correcta. La basura es causada por el auto-rendimiento de las matrices. Y parece incluso claro por qué se repite.
Si el terminal cambia el tamaño, por ejemplo, de 1 000 a 10 000, asigna un mismo trozo de memoria sin limpiar, y no importa cuántas veces recargue el indicador: desde la celda 1 001 hasta la 9 999 permanece con valores de extremo izquierdo.
upd Todavía tengo una pregunta: por qué al cambiar algo en la función f_comment (cambió el color) y los cambios de compilación posteriores no se aplican a reiniciar el indicador en el terminal.
¿Es posible construir un gráfico de velas de los parámetros de algún instrumento en una ventana separada? Por ejemplo, el broker "Otkritie" tiene el instrumento RTS-9.13 y para ello construye un gráfico de órdenes de compra, cuyos valores se muestran en la ventana "visión general del mercado