Librerías: MultiTester - página 15

 
Сергей Таболин:

¿Ya se puede comprimir o no? (Es como - ¿y si funciona ))))

Sí, los zips en KB se han arreglado tranquilamente - las actualizaciones llegan allí. Las fechas de los archivos dentro se hacen iguales a la fecha de la actualización. Así que por estas fechas se puede entender inmediatamente a qué hora corresponde el contenido.

 
fxsaber:

Hay que mirar los registros de los probadores.

Reiniciar el terminal + esperar unos 10 minutos ayuda. Incluso aparece una alerta. Usted debe comenzar a probar inmediatamente después de abrir el terminal; ni siquiera hojear las tendencias. Pero con el tiempo todo se puede interrumpir o entrar en bucle. La última vez que tuve un normal 172 pases. Si la situación se repite, enviaré el log. No he notado ninguna desviación de la norma allí antes.
 
Good Beer:
Debes empezar a probar inmediatamente después de abrir el terminal; ni siquiera hojees las tendencias.

Esta no es una situación normal. Lo normal es que todo funcione sin condiciones.

 

MTTester permite comparar la eficacia de diferentes lógicas de negociación.

Por ejemplo, hay TS1 y TS2. Necesitamos entender cuál es mejor (condicionalmente, por supuesto).


Hacemos optimizaciones de cada TS, y luego ejecutamos los mejores pasajes como individuales en diferentes intervalos OOS.

Todo esto puede hacerse automáticamente mediante MTTester.


Comparamos los resultados de OOS y decidimos qué TS es mejor.

 

Acaba de aparecer un registro interesante

2019.12.21 13:38:35.994 Tester  Ready to set
2019.12.21 13:38:36.617 Tester  i=100

en el código.

  static bool ClickStart( const bool Check = true, const int Attempts = 100 )
  {
    bool Res = !Check || MTTESTER::IsReady();

    if (Res)
    {
      static const int ControlID[] = {0xE81E, 0x804E, 0x2712, 0x4196};
      GET_HANDLE

      user32::SendMessageW(Handle, BM_CLICK, 0, 0);

      Res = !Check || !MTTESTER::IsReady();

      int i = 0;
      for (i = 0; (i < Attempts) && (!Res)/* && !::IsStopped() */; i++) // El destructor global puede necesitar
        if (Res = !Check || !MTTESTER::IsReady())
          ::Sleep(100);
      Print("i="+(string)i);
    }

    return(Res);
  }

Print("Ready to set");
MTTESTER::SetSettings2(TesterInput);
MTTESTER::ClickStart();

Idealmente en i = 100 debe dormir durante 10 segundos como mínimo. Cómo hizo eso en un segundo (y esencialmente fue a ejecutar incorrectamente), no lo he averiguado todavía. Pero vale la pena decir que el botón fue presionado, sí. Aparentemente hay un retraso en la indicación del botón. Porque hay una segunda instancia ejecutándose en paralelo en la prueba y está cargando la CPU al 100%.

 

Creo que lo conseguí. Las condiciones estaban desordenadas. Probablemente por eso tuvieron que cambiar el número de intentos a 50 la última vez. Sólo duerme cuando tiene éxito, cuando está a punto de salir de todos modos. Y pasa rápido cuando es un buen momento para dormir. Debe ser un bicho. Y el bicho es triste, evidentemente no apareció en casi un mes, y yo esperaba que los pasajes estuvieran bien. Voy a tener que volver a probar todo. Y me preguntaba por qué rara vez, pero a veces los pasajes no encajan.

Supongo que debe ser

if (!(Res = !Check || !MTTESTER::IsReady()))
 
traveller00:

Al parecer, se supone que es

Sí, el bucle perdía sentido por mi falta de atención. Gracias por investigarlo y señalar claramente la ubicación. Lo volveré a subir si es posible.

 
fxsaber:

Sí, el bucle perdía sentido por mi falta de atención. Gracias por solucionarlo y señalarlo claramente. Lo volveré a subir si es posible.

Actualizado.

 

Mientras esperaba la actualización, descubrí las razones del bucle de la lista de tareas del multitester.

La primera era un gestor de tareas de terceros "proceso lazo" en mi ordenador. Ayuda con el ratón y el teclado inalámbricos, pero no le gusta cuando una aplicación toma todos los núcleos de la CPU. Los procesos del agente de pruebas se interrumpían y se perdían los resultados. Tenías una tarea incompleta, cada vez con un nuevo resultado. Aumentar la prioridad del metatester lo arregló todo.

El segundo problema es que multitester no soporta forward. Si el reenvío no está activado, todo funciona bien. Pero si está activado, la lista de tareas empieza a atascarse. Las pruebas de avance comienzan cuando aparece el mensaje "DONE" al final de una pasada. Multitester quiere desplazarse por la lista, pero se inicia el avance. Y se pulsa el botón "START" y se inicia la tarea anterior. ¿Cuál es el criterio de su algoritmo para finalizar una pasada?

Por favor, considere el avance en futuras versiones de multitester.

 
Good Beer:

Por favor, tenga en cuenta el avance en futuras versiones de multitestera.

Nunca he ejecutado el modo Forward en mi vida. Probablemente lo pruebe algún día.