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

 
Alexey Viktorov:
¿Dónde está escrito que no puede haber una subcarga de historia junto con la nueva barra?

¿Dónde está escrito que se debe seguir el historial?
Mientras se está cargando, los cálculos del indicador pueden ser ignorados - porque no hay un historial completo (las barras pueden aparecer en cualquier lugar).
De ahí la conclusión: sólo después de que se hayan construido todos los bares puede haber un nuevo bar.
Por lo demás, todos los bares son "viejos".

 
m-r LSV:

No ayudó :(

mostrar el código.

 
Taras Slobodyanik:

necesitas ver lo que has construido.

¡¡Taras!! ¡¡El hombre está preguntando por MQL5!! Y MT5 se indexa de izquierda a derecha... Resulta que no debe contar 1 barra, sino rates_total-2

 
Taras Slobodyanik:

¿Dónde está escrito que hay que controlar la carga del historial?
Mientras se carga, se puede prescindir de los cálculos de los indicadores, ya que no hay un historial completo.
De ahí la conclusión: sólo después de que se hayan construido todos los bares puede haber un nuevo bar.
Por lo demás, todos los bares son "viejos".

Por favor, aconseja cómo hacerlo con el historial.
La cosa es que está previsto, para comprobar algo en la historia por supuesto.
Tengo algunas observaciones y me gustaría utilizar topes para las flechas.

Pero eso vendrá después.

 
Taras Slobodyanik:

mostrar el código.

//+------------------------------------------------------------------+
//|                                                    test.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

#property indicator_buffers 2
#property indicator_plots   2

#property indicator_label1  "Signal UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

#property indicator_label2  "Signal DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2

double up[];
double dn[];

datetime fin=0, last=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
    IndicatorSetString(INDICATOR_SHORTNAME, "Prototype");
    
   SetIndexBuffer(0,up,INDICATOR_DATA);
   PlotIndexSetInteger(0,PLOT_ARROW,233);
    
   SetIndexBuffer(1,dn,INDICATOR_DATA);
   PlotIndexSetInteger(1,PLOT_ARROW,234);
   
   
  
   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[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
      {
      //Print("Новый бар");
      if(open[1] > close[1])
           {
           Print("Dn");
           }
      else if(open[1] < close[1])
           {
           Print("Up");
           }
      }

return(rates_total);
}
 
Alexey Viktorov:

¡¡Taras!! ¡¡El hombre está preguntando por MQL5!! En MT5, la indexación es de izquierda a derecha... Resulta que hay que contar rates_total-2, y no 1 barra.

No, no, prev_calculado y rates_total no dependen de ello.

 
Taras Slobodyanik:

no-no, prev_calculated y rates_total no dependen de esto

¿Cuál es la relación de prev_calculado y rates_total con el hecho de que se proponga leer la apertura y el cierre de la primera barra de la izquierda?

 
Alexey Viktorov:

¿Cuál es la relación de prev_calculado y rates_total con el hecho de que se proponga leer la apertura y el cierre de la primera barra de la izquierda?

no estoy sugiriendo que se lea la barra de cierre a la izquierda, este no es mi código)

Sólo la mía

if(rates_total - prev_calculated == 1)
 
m-r LSV:

No ayudó :(

Sí, tienes que cambiar la dirección de las matrices o tomar el índice rates_total-2 en lugar de 1

{
   
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);
   ArraySetAsSeries(time,true);
   
   if(rates_total - prev_calculated > 1)
      {
      Print("Загрузка истории");
      return(rates_total);
      }
   
   if(rates_total - prev_calculated == 1)
      {
      //Print("Новый бар");
      if(open[1] > close[1])
           {
           Print("Dn");
           }
      else if(open[1] < close[1])
           {
           Print("Up");
           }
      }

return(rates_total);
}


 
Taras Slobodyanik:

No estoy sugiriendo que se lea el cierre de la barra a la izquierda, ese no es mi código)

Es sólo mío.

Es indecoroso mentir tan descaradamente. Borras tu post y le echas la culpa de tu analfabetismo a otro. Mentiroso.