Librerías: MultiTester - página 48

 
 

//#include "..\utils\fxsaber\MultiTester\MTTester.mqh" // https://www.mql5.com/es/code/26132
#include <fxsaber\MultiTester\MTTester.mqh>
input group "MTTester"
sinput int inA = 22;
sinput int inB = 33;
sinput bool inC = false;

void OnInit()
{
  const bool IsTester = MQLInfoInteger(MQL_TESTER);

  if (!IsTester)
  {
    string Settings;
    bool ok1 = MTTESTER::GetSettings2(Settings);
    Print(ok1, " ", Settings);
  }  
}  

Lo he intentado y no consigo obtener los parámetros del comprobador.

Tengo que pulsar Ctrl + C para copiar el texto una vez?


 
hini #:

Lo he intentado y no consigo los parámetros del probador.

Véase _LastError.

¿Tengo que pulsar Ctrl+C para copiar el texto una vez?

No.

 
fxsaber #:
Echa un vistazo a _LastError.

4009 ERR_NOTINITIALISED_STRING

 
hini #:

4009 ERR_NOTINITIALIZED_STRING

No reproducido.

2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) true [Tester]
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) Expert=Examples\MACD\MACD Sample.ex5
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) Symbol=EURUSD
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) Period=M1
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) Optimization=1
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) Model=3
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) [TesterInputs]
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) ; MTTester
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) inA=22
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) inB=33
2025.06.28 20:28:31.981 MACD Sample (EURUSD,M1) inC=false
 
fxsaber #:

No está sonando.

Supongo que se trata de un problema de la versión del terminal: la versión 5120 no reproduce la entrada del probador.

#include <fxsaber\MultiTester\MTTester.mqh>
input group "MTTester"
sinput int inA = 22;
sinput int inB = 33;
sinput bool inC = false;

void OnInit()
{
  const bool IsTester = MQLInfoInteger(MQL_TESTER);
  ResetLastError();
  if (!IsTester)
  {
    string Settings = "";
    bool ok1 = MTTESTER::GetSettings2(Settings);
    Print(ok1, " error=", _LastError," BUILD:", __MQL5BUILD__, " ", Settings);
  }  
}

 
hini #:

Sospecho que es un problema de la versión del terminal, no es reproducible en el 5120.

Todo funciona en b4885 también.

 
fxsaber #:

Todo funciona en el b4885 también.

Lo tengo

 
hini #:
Supongo que se trata de un problema de la versión del terminal: la versión 5120 no reproduce la entrada del comprobador.

  static long GetHandle( const int &ControlID[] )
  {
    long Handle = MTTESTER::GetTerminalHandle();
    const int Size = ::ArraySize(ControlID);

    for (int i = 0; i < Size; i++) {
      Handle = user32::GetDlgItem(Handle, ControlID[i]);
      if (Handle != 0) return Handle;
    }

    return(Handle);
  }

El problema con la obtención de la entrada del probador en la versión b5120 se ha solucionado. Durante la depuración se encontró que para el array static const int ControlID[] = {0xE81E, 0x804E} el segundo elemento (0x804E) devuelve un Handle igual a 0, mientras que el primer elemento (0xE81E) devuelve un Handle válido. Al utilizar este Handle, la recepción de los datos de entrada del probador funciona correctamente.

Las pruebas han demostrado que este método funciona también en la versión b4879, y presumiblemente no debería haber problemas también en b4885.

static const int ControlID[] = {0x804E, 0xE81E}; //{0xE81E, 0x804E};

Quizás lo más sencillo sea cambiar la orden

 
hini #:

Corregido un problema con la obtención de datos de entrada del probador en la versión b5120. Durante la depuración se encontró que para la matriz estática const int ControlID[] = {0xE81E, 0x804E} el segundo elemento (0x804E) devuelve Handle igual a 0, mientras que el primer elemento (0xE81E) devuelve Handle válido. Cuando se utiliza este Handle, la recepción de los datos de entrada del comprobador funciona correctamente.

Las pruebas han demostrado que este método funciona también en la versión b4879, y presumiblemente no debería haber problemas también en b4885.

Quizás lo más sencillo sea cambiar la orden

¿Está seguro de que está utilizando la versión actual de MTTester.mqh? El siguiente código está allí.

  static long GetHandle( const int &ControlID[] )
  {
    static const bool MT5_b5050 = (::TerminalInfoInteger(TERMINAL_BUILD) > 5000);

    long Handle = MTTESTER::GetTerminalHandle();
    const int Size = ::ArraySize(ControlID);

    for (int i = 0; i < Size; i++)
      if (!MT5_b5050 || (ControlID[i] != 0xE81E))
        Handle = user32::GetDlgItem(Handle, ControlID[i]);

    return(Handle);
  }