Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1483

 
Alexey Viktorov:

Observe la conversión de la hora y el precio a coordenadas XY en píxeles

Lee el precio de la línea, lo convierte en píxeles y asigna las coordenadasal objeto "Marca de texto" en el eje Y, mientras que la coordenada X permanece inalterada.

Llevo mucho tiempo mirando esta función, pero no sabía cómo hacerlo porque no tengo suficiente experiencia. Gracias, intentaré integrarlo en el código.

 
Aleksei Stepanenko:

Indicador de línea y texto Ver 1

El indicador mueve el texto siguiendo la línea. Introduzca el nombre de la línea en el parámetro de entrada.

Gracias. Esta es también una disposición interesante. Definitivamente lo sacaré, tan pronto como resuelva ChartTimePriceToXY().

 

¿Puede decirme qué puede estar mal?

   for(int i=rates_total-prev_calculated-2;i>=0;i--)
     {
      ADRBuffer1[i]=High[i];
      if(High[i]<ADRBuffer1[i+1])
      ADRBuffer1[i]=ADRBuffer1[i+1];
      ADRBuffer2[i]=Low[i];
      if(Low[i]>ADRBuffer2[i+1])
      ADRBuffer2[i]=ADRBuffer2[i+1];
     }

Low dibuja pero High no quiere...

 
MakarFX:

¿Puede decirme qué puede estar mal?

Low dibuja pero High no quiere...

¿A qué equivale ADRBuffer1[i+1] en la primera ejecución? Probablemente hay más basura que High[i]

 
Alexey Viktorov:

¿A qué equivale ADRBuffer1[i+1] en la primera ejecución? Probablemente hay más basura que High[i].

Por favor, díganme cómo solucionarlo y por qué Low dibuja bien?

Todos los códigos

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDimGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrCrimson
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrTeal
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- indicator buffers
double   ADRBuffer0[];
double   ADRBuffer1[];
double   ADRBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(Digits);
//--- indicator buffers mapping
   SetIndexBuffer(0,ADRBuffer0,INDICATOR_DATA);
   SetIndexBuffer(1,ADRBuffer1,INDICATOR_DATA);
   SetIndexBuffer(2,ADRBuffer2,INDICATOR_DATA);
   SetIndexLabel(0,"ADR");
   SetIndexLabel(1,"ADR1");
   SetIndexLabel(2,"ADR2");
//---
   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[])
  {
//---
   if((rates_total-prev_calculated-2)<=0)return(0);
   for(int i=rates_total-prev_calculated-2;i>=0;i--)
     {
      ADRBuffer1[i]=High[i];
      if(High[i]<ADRBuffer1[i+1])
      ADRBuffer1[i]=ADRBuffer1[i+1];
      ADRBuffer2[i]=Low[i];
      if(Low[i]>ADRBuffer2[i+1])
      ADRBuffer2[i]=ADRBuffer2[i+1];
     }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
MakarFX:

¿Pueden decirme cómo se arregla y por qué Low dibuja normalmente?

Todo el código

El número de construcciones debe declararse necesariamente. Y prueba a escribir la inicialización del buffer con cero, siempre que prev_calculate == 0;

 
Alexey Viktorov:

Es obligatorio declarar el número de construcciones.

No me queda claro, por desgracia, qué significa esto.

Alexey Viktorov:

Y prueba a escribir la inicialización del buffer con cero, siempre que prev_calculate == 0;

No ayudó(

 
MakarFX:

Lamentablemente no entiendo lo que significa.

No sirvió de nada(


if( prev_calculated == 0 ) {
   ADRBuffer1[rates_total-1] = High[rates_total-1];
   ADRBuffer2[rates_total-1] = Low[rates_total-1]
}

for(int i=rates_total-prev_calculated-2;i>=0;i--)
{
...
}
 
MakarFX:

Lamentablemente no entiendo lo que significa.

No sirvió de nada(

#property indicator_plots   3

El valor por defecto es 1. Y si anunciar el número de construcciones no sirve de nada, pasa a la opción B.

 
PapaYozh:


Gracias, me ayudó... no lo hice bien))