Librerías: MultiTester - página 25

 
fxsaber:

Aproveche el error KB: el archivo zip contiene la primera versión.

Ay, tiene archivos del 25/12/20 dentro.
Todavía tengo los archivos de noviembre de 2019, pero ya hay...
¿Tienes alguno?
 
Edgar Akhmadeev:
¿Tienes uno?

Sólo he encontrado uno para diciembre de 2019. MTTester no parece haber borrado funciones antiguas.

 
fxsaber:

Encontrado sólo para diciembre de 2019. No creo que he eliminado las funciones antiguas en MTTester.

Tal vez, al menos en forma de una idea - ¿cómo establecer los parámetros de la optimización de Asesor Experto desde el código?
Probablemente estoy confundido por el largo tiempo atrás y no hay tal posibilidad.
 
Edgar Akhmadeev:
Tal vez, al menos en forma de una idea - ¿cómo establecer los parámetros de la optimización Asesor Experto desde el código?
Probablemente estoy confundido por el largo tiempo atrás y no existe tal posibilidad.

Sólo tales posibilidades.



Pero nada impide trabajar en paralelo a través del portapapeles común. Sólo hacer una comprobación adicional.

 
fxsaber:

Pero nada impide trabajar en paralelo a través de un portapapeles común. Sólo hay que hacer una comprobación extra.

Esto es lo primero que intenté. Pasé varios días depurando el semáforo de archivos en COMMON, pero no conseguí un trabajo estable. Tal vez las funciones de archivo incorporadas están temporizando un poco diferente de lo que creo que deberían.
Tal vez debería probar con archivos a través de WinAPI, memoria compartida o incluso API de semáforo (seguro que hay alguna, tal vez alguien pueda decírmelo; MutEx me vino a la mente enseguida, lo pensaré).
Si queréis analizar mis funciones Lock y Release (son cortas), puedo postearlas pasado mañana. ¿No?
 
Edgar Akhmadeev:
Esto es lo primero que intenté. Pasé unos días depurando el semáforo de archivos en COMMON, pero no conseguí que funcionara de forma consistente. Tal vez las funciones de archivo incorporadas están temporizando un poco diferente de lo que creo que deberían.
Tal vez debería tratar de archivos a través de WinAPI, memoria compartida o incluso API semáforo (seguro que hay uno, tal vez alguien puede sugerir que; MutEx vino a la mente de inmediato, voy a pensar en ello).
Si quieres analizar mis funciones Lock y Release (son cortas), puedo publicarlas pasado mañana. ¿No?

¡Pues te has hecho un lío! Introduce una cadena de entrada, en la que metas la ruta al Terminal a través del buffer. Después de meter la configuración, léela y comprueba si es correcta. En particular, por esta cadena de entrada. Pulse el botón Inicio tan pronto como la comprobación se haya completado con éxito.


Incluso se hace algo similar.

  static bool SetSettings2( string Str, const int Attempts = 5 )
  {
    bool Res = false;

    for (int j = 0; (j < Attempts) && !Res; j++)
    {
      string Str1;
      string Str2;
      string Str3;

      Res = MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str1) &&
            MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str2) &&
            MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str3) &&
            (Str1 == Str2) && (Str1 == Str3);
    }

    return(Res);
  }
 
fxsaber:

¡Tiene mucho sentido! Introduce una cadena de entrada, en la que metas la ruta al Terminal a través del buffer. Después de meter la configuración, léela y comprueba si es correcta. En particular, por esta cadena de entrada. Pulse el botón Inicio tan pronto como la comprobación se haya completado con éxito.

No es que me haga el listo, es que soy muy directo. Multi-acceso significa semáforos.
Bueno, pedí una idea y la obtuve. Gracias.
 

Aceleración de la AG.

El Asesor Experto en modo marco recibe OnTester de los Agentes. Si durante 100-1000 pasadas no se encuentra nada bueno, pulsamos Stop.

La optimización se puede acelerar en un orden de magnitud.
 
fxsaber:
Puedes acelerar la optimización en un orden de magnitud .

Hice 470 optimizaciones (cada una sobre un símbolo diferente) en 4,5 horas sobre ticks reales (un mes).

 

1. Yo cambiaría de GetTickCount() a GetTickCount64() en Sleep2. De lo contrario, el desbordamiento amenaza la lógica no del todo correcta. Y ocurre notablemente menos a menudo en la variante 64. En otras obras, tal vez debería cambiar a ella también.


2. El segundo ArrayResize plantea preguntas aquí

      ::ArrayResize(Buffer, (int)Size / sizeof(T));

      kernel32::ReadFile(handle, Buffer, (uint)Size, Read, 0);
      Res = ::ArrayResize(Buffer, Read);

Lo más probable es que debería ser

Res = ::ArrayResize(Buffer, Read / sizeof(T));


3. Y por último algunos tipos diferentes

static void Sleep2( const uint Pause )


  static bool IsReady( const int Pause = 100 )
  {
    if (MTTESTER::IsReady2())
      MTTESTER::Sleep2(Pause);