Bibliotecas: CheckHistory - Función para cargar y comprobar el historial

 

CheckHistory - Función para cargar y comprobar el historial:

Versión ligeramente modificada de la función de carga del historial de MetaQuotes.

Autor: Andrey Khatimlianskii

 

Me he dado cuenta de tal función...

Si necesita eliminar los datos de búfer de algún indicador para un símbolo, que no está seleccionado en el "Market Watch" y para el que no se llena la historia, es necesario atornillar algo como esto en la función:

.....
   uint start=GetTickCount();
   // mis líneas [inicio]
   long m=SymbolInfoInteger(symbol,SYMBOL_SELECT);
   if(m<1)
     {
      bool is_selected=SymbolSelect(symbol,true);
      Sleep(500);
     }
   // mis líneas [fin]
   if(CheckTerminalHistory(symbol,period,size) || CheckServerHistory(symbol,period,size))
     {
      if(print_info)
        {
   
.....
 
Estoy haciendo algo mal, no puedo averiguar qué. Gráfico (tester) - H1. Necesito cargar barras - H4 en la cantidad de 3000 piezas (BarsToAnalyse=3000). No carga... Cadena de función:
if ( first && !CheckLoadHistory( _Symbol,PERIOD_H4, BarsToAnalyze ) )
 
Forex_Noob:
Estoy haciendo algo mal, no puedo averiguar qué. Gráfico (tester) - H1. Necesito cargar barras - H4 en la cantidad de 3000 piezas (BarsToAnalyse=3000). No se carga... Línea con la función:

¿Qué escribe en el registro? ¿Qué ocurre? ¿Se queda colgado?

Si lo ejecutas en un gráfico normal, ¿se carga? ¿Hay algún historial en el servidor del broker?

 

Entiendo que la carga se realiza mediante SeriesInfoInteger con el parámetro SERIES_SYNCHRONIZED ?

Esto es algo interesante que debería comprobar... porque estoy trasteando con estas cotizaciones históricas.... Abro un gráfico y simulo Home hasta que se para la carga de barras. Me pregunto - ¿cuál será la diferencia entre estos métodos....

 
elugovoy:

Entiendo que la carga se realiza mediante SeriesInfoInteger con el parámetro SERIES_SYNCHRONIZED ?

Esto es algo interesante que debería comprobar... porque estoy trasteando con estas cotizaciones históricas.... Abro un gráfico y simulo Home hasta que se para la carga de barras. Me pregunto - ¿cuál será la diferencia entre estos métodos....

No debería haber diferencia, la función carga y recalcula todo el histórico necesario normalmente.
 

Lo único que funciona a finales de 2018. ¡+5 y Gracias !

Alguna idea para mejorar ?

 
Vladimir Pastushak:

Lo único que funciona a finales de 2018. +5 y ¡Gracias!

¿Alguna idea para mejorar?

Vladimir, no hables con acertijos

 
Andrey Khatimlianskii:

Vladimir, no hables con acertijos.

Yo estaba en un apuro, y su código también se cuelga en los símbolos con la historia problemática....

He probado un montón de códigos para cargar la historia, todos se cuelga en algunos tsfd.

También lo hace tu código.

 
Vladimir Pastushak:

Tenía prisa, y tu código también se cuelga en personajes con historia problemática.

He probado un montón de códigos para cargar la historia, todos se cuelgan en algunos tsfd.

Tu código es el mismo.

Hubo una discusión de que incluso iBars se congela bajo ciertas condiciones.

No tengo ganas de investigarlo ahora.

 

Hola,


Tengo dos preguntas sobre su código.

Dentro de la función

CheckServerHistory()

CheckServerHistory(...)
{
        ...
        if(first_server_date>TimeCurrent()-size*PeriodSeconds(period)) return(false);
        ...
}

¿funcionará realmente, ya que la diferencia horaria y el cómputo de periodos es diferente al tener en cuenta los cierres de mercado?


En la función

CheckLoadHistory()

CheckLoadHistory(...)
{
        if(CheckTerminalHistory(symbol,period,size) || CheckServerHistory(symbol,period,size))
        { ... }
}


Aquí la ejecución primero comprueba los datos del terminal y después comprueba los datos del servidor.

¿Tiene sentido hacerlo al revés?