Preguntas para principiantes en MQL5. Los profesionales no pasan de largo. - página 5

 

¿Cómo puedo hacer que algunos topes del indicador no se dibujen en el gráfico, sino que muestren sus valores en la" ventana dedatos" del indicador?

Lo hago:

#property indicator_label1  "Buff"
#property indicator_type1   DRAW_NONE

int OnInit ()
{
  PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE);
}


pero el indicador sigue dibujando un buffer.

 
_o0O:

¿Cómo puedo hacer que algunos topes del indicador no se dibujen en el gráfico, sino que muestren sus valores en la" ventana dedatos" del indicador?

Lo hago:


pero el indicador sigue dibujando un buffer.

Lo tengo, hace esto:

#property indicator_label1  "Buff"
#property indicator_type1   DRAW_NONE

no necesita hacer esto.

Y curiosamente, este buffer debe ser especificado en la #propiedad indicator_plots... Aunque lógicamente no debería, porque está especificado en la #propiedad indicator_buffers y no necesita dibujarse.


SIN EMBARGO, el nombre del buffer en la ventana de datos no aparece correctamente ahora.... especificándolo con PlotIndexSetString(0, PLOT_LABEL, "Buff") no ayuda... En fin, ayuda por favor.

 

Buenas tardes.

Estoy dando mis primeros pasos en mql5. He generado un EA basado en los indicadores RSI M5 y RSI M15. ¿Pueden aconsejarme cómo hacer que se ejecute una operación mediante la activación de ambas señales al mismo tiempo? El peso para ambos es 1. Si establezco 0,5 entonces no se ejecutará ninguna operación. Parámetro Valor del umbral de la señal para abrir = 90.

 
_o0O:

resulta que eso es todo:

no necesitan hacer.

Curiosamente, este búfer debería especificarse en la #propiedad indicator_plots... Pero lógicamente no debería, porque se especifica en la #propiedad indicator_buffers y el dibujo no es necesario.


SIN EMBARGO, el nombre del buffer en la ventana de datos no aparece correctamente ahora.... especificándolo con PlotIndexSetString(0, PLOT_LABEL, "Buff") no ayuda... En fin, ayuda por favor.

¿Ayuda? ¿Qué tipo de ayuda...?

Bueno, todo lo que tienes que hacer es especificar

#property indicator_label1  "Buff"

y todo, el buffer será nombrado en la ventana de datos, mostrará los valores y respectivamente permitirá obtener estos valores del EA, y al mismo tiempo no dibujar los valores (muy conveniente para almacenar información adicional y no desordenar el gráfico con líneas de buffer).

 
_o0O:

resulta que eso es todo:

no necesitan hacer.

Curiosamente, este búfer debería especificarse en la #propiedad indicator_plots... Aunque lógicamente no debería, porque se especifica en la #propiedad indicator_buffers y no es necesario que se dibuje.


SZY pero ahora se muestra el nombre incorrecto del buffer en la ventana de datos, especificar el nombre con PlotIndexSetString(0, PLOT_LABEL, "Buff") no ayuda... En fin, ayuda por favor.

Se debe utilizar el color clr_NONE en lugar del tipo DRAV_NONE.

Este es el código de prueba

#property indicator_separate_window

#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_width1  2
#property indicator_label1  "clrRed"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrNONE
#property indicator_width2  2
#property indicator_label2  "clrNONE"

/****************indicator buffers****************/
double buf1[], buf2[];
/**************Custom indicator initialization function**************/
int OnInit()
{
    SetIndexBuffer(0, buf1, INDICATOR_DATA);
    SetIndexBuffer(1, buf2, INDICATOR_DATA);
   return(INIT_SUCCEEDED);
}/*******************************************************************/

/****************Custom indicator iteration function*****************/
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
 int i, limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!
 for(i = 0; i < limit; i++)
  {
   if(i%2 > 0)
    buf1[i] = 1;
   else
    buf2[i] = 1;
  }
 
   return(rates_total);
}/*******************************************************************/
 
Alexey Viktorov:

No es necesario poner el tipo DRAV_NONE, sino el color clr_NONE.

Este es el código de prueba

todo esto es innecesario, sólo hay que especificar la etiqueta

#property indicator_label1  "Buff"
 
_o0O:

todo es superfluo, sólo hay que especificar la etiqueta

Si eres tan inteligente, ¿por qué has hecho la pregunta?

 
Alexey Viktorov:

Si eres tan inteligente, ¿por qué has hecho la pregunta?

el inteligente no es el que no hace preguntas....

Cualquier forista puede llegar a las respuestas a sus preguntas, pero ¿para qué demonios sirve este foro si no es para encontrar respuestas lo más rápido posible?

Mi forma es más sencilla y concisa, utilízala.

ZS Deja de "pinchar" a los desconocidos, listo.

 
_o0O:

el inteligente no es el que no hace preguntas....

Cualquier forista puede llegar a las respuestas a sus preguntas, pero ¿para qué demonios sirve este foro si no es para encontrar respuestas lo más rápido posible?

Mi forma es más sencilla y sucinta, utilízala.

Estás muy equivocado. Lejos, muy lejos de eso.

 
Alexey Viktorov:

Oh, estás muy equivocado. Lejos, muy lejos de eso.

Más aún, no cualquiera, de ahí que cualquier pregunta sea bienvenida.

La ayuda no tiene ese matiz. DRAW_NONE no funciona ni en #property ni en PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE), PlotIndexSetString(0, PLOT_LABEL, "Buff") tampoco funciona, así que ¿cuál es exactamente la lógica detrás de especificar clrNONE para lograr el objetivo?