Librerías: MultiTester - página 20

 

Un error complicado con un fallo de heap que parece haber vivido durante mucho tiempo.

    ::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 ));
    user32::SendMessageW(Handle, CB_GETLBTEXT, 0, Buf);

CB_GETLBTEXTLEN: El valor devuelto es la longitud de la cadena, en TCHARs, excluyendo el carácter nulo de terminación.

CB_GETLBBTEXT: El buffer debe tener espacio suficiente para la cadena y un carácter nulo de terminación.

Debe escribir

::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 )+1);
 
traveller00:

Un error inteligente con un amontonamiento que parece haber vivido mucho tiempo.


CB_GETLBTEXTLEN: El valor devuelto es la longitud de la cadena, en TCHARs, excluyendo el carácter nulo de terminación.

CB_GETLBBTEXT: El buffer debe tener espacio suficiente para la cadena y un carácter nulo de terminación

Debe escribir

Gracias Cierto, GetExpertName, donde se utiliza esto, se ha convertido casi en un rudimento.

 
fxsaber:

GetExpertName, cuando se utiliza, se ha convertido casi en un rudimento.

Cómo decirlo, se utiliza en SetExpertName, que se arranca de Run, y es de hecho una de las funciones principales en MultiTester. Aunque el error es poco frecuente, me lo encontré por casualidad.

 
traveller00:

Cómo decirlo, se utiliza en SetExpertName, que se extrae de Run, y de hecho es una de las funciones principales de MultiTester. Aunque el error aparece raramente, me encontré con él por accidente.

Hace tiempo que no ocurre.

 
    Str += iBeginTime ? "FromDate==" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate==" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;

Signos de igualdad adicionales en "FromDate==" y "ToDate==" ?

 
traveller00:

Signos de igualdad adicionales en "FromDate==" y "ToDate==" ?

Innecesario, gracias.

 
Hola. Estoy utilizando MultiTester como WFO con un forward estándar, pero el divisor estándar de 1/4 de periodo no es suficiente. Estoy intentando entender su código y enseñar a MultiTester a rellenar el campo de fecha del forward, pero no puedo hacerlo sin conocimientos de OOP. He llegado a la función Run() en el archivo MTTester. No entiendo más. Todos los parámetros se pegan en una línea y se pasan a SetSettings2 y SetSettings, donde se multiplican y se pasan al portapapeles. ¿Puede decirme qué más hay que corregir si aparece otro parámetro en la cadena y dónde inserta MultiTester los datos en la ventana? Yo añadiría un manejador de ventana más y el texto de la fecha hacia adelante.
Y al mismo tiempo, por favor, dígame el propósito de INITDEINIT fInit e INITDEINIT fDeinit en la función TesterSettings.Add().
 
Good Beer:
Hola. Estoy utilizando MultiTester como WFO con un forward estándar, pero el divisor estándar de 1/4 de periodo no es suficiente. Estoy intentando entender su código y enseñar a MultiTester a rellenar el campo de fecha del forward, pero sin conocimientos de OOP no puedo hacerlo. He llegado a la función Run() en el archivo MTTester. No entiendo más. Todos los parámetros se pegan en una línea y se pasan a SetSettings2 y SetSettings, donde se multiplican y se pasan al portapapeles. ¿Puede decirme qué tengo que corregir si aparece otro parámetro en la línea y dónde inserta MultiTester los datos en la ventana?

En la pestaña Probador->Configuración presione CTRL+C y luego en un editor de texto presione CTRL+V. Verá todos los parámetros del Probador.

ForwardMode
ForwardDate

Estos dos parámetros son los responsables del avance (el segundo es relevante cuando el primero es 4).


MTTester maneja las configuraciones del Probador a través del portapapeles, creando lo que usted ve en el editor de texto mediante CTRL+V.

 
fxsaber:


MTTester gestiona la configuración del Probador a través del portapapeles, creando lo que se ve en un editor de texto mediante CTRL+V.

Gracias.

La tarea es clara: encontrar la línea correcta contando desde arriba y reemplazarla con el texto requerido.

 
Good Beer:

La tarea está clara: encontrar la línea correcta desde arriba y sustituirla por el texto deseado.

El número de línea cambia y no es importante.

  static bool Run( const string ExpertName = NULL,
                   const string Symb = NULL,
                   const ENUM_TIMEFRAMES period = PERIOD_CURRENT,
                   const datetime iBeginTime = 0,
                   const datetime iEndTime = 0,
                   const int ForwardMode = 0 )
  {
    string Str = "[Tester]\n";

    Str += (ExpertName != NULL) ? "Expert=" + ExpertName + "\n" : NULL;
    Str += (Symb != NULL) ? "Symbol=" + Symb + "\n" : NULL;
    Str += iBeginTime ? "FromDate=" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate=" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;
    Str += "ForwardMode=" + (string)ForwardMode + "\n";

    return(MTTESTER::SetSettings2(Str) &&
           MTTESTER::SetTimeFrame(period) && MTTESTER::ClickStart());