Se ha publicado el nuevo artículo Múltiples indicadores en un gráfico (Parte 04): Comenzando con EA:
El autor: Daniel José
Hola Daniel, estoy siguiendo tus artículos, pero ¿qué pasa con la parte 03?
Hubo un pequeño problema en el momento que se solicitó la liberación para la publicación, pero ya se autorizó la publicación de la Parte 03, pronto estará disponible también, este problema fue causado más por la cantidad de artículos que ya envío ... actualmente tengo otros 15 artículos para que los analicen, todos involucrados en el desarrollo de este EA y en cada uno la cosa se va haciendo más compleja .... pero gracias por estar siguiendo la serie... esperen grandes noticias del artículo 05, a partir de ahí la cosa valdrá realmente la pena, porque se convertirá en algo grande la gente, estos primeros son solo para presentar lo que vendrá por delante...😁👍
Hola Daniel,
Estoy teniendo problemas con los indicadores multicolor y tus artículos, que me están gustando, me indican que quizás conozcas su solución.
Quiero producir una función que establezca todos los atributos del indicador sin utilizar las opciones #property,por ejemplo #property indicador_color1 clrCrimson,clrWhite,clrLime
Lo que estoy encontrando en el programa de prueba a continuación es que con el #property indicator_color1 clrCrimson,clrWhite,clrLime incluido, el programa funciona correctamente mientras que si lo comento, entonces el programa no funciona correctamente.En este caso parece que está trazando sólo algunos de los puntos de datos como si estuviera utilizando un marco de tiempo "superior" o saltándose varios puntos de datos. Sospecho que la directiva property color está estableciendo más atributos que no he identificado cuando se especifican varios colores.
El segundo problema es que, obviamente, no entiendo los detalles y requisitos de la utilización de gráficos multicolor. He buscado en la documentación y no he encontrado ningún artículo que proporcione una visión general de cómo utilizar indicadores multicolor. Mientras que el primer gráfico cambia de color correctamente, el segundo, que traza los mínimos, no cambia de color de acuerdo con mi llamada a la función. Este gráfico requiere las tres propiedades: type2, color2, & width2, para funcionar correctamente. También estoy perplejo por qué las declaraciones de propiedades utilizan 2 en lugar de 3. Utilicé el indicador Laguerre Adaptive Filter de Mladen para identificar que los indicadores de propiedades utilizan el número de gráfico,2, no el número de indicador 3 para mostrarse correctamente.
Cualquier sugerencia, referencia o ayuda será muy apreciada
Saludos, CapeCoddah
Cualquier sugerencia, referencia o ayuda será muy apreciada.
Atentamente, CapeCoddah
Usted está un poco confundido, puedo entender ... pero toda la confusión está en el hecho de que usted no está realmente mirando los detalles en su código. Voy a tratar de explicar algunos de los detalles que están en el comentario, entonces voy a hablar un poco acerca de su code....
El primer punto es que incluso puedes producir un indicador multicolor sin usar #property indicator_colorN pero para el usuario e incluso para ti es más práctico, seguro y sencillo de entender y modificar el código, porque lo único que tienes que hacer es ir a las propiedades es modificar los colores ahí presentes, y para el usuario es más sencillo porque solo tendrá que elegir el color a modificar y hacer el cambio, esto en la ventana estándar que MT5 crea para los indicadores. De alguna manera ya estas haciendo lo correcto al usar el comando PlotIndexSetInteger para generar los cambios de color, y esto es así cuando no usamos #property indicator_colorN, pero cuando usamos las propiedades muchas veces no tiene sentido usar el comando PlotIndexSetInteger para establecer otros colores, esto se debe a que la cosa puede ser más complicada de mantener y más confusa para el usuario, ya que puede no entender realmente lo que el estándar de color está tratando de decir, incluso si el código es tuyo y serás el único en utilizar el indicador, no tiene mucho sentido, a menos que en casos raros crees un patrón de color dinámico.
Ahora sobre el segundo punto: El problema en este caso es que estas confundiendo el numero de cosas que trazara el indicador ( 2 para 2 lineas ) con las propiedades del objeto ( en este caso linea ) y para que la linea sea trazada, en realidad necesitas declarar al menos 3 datos, que son TipoN, ColorN, AnchoN, donde la N indica el numero del objeto, con la practica y el tiempo terminaras entendiendo estas pequeñas diferencias entre la propiedad del indicador y las propiedades de los objetos que utiliza.... No te rindas... sigue estudiando y pronto las cosas se verán más claras.... 😁👍
Ahora veamos algo de tu código.... No voy a mostrarte exactamente cómo arreglarlo (si lo hago no será divertido... .... 😁👍✌ ) quiero que prestes atención al siguiente hecho, y esto es importante:
Buf=Set_IndexBuffer5(Buf, dataHi, INDICATOR_DATA , DRAW_COLOR_LINE , 4 , "High" , clrYellow , clrWhite , clrDodgerBlue ); Buf=Set_IndexBuffer5(Buf, dataHic, INDICATOR_COLOR_INDEX ); Buf=Set_IndexBuffer5(Buf, dataLo, INDICATOR_DATA , DRAW_COLOR_LINE , 4 , "Low" , clrYellow , clrWhite , clrDodgerBlue ); Buf=Set_IndexBuffer5(Buf, dataLoc, INDICATOR_COLOR_INDEX );
Fíjate que he marcado dos cosas en tu código... ahora vamos a ver qué pasa cuando se reproduce en la gráfica....
Observa que solo una de las etiquetas esta como la declaraste en el codigo, solo la HIGH .... y la LOW ?!?!! ¿¡¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿???????!!!!!!!!!!!!!!!!!!!!!, este es el primer punto que debes corregir, porque el hecho de que no se este mostrando la etiqueta LOW indica que el patrón de color que se esta utilizando es el que esta declarado en #property indicator_color2, es decir, tienes un fallo en este punto, si intentas eliminar las propiedades del indicador 2 que realmente crean la linea LOW, aun manteniendo el resto del codigo, la linea HIGH se graficara, pero la linea LOW no....¿por qué? porque en realidad no está definiendo la información necesaria para trazar la línea BAJA, esto dinámicamente a través del uso de la llamada PlotIndexSetInteger... parece extraño ... pero esto es lo que está sucediendo ....
Cuando consigas arreglar esto, si realmente quieres usar la forma dinámica de declarar los datos del objeto fila usando PlotIndexSetInteger, podrás eliminar los comandos de compilación #property indicator_color de la escena, ya que los datos necesarios se establecerán dinámicamente, pero si no quieres hacer tal esfuerzo, está bien....
Ahora quiero que mires la imagen de arriba y la compares con los colores que estás usando en #property indicator_color... observa estos colores con mucho cuidado .... si haces esto notarás algo raro ahí .... de nuevo no te diré que no pierdas la gracia, pero intenta usar colores diferentes, sin repetir ninguno... cuando los repites se hace más difícil entender dónde está el error.... 😁👍
Ahora un último detalle: El hecho de que creas que está trazando sólo unos puntos y saltándose otros puede ser por dos motivos: El patrón de colores no está contrastando con el fondo de la gráfica, intenta usar colores que contrasten con el fondo de la gráfica, y la segunda, pero no creo que sea realmente el caso, es que puede haber un fallo en el evento OnCalcule, estás devolviendo -1 o el valor de i, lo correcto es devolver rates_total, así que cambia esto en el código para evitar problemas futuros....
Hola Daniel,
Estaba confundido. Pensaba que las características de dibujo se definían usando la especificación del buffer como MQ4 mientras que, al menos para las especificaciones DRAW_COLOR... las características de dibujo se definen usando el identificador de trazado secuencial. No he determinado si las especificaciones DRAW_LINE etc también requieren especificaciones de trazado. Además, la propiedad indicator_colorX en realidad tiene dos funciones, primero para contar y establecer el número de colores y luego para establecer cada color especificado en su posición de matriz adecuada.Estoy adjuntando dos archivos, Color Test que ahora está funcionando correctamente aunque, requiere más refinamientos, en segundo lugar MACD Original2_1 de MLADEN ligeramente modificado. El programa de Mladen es interesante ya que había definido dos parcelas, pero sólo utiliza un búfer de índice de color.
Gracias por su ayuda

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Indicadores múltiplos em um gráfico (Parte 04): Iniciando pelo EA:
En artículos anteriores, expliqué cómo crear un indicador con múltiples subventanas, lo que se vuelve interesante cuando usamos un indicador personalizado. Aquí entenderemos cómo añadir múltiples ventanas en un EA.
Cuando decidí crear cosas usando POO (Programación Orientada a Objetos) lo hice por ya saber que hay grandes ventajas en usar dicho enfoque, entre ellas están la seguridad y la herencia, aunque también tenemos el polimorfismo, pero esto lo usaremos más adelante cuando creemos un sistema de órdenes cruzadas, mientras que aquí usaremos una de las cosas buenas que trae la POO, la herencia. Pues bien, nuestra clase C_TemplateChart ya es totalmente funcional, y viendo eso, no queremos tener el trabajo de reprogramar todo de nuevo, o correr el riesgo de añadir código a la clase, y que este código impida que la clase sea utilizada en otro lugar. La solución es utilizar la herencia y así añadir nuevos códigos o características sin cambiar de ninguna manera el código original.
El uso de la herencia nos aporta varios beneficios, entre ellos tenemos: El código ya probado se mantiene probado; la complejidad crece sin un crecimiento igual en la cantidad de código; sólo las nuevas características realmente necesitan ser probadas; lo que no cambia simplemente se hereda asegurando la estabilidad, en resumen, la cosa mejora con un esfuerzo mínimo pero con la máxima seguridad, para entenderlo vamos a ver el esquema de abajo.
Autor: Daniel Jose