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

 
prom18:

Tal vez haya ejemplos. Visualmente sería más fácil de entender. Gracias.

Si he entendido bien que necesita barras en un determinado intervalo de tiempo, puede seleccionarlas con iTime
 
prom18:

Hola. Estoy leyendo un libro de texto. Hay algunos ejemplos de cómo escribir indicadores. Tengo una pregunta sobre el indicador separatewindow.mq4. Allí se puede establecer el número de barras calculadas. ¿Y si necesita especificar el cálculo desde el precio de apertura del día (o desde cero) hasta el precio de cierre del día? ¿Cómo debo hacerlo? He intentado buscar una solución, pero no la he encontrado.

Este es el precio de apertura del día en el marco temporal actual

//+------------------------------------------------------------------+
//|                                                      DayOpen.mq4 |
//|                                            Copyright 2018, IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   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;
   static double dayopen=0.0;
   static int lastday=0;
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      dayopen=0.0;
      lastday=0;
     }
   else limit=rates_total-prev_calculated;
   for(i=limit; i>=0; i--)
     {
      if(TimeDay(time[i])!=lastday)
        {
         dayopen=open[i];
         lastday= TimeDay(time[i]);
        }
      Label1Buffer[i]=dayopen;
     }
   return(rates_total);
  }
 

Hola! ¿Es posible encontrar la barra correcta en el historial a la DERECHA de una barra dada por condición? Gracias.

 
Sfinks35:

Hola! ¿Es posible encontrar la barra correcta en el historial a la DERECHA de una barra dada por condición? Gracias.

Sí, podemos.

 
Artyom Trishkin:

Puedes hacerlo.

¿Cómo se hace? Por favor, dígame.
 
Sfinks35:
¿Cómo se hace? ¿Puede hablarme de ello, por favor?

¿Cómo se encuentra un bar determinado?

 
Artyom Trishkin:

¿Cómo se encuentra un bar determinado?


Me llevó mucho tiempo, pero escribí una función como ésta:

double GetPatt5barsDN()
{
double low3 = 0;
int índice = 0;
for(int i=1; i<20; i++)
{
si
((Close[i] > Open[i]) &&
(Close[i+1] > Open[i+1]) &&
(Close[i+2] > Open[i+2]) && //Low[i+2] es necesario en esta vela
(Close[i+3] < Open[i+3]) &&
(Close[i+4] < Open[i+4])

low3 = Low[i+2];
índice = i+2;
}

return(low3);
}

 
Igor Makanu:

aquí está el precio de apertura del día en la TF actual

Gracias, Igor. Pero no lo he formulado correctamente. El indicador se calcula y se dibuja para un número determinado de barras (50 en este caso) y en la ventana separada. No necesita el precio de apertura sino la primera barra del día para indicar la MA. Pero de todos modos, gracias.

 
Igor Makanu:

aquí está el precio de apertura del día en la TF actual

¿Puede decirme qué está escrito en

int i,limit=prev_calculado==0 ? rates_total-1 : rates_total-prev_calculated;

"==" , "?" , ": "

?

 
Sfinks35:


Me llevó mucho tiempo, pero escribí una función como ésta:

Devuelve también el índice en el parámetro de la función pasado por el enlace