Bibliothèque: MultiTester - page 35

 
fxsaber #:

Merci pour votre aide dans les tests ! Mise à jour de MTTester.mqh.

Merci beaucoup pour la bibliothèque

 
MTTester.mqh a de nouveau été mis à jour. Cette fois-ci, je vais vous dire ce qui a posé problème.
#include <fxsaber\Benchmark\Benchmark.mqh>  // https://www.mql5.com/fr/code/31279
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/fr/code/26132

const bool Init = EventSetTimer(3);

void OnTimer()
{
  if (MTTESTER::IsReady()) // Si le bouton de démarrage est prêt à être actionné
    Print(_B(MTTESTER::ClickStart(), 1)); // Si le bouton de démarrage a été actionné et combien de temps cela a duré.
}

Cet Expert Advisor appuie sur le bouton Start toutes les trois secondes, s'il n'est pas Stop. J'ai réussi à appuyer sur ce bouton - true, sinon - false.


Situation normale.

J'ai appuyé sur Start - le calcul a commencé.

Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 125248 mcs.
true
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 123327 mcs.
true

Cette action prend ~125 ms.


Ce n'est pas rare.

Appuyer sur Start - soit le calcul instantané est lancé, soit le testeur signale qu'il ne peut pas effectuer le calcul (par exemple FromDate >= ToDate).

Alert: MTTester.mqh: Start->Stop - is not detected!
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 1001401 mcs.
true
Alert: MTTester.mqh: Start->Stop - is not detected!
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 1004102 mcs.
true

Cette action prend environ une seconde. La bibliothèque émet un avertissement, mais renvoie un message indiquant que le bouton a été enfoncé.


Situation rare.

Le bouton Start n'est pas enfoncé. Ce problème ne peut être résolu qu'en redémarrant le terminal.

Je n'ai pas d'historique de cette situation. Il faut moins de 10 secondes pour identifier une telle situation. Il y aura une alerte comme celle-ci.

problem with Start-button!

Retourne false - le bouton n'a pas été pressé.

 
Mise à jour de MTTester.mqh.
 
fxsaber #:

C'est une situation rare.

Le bouton Start n'est pas enfoncé. Ce problème ne peut être résolu qu'en redémarrant le terminal.

Une machine WinServer distante effectuait continuellement des centaines de passes simples sans aucun échec.


Dès que je me suis connecté (RDP) à cette machine, le bouton Démarrer a cessé de cliquer. Le remède, comme toujours, est de redémarrer le terminal.

Il semble que ce comportement soit lié à des connexions similaires à la machine. Vous pouvez vous connecter via RDP des dizaines de fois et tout fonctionne bien. Mais certaines connexions deviennent fatales pour le testeur.


Ceux qui rencontrent le bogue de démarrage doivent faire attention à la relation entre la connexion à la machine et le bouton Démarrer.


ZY Coïncidence ou non, WinServer a proposé de vérifier ses mises à jour lors de cette connexion à la machine.

 

Bonne bibliothèque.
Est-il possible de spécifier le fichier *.set contenant les paramètres à passer par programme pour le test ?

Par défaut, seuls les mêmes paramètres sont utilisés, ce qui n'est pas très pratique.

 
sergego18 #:

Est-il possible de spécifier le fichier *.set contenant les paramètres à transmettre par programme pour le test ?

Exemple.
 
fxsaber #:
Exemple.

Merci.
Est-il préférable de transmettre les paramètres sur une seule ligne, les lignes étant séparées par le caractère \n.

ou un tableau de lignes comme dans l'exemple ?

Et est-il possible de modifier dans

la méthode statique Run de la classe MTTester

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 )

ajouter une chaîne de paramètres (ou un tableau de chaînes) qui spécifie les paramètres *.set EA ?

 
sergego18 #:

Merci.
Est-il préférable de transmettre les paramètres sur une seule ligne, les lignes étant séparées par le caractère \N ?

ou un tableau de lignes comme dans l'exemple ?

GetSettings est CTRL+C dans Tester.

SetSettings est CTRL+V dans Tester.

Voyez avec quelles données CTRL+C/V fonctionne.


Et s'il est possible de les modifier dans

la méthode statique Run de la classe MTTester

Je n'utilise pas cette méthode. Elle reste dans l'histoire.


L'exemple montre toutes les méthodes MTTESTER qui sont nécessaires.

 
sergego18 #:

Est-il possible de spécifier le fichier *.set contenant les paramètres à transmettre par programme pour le test ?

Validate fonctionne avec les fichiers ini complets du testeur et une version réduite - les fichiers set du testeur.

Si vous avez besoin d'exécuter un grand nombre de fichiers ini/set, Validate le fait d'emblée. Utilisation.

 
fxsaber #:

Validate fonctionne avec les fichiers ini de Tester et une version simplifiée - set-files for Tester.

Si vous avez besoin d'exécuter un grand nombre de fichiers ini/set-files, Validate le fait d'emblée. Utilisation.

Merci.
J'ai trouvé une solution dans ce commentaire où le fichier set est chargé dans le format requis comme un tableau de chaînes.

https://www.mql5.com/ru/forum/318305/page34#comment_51842356

J'ai également remplacé

typedef bool (*INITDEINIT)( void ) ;

pointeur des appels de rappel à l'initialisation et à la désinitialisation de chaque exécution

à l'interface

interface InitDeInit {

bool RunInit() ;

bool RunDeInit() ;

} ;

qui est implémentée dans l'héritier

d'une classe similaire à la structure SETTINGS

et donc dans la méthode RunInit().

Je charge le fichier de configuration de l'outil requis.

typedef bool (*INITDEINIT)( void ) ; - ce pointeur ne permet pas de savoir quel outil est en train de s'initialiser/désinitialiser, il est donc préférable d'utiliser un pointeur sur l'interface, les pointeurs sur les méthodes n'étant pas encore supportés par MQL.

Avec cette approche, il n'est pas nécessaire de modifier la méthode MTTester::Run.



Библиотеки: MultiTester - Обновил платформу MetaTrader 5 build 3550 улучшения и исправления Fxsaber.
Библиотеки: MultiTester - Обновил платформу MetaTrader 5 build 3550 улучшения и исправления Fxsaber.
  • 2024.01.21
  • Yuriy Bykov
  • www.mql5.com
You can add this draft function for reading settings from file to string array. автоматическим торговым системам и тестированию торговых стратегий. Validate умеет запускать последовательно много ini-задайний