Bibliothèque: MultiTester - page 48

 
 

//#include "..\utils\fxsaber\MultiTester\MTTester.mqh" // https://www.mql5.com/fr/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);
  }  
}  

J'ai essayé et je n'arrive pas à obtenir les paramètres du testeur.

Dois-je appuyer sur Ctrl+C pour copier le texte une fois ?


 
hini #:

J'ai essayé et je n'arrive pas à obtenir les paramètres du testeur.

Voir _LastError.

Dois-je appuyer sur Ctrl+C pour copier le texte une fois ?

Non.

 
fxsaber #:
Vérifier _LastError.

4009 ERR_NOTINITIALISED_STRING

 
hini #:

4009 ERR_NOTINITIALIZED_STRING

Non reproduit.

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 #:

Il ne joue pas.

Je suppose qu'il s'agit d'un problème de version du terminal - la version 5120 ne reproduit pas les entrées des testeurs.

#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 #:

Je pense qu'il s'agit d'un problème de version du terminal, il n'est pas reproductible sur le 5120.

Tout fonctionne également sur b4885.

 
fxsaber #:

Tout fonctionne également sur le b4885.

Je l'ai

 
hini #:
Je suppose qu'il s'agit d'un problème lié à la version du terminal - la version 5120 ne parvient pas à reproduire les données des testeurs.

  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);
  }

Le problème d'obtention de l'entrée du testeur dans la version b5120 a été corrigé. Lors du débogage, il a été constaté que pour le tableau static const int ControlID[] = {0xE81E, 0x804E}, le deuxième élément (0x804E) renvoie un Handle égal à 0, alors que le premier élément (0xE81E) renvoie un Handle valide. Lorsque cette poignée est utilisée, la réception des données d'entrée du testeur fonctionne correctement.

Les tests ont montré que cette méthode fonctionne également dans la version b4879, et on peut supposer qu'il n'y a pas de problème dans la version b4885.

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

La chose la plus simple à faire est peut-être de changer l'ordre

 
hini #:

Correction d'un problème avec l'obtention des données d'entrée du testeur dans la version b5120. Lors du débogage, il a été constaté que pour le tableau static const int ControlID[] = {0xE81E, 0x804E}, le deuxième élément (0x804E) renvoie un Handle égal à 0, alors que le premier élément (0xE81E) renvoie un Handle valide. L'utilisation de ce Handle permet de recevoir correctement les données d'entrée du testeur.

Les tests ont montré que cette méthode fonctionne également dans la version b4879, et il ne devrait pas y avoir de problème dans la version b4885.

La chose la plus simple à faire est peut-être de changer l'ordre

Êtes-vous sûr d'utiliser la version actuelle de MTTester.mqh ? Le code suivant s'y trouve.

  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);
  }