Erreurs, bugs, questions - page 2296
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'ai mesuré les performances du Testeur. Pour ce faire, j'ai ouvert et fermé une position sur chaque tick. J'ai mesuré le temps d'exécution de 100 ticks. Je l'ai testé sur 100 000 ticks. J'ai mesuré un total de 1000 tics. J'ai obtenu ce tableau
Il y a des pics de ralentissement à des distances presque égales entre eux. Je l'ai mesuré en mode Optimisation. Si j'ignore ces pics, les performances du testeur varient de 25 % au lieu de la valeur constante. C'est peut-être encore un truc de mesure de la vitesse de Windows.
ZZZ Le même code est exécuté sur MT4.
En moyenne, il faut au testeur MT4 1,5 à 2 fois moins de temps pour traiter un tick que le testeur MT5.
Éventuellement des surcharges par l'utilisation d'un algorithme d' optimisation génétique.
En moyenne, le MT4-Tester prend 1,5 à 2 fois moins de temps pour traiter un tick que le MT5.
Éventuellement des surcharges par l'utilisation d'un algorithme d' optimisation génétique.
Pas d'AG. Optimisation à partir de deux passages sur un agent.
Et c'est déjà de la pure manipulation et de la tromperie.
Le code source est en place.
Dans un cas un avertissement, dans l'autre une erreur
Quelle est la différence fondamentale ? En C++, par exemple, il y a une erreur dans les deux cas
Je demande l'aide de personnes compétentes pour comprendre le problème des pointeurs vers les instances de classe. Je ne le comprends pas.
Voici un exemple de script :
En l'exécutant, nous avons, comme prévu :
si une instance d'une classe est déclarée comme :
A *a= new A;
puis sur l'exécution, nous avons :
c'est-à-dire que le destructeur n'est même pas lancé et que la mémoire n'est donc pas libérée.
Mais si une instance d'une classe est déclarée comme :
A a= new A;
le constructeur est lancé deux fois, le destructeur - une fois, mais la mémoire n'est pas libérée et nous avons le type de pointeur d'objetPOINTER_AUTOMATIC, alors qu'il devait êtrePOINTER_DYNAMIC
Comment toujours exécuter le destructeur et exécuter correctement le delete ?
Как добиться всегда выполнения деструктора и правильного выполнения delete.
Voir en C++ le sujet des pointeurs intelligents et adapter pour MQL(https://habr.com/post/140222/).
Peut-être qu'il y a quelque chose dans kodobase...
Voir en C++ le sujet des pointeurs intelligents et adapter pour MQL(https://habr.com/post/140222/).
Peut-être qu'il y a quelque chose dans kodobase...
Merci, mais je n'y ai pas trouvé de réponses à mes questions.
Je ne comprends pas pourquoi le destructeur n'est pas appelé lorsqueA *a= new A ;
Merci, mais je n'y ai vu aucune réponse à mes questions.
Je ne comprends pas pourquoi le destructeur n'est pas appelé lorsqueA *a= new A ;
Résultat :
1:POINTEUR_AUTOMATIQUE
1:POINTEUR_DYNAMIQUE
2:POINTEUR_DYNAMIQUE
2:POINTEUR_AUTOMATIQUE
Merci, mais je n'y ai vu aucune réponse à mes questions.
Je ne comprends pas pourquoi le destructeur n'est pas appelé lorsqueA *a= new A ;
Créer avec nouveau et supprimer avec supprimer
Merci, mais je n'y ai vu aucune réponse à mes questions.
Je ne comprends pas pourquoi le destructeur n'est pas appelé lorsqueA *a= new A ;
https://www.mql5.com/ru/docs/basis/variables/object_live
Tous les objets créés par l'expression pointer_objet=nouvelleClasse_nom doivent être détruits par l'opérateur delete(pointer_objet) par la suite. Si, pour une raison quelconque, cette variable n'a pas été détruitepar l'opérateur de suppression, un message à ce sujet apparaîtra dans le journal "Experts". Il est possible de déclarer plusieurs variables et de les affecter toutes au même pointeur d'objet.