Librerías: MultiTester - página 16

 

La forma más conveniente para descargar el historial de garrapatas (ejecutar el Asesor Experto en la Terminal).

#property description "Descargas a través de Tester".

sinput datetime inFromDate = D'2019.01.01'; // A partir de qué fecha cargar ticks
sinput bool inAllSymbols = false;           // Por todos los caracteres (true) o por el carácter actual (false)

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/es/code/26132

string PrevTesterSettings = NULL;

string GetMyName( void )
{
  return(StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Experts\\")));
}

bool RunMe( const datetime FromDate, const bool AllSymbols = false )
{
  const string Str = "[Tester]" +
                     "\nExpert=" + GetMyName() +
                     "\nSymbol=" + _Symbol +
                     "\nOptimization=" + (AllSymbols ? "3" : "0") +
                     "\nModel=4" +
                     "\nFromDate=" + TimeToString(FromDate, TIME_DATE) +
                     "\nToDate=" + TimeToString(TimeCurrent(), TIME_DATE) +
                     "\nForwardMode=0" +
                     "\nProfitInPips=1" +
                     "\nOptimizationCriterion=0" +
                     "\nVisual=0";
                     
  return(MTTESTER::SetSettings2(Str) && MTTESTER::ClickStart());
}

int OnInit()
{
  bool Res = !MQLInfoInteger(MQL_TESTER) && EventSetTimer(1);

  if (Res = Res && MTTESTER::GetSettings(PrevTesterSettings))
    if (!(Res = RunMe(inFromDate, inAllSymbols)))
      MTTESTER::SetSettings2(PrevTesterSettings);

  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnTimer()
{
  if (MTTESTER::IsReady())
  {
    MTTESTER::SetSettings2(PrevTesterSettings);
    
    if (inAllSymbols)
      MTTESTER::CloseNotChart();

    ExpertRemove();
  }
}


Después de eso, puede ejecutar scripts que trabajan con garrapatas en la Terminal y no esperar mucho tiempo sin señales de vida.

 
Stanislav Korotky:

Usted puede deshacerse de la necesidad de escribir su propio controlador MQL5 para las llamadas TesterSettings. Add apoyando el formato de texto de los ajustes de paso del probador (como símbolos, plazos y otras cosas que se pueden pasar a TesterSettings.Add en cada línea). A continuación, hacer un Asesor Experto-controlador universal (añadir a la biblioteca), que toma como entrada un único parámetro - un archivo con la configuración e implementa SetTesterSettings en su base, entonces el usuario no necesita programar nada.

Al final, hice esto. Formamos un lote de tareas a partir de archivos ini y lo enviamos para su ejecución.

Pero a menudo hay tareas cuando es necesario formar una tarea sobre la base de los resultados de las anteriores. Por lo tanto, la variante ini no siempre es adecuada.


ZY La implementación está aquí.

 
Para aquellos que practican la automatización del Comprobador, recomiendo mirar los siguientes ajustes
MQL5\Profiles\Tester\Groups\*.txt
MQL5\Profiles\Tester\Symbols\*.txt
 
fxsaber:

La forma más cómoda de descargar el historial de ticks (ejecutar EA en Terminal).

Después de eso, puede ejecutar scripts que trabajan con garrapatas en la Terminal y no esperar mucho tiempo sin señales de vida.

Esto resulta útil para crear símbolos personalizados a partir del historial de ticks de los símbolos reales. Los personalizados se diferenciarán de los originales en que tendrán correspondencia completa de ticks y barras. Así, no habrá resultados erróneos del Probador(ejemplo).

 
Por desgracia, sigue sin permitir acceder a los datos de ticks de varios años atrás desde el terminal, incluso cuando el historial de ticks se descarga en el probador. Primero tengo que descargar los ticks del probador en un archivo y luego cargarlos en un símbolo personalizado a través del terminal. Aquí hay un ejemplo de un Asesor Experto que debe ejecutarse primero en el probador en modo de ticks reales para recopilarlos, y luego en la terminal para cargarlos en un símbolo personalizado.
Archivos adjuntos:
 
Evgenii Kuznetsov:
Por desgracia, sigue sin permitir acceder a los datos de ticks de varios años atrás desde el terminal, incluso cuando el historial de ticks se descarga en el probador. Primero tengo que descargar los ticks del probador en un archivo y luego cargarlos en un símbolo personalizado a través del terminal. Aquí hay un ejemplo de un Asesor Experto que debe ser ejecutado primero en el probador en el modo de ticks reales para recogerlos, y luego en la terminal para cargarlos en un símbolo personalizado.

Su esquema se puede implementar ejecutando el Asesor Experto en el Terminal, en el que se utilizará MTTester.mqh.


No me he enfrentado a la tarea de crear un símbolo personalizado de garrapatas en muchos años. Durante un año - lo hizo y no sin problemas Terminal toma garrapatas. Tal vez usted no solicita en porciones y sólo se quejan de la falta de memoria cuando se solicita un intervalo grande.

 
En caso de escasez de memoria CopyTicksRange daría -1 y en consecuencia se podría averiguar el error a través de GetLastError(), pero en mi caso sólo dio 0. Bueno, las peticiones eran intervalos de un mes.
 
Evgenii Kuznetsov:
En caso de escasez de memoria CopyTicksRange daría -1 y en consecuencia se podría averiguar el error a través de GetLastError(), pero en mi caso sólo dio 0. Bueno, las peticiones eran intervalos de un mes.

Si hay datos para reproducir, los desarrolladores podrán mirarlo y corregirlo.

 

Basta con ejecutar cualquier Asesor Experto en el probador en modo ticks reales desde 2013.

A continuación, ejecute el script en el terminal:

void OnStart(){
   MqlTick Ticks[];
   Print("!!! ",CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, (ulong)D'2013.01.01' * 1000, (ulong)D'2013.02.01' * 1000));
}
 
Evgenii Kuznetsov:

Sí sólo tiene que ejecutar cualquier EA en el probador en el modo de garrapatas reales desde 2013.

A continuación, ejecute el script en el terminal:

2020.02.12 16:35:03.435 Test6 (USDSEK,M1)       !!! 2370228