Discusión sobre el artículo "Creación de indicadores multicolor en MQL5"

 

Artículo publicado Creación de indicadores multicolor en MQL5:

En este artículo, abordaremos la manera de crear indicadores multicolor o convertir los que ya existen en multicolor. MQL5 permite una representación práctica de los datos. Ya no hace falta ver a una docena de gráficos con indicadores y hacer al análisis del nivel RSI o Estocástico, es mejor colorear las velas de otros colores en función de los valores de los indicadores.

RSI color

Autor: Дмитрий Александрович

 
Bueno y detallado, muchas gracias. Me ha resultado muy útil.
 
¿Entiendo que en mql4 no se puede representar el gradiente en las velas?
 

omg, gracias por esta línea:

El orden de los búferes debe ser especial: en primer lugar, los búferes de datos del indicador, a continuación, los búferes de índice de color.

Pensé que me estaba volviendo un poco loco, tratando de dibujar 2 parcelas de color (He ordenado los búferes y funcionó sin problemas!)

Gracias.

 
Muy buenas, me está resultando muy difícil crear una regla de coloración con Estocástico. ¿Tiene un ejemplo?
 
Los comentarios que no guardan relación con este tema se han trasladado a "Mensajes fuera de tema".
 

¡Buenas tardes!

Me he encontrado con un problema al utilizar variosestilos de dibujo a la vez. Por ejemplo, es necesario dibujar un canal pintado como bolingjder y en medio de ella hay una línea central. He aquí un ejemplo:

SetIndexBuffer(0, Buf1, INDICATOR_DATA);
SetIndexBuffer(1, Buf2, INDICATOR_DATA);

SetIndexBuffer(2, Buf3, INDICATOR_DATA);

PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_FILLING);

PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_LINE);

Con esta construcción, sólo se muestra el canal pintado. Si cambia el orden - primero use la línea del medio y luego el canal pintado, todo está bien. Pero necesitamos este orden, porque es sólo una parte del indicador.

Si utiliza DRAW_LINE en lugar de DRAW_FILLING, todo está bien también - dibuja sólo tres líneas - un canal sin pintar y una línea en el medio.

He probado diferentes combinaciones, secuencias y número de buffers, puntos de dibujo y otras cosas, nada funciona. Es decir, si por ejemplo hay un buffer con el tipo de dibujo DRAW_FILLING, todo lo que hay después de él o no se muestra o se dibuja mal. Estaré agradecido por cualquier ayuda, ya que no creo que era imposible dibujar indicadores complejos de diferentes estilos al mismo tiempo.


 
Ruslan Piraliyev SetIndexBuffer(1, Buf2, INDICATOR_DATA);

SetIndexBuffer(2, Buf3, INDICATOR_DATA);

PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_FILLING);

PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_LINE);

Con esta construcción, sólo se muestra el canal pintado. Si cambia el orden - primero use la línea del medio y luego el canal pintado, todo está bien. Pero necesitamos este orden, porque es sólo una parte del indicador.

Si utiliza DRAW_LINE en lugar de DRAW_FILLING, todo está bien también - dibuja sólo tres líneas - un canal sin pintar y una línea en el medio.

He probado diferentes combinaciones, secuencias y número de buffers, puntos de dibujo y otras cosas, nada funciona. Es decir, si por ejemplo hay un buffer con el tipo de dibujo DRAW_FILLING, todo lo que hay después de él o no se muestra o se dibuja mal. Estaré agradecido por cualquier ayuda, ya que no creo que era imposible dibujar indicadores complejos de diferentes estilos al mismo tiempo.


El índice del buffer no debe coincidir con el índice de construcción. Tienen su propia indicación. Prueba PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);

 
Alexey Viktorov #:

El índice del búfer no debe ser el mismo que el índice de construcción. Tienen su propia indicación. Pruebe PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);

¡¡¡Gracias!!! Lo he conseguido y todo ha encajado a la primera).

No pensaba que tuvieran diferente indexación. Resulta que la vinculación de los buffers al punto de dibujo va como parece.

 
Alexey Viktorov #:

El índice del búfer no debe ser el mismo que el índice de construcción. Tienen su propia indicación. Pruebe PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);

Podrían decirme una cosa más, ¿puedo cambiar el orden de las líneas para que la deseada quede arriba? ¿O es sólo por el orden de declaración de los buffers? Por ejemplo, yo quería que el buffer 0-ésimo correspondiera a la línea principal, y el canal de relleno estuviera al final, pero se superpone a todos). Esto es conveniente porque planeo usar el indicador en el Asesor Experto para recuperar datos convenientemente.

 
Ruslan Piraliyev #:

Podrías decirme una cosa más, ¿se puede cambiar el orden de las líneas para que la necesaria quede arriba? ¿O es sólo por el orden de declaración del buffer? Por ejemplo, yo quería que el buffer 0-ésimo correspondiera a la línea principal, y el canal de relleno estuviera al final, pero se superpone a todos). Esto es conveniente porque planeo usar el indicador en el Asesor Experto para recuperar datos convenientemente.

No entiendo nada. ¿Y qué más da el número del buffer que se tire en el Expert Advisor?