Erreurs, bugs, questions - page 2685

 
De temps en temps, le terminal MT4 se ferme spontanément, il n'y a rien à ce sujet dans le journal du terminal et rien dans les événements des gains. Comment déterminer la cause de ces accidents ?
 
Igor Makanu:
ZS : Je serais reconnaissant s'il y avait une méthodologie pour faire une surcharge complète afin que l'optimisation génétique n'entre pas en jeu.

Optimisation des lots.

 
Défaut du débogueur ME (build 2370) - StepInto (F11) et les points d'arrêt fixés ne fonctionnent pas.
Le problème est que si l'action StepOver (F10) est appliquée à un appel de fonction au moins une fois, il n'y a aucun moyen de déboguer cette fonction ultérieurement.

void Increment(int &n){
   ++n;
};

void test(){
   int n = 0;
   for(int i = 0; i < 100; ++i){
      DebugBreak();
      Increment(n);
   }  
}

void OnStart(){
   test();
}

Étapes de la lecture :
1) Exécutez le code en mode débogage ;
2) Après le déclenchement d'un point d'arrêt, exécutez deux fois StepOver (F10) ;

C'est tout - maintenant il n'y a aucun moyen d'entrer dans la fonction d'incrémentation, tous les points d'arrêt définis manuellement ne fonctionnent pas, et au lieu de l'opération StepInto (F11), on effectue en fait StepOver (F10).


 

Un défaut dans le débogueur ME (build 2370) - après qu'unpoint d'arrêt soitdéclenché,au lieu de continuer l'exécution du code en appuyant sur (F5), le mêmepoint d'arrêtest en fait déclenché à nouveausans exécuter aucun code.

#include <Generic\ArrayList.mqh>

void OnStart(){
   CArrayList<int> arr;
   for(int i = 0; i < 5; ++i){
      arr.Add(i);
      arr.Add(2*i);
   }
}

Reprise des étapes :
1) Définissez manuellement
le point d'arrêt pour les deux lignes " arr.Add()" ;
2) Démarrez le débogage (F5) ;
3) Utilisez PCM pour ouvrir le fichier imbriqué <Generic\ArrayList.mqh> dans un nouvel onglet.
4) Trouvez la ligne "if(m_size==ArraySize(m_items))" dans la fonction "bool CArrayList::Add(T item)" et placezle point d'arrêt manuellement.
5) Tout en restant dans l'onglet "
ArrayList.mqh", continuez à exécuter le code (F5).

Cela
déclenchera le mêmepoint d'arrêt que précédemment, sans exécution réelle du code.

 
Bug MT5 (build 2370) - le déclenchement d'un point d'arrêt dans une méthode de structure statique provoque le blocage du terminal MT.
Par conséquent, il n'est pas du tout possible de déboguer le codede la méthode de la structure statique:

struct A{
   static void test(){
      DebugBreak();
   }
};

void OnStart(){
   A::test();
}
 
Igor Makanu:
Je n'ai pas trouvé d'informations à ce sujet

Strategy Tester en mode "Slow (optimisation complète par force brute)" - à partir de quelle valeur totale des étapes d'optimisation passe-t-il à l'optimisation génétique ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Question aux développeurs - Utilisation de tous les cœurs de calcul pendant l'optimisation

Andrey Dik, 2020.03.26 23:31

Vous pouvez définir jusqu'à 100 millions de pas pour que l'optimiseur ne passe pas à la génétique.


 
Andrey Khatimlianskii:

J'ai trouvé cette correspondance, et je pense l'avoir lue quand elle s'est produite - le résultat est un bannissement de membre, c'est pourquoi j'ai voulu trouver la source originale

J'ai testé en mode de recherche complète par un paramètre - les passes sont numérotés hors de l'ordre, en général la recherche complète - fonctionne selon une certaine logique des développeurs, pas le concept sémantique

 
Igor Makanu:

testé en mode de recherche complète par un paramètre - les passes sont numérotées dans le désordre, en général la recherche complète - fonctionne selon une certaine logique des développeurs, pas le concept sémantique

Ainsi, les tâches sont distribuées par paquets aux agents.

1-100 au premier, 101-200 au second, etc.

Et les résultats apparaissent au fur et à mesure (1, 101, 2, 102, etc.).

Facile à trier.

 
Andrey Khatimlianskii:

Les tâches sont donc distribuées par paquets aux agents.

1-100 au premier, 101-200 au second, etc.

Et les résultats apparaissent au fur et à mesure (1, 101, 2, 102, etc.).

Facile à trier.

OK, c'est une bonne réponse, c'est à peu près ça, dommage que la source originale n'ait jamais été retrouvée,

il reste à savoir à quel nombre total de passes sera inclus GA, jusqu'à présent il semble que 100 000 000 de passes, pour mes tâches est suffisant

 
Igor Makanu:

OK, c'est une bonne réponse, c'est à peu près ça, c'est dommage que la source n'ait jamais été trouvée,

il reste à savoir à quel nombre total de passes l'AG sera activé, jusqu'à présent il semble que 100 000 000 de passes, pour mes tâches c'est suffisant

à condition que le paramètre à optimiser soit égal à un. S'il y en a plus, il activera quand même la génétique.