Caractéristiques du langage mql5, subtilités et techniques - page 84
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
Pouvez-vous fournir le code de référence pour le démontrer ?
Résultat(Libération)
Et voici ce que vous obtenez lorsque vous l'exécutez en mode profilage
Malheureusement, on ne peut pas faire confiance au profileur dans ce cas.
Résultat ( Release )
HH Et voici ce que j'obtiens, si je l'exécute en mode de profilage
Non seulement il est impossible de croire le profileur dans ce cas, mais Bench1 s'exécute 10 fois plus vite que dans la version Release !
Merci pour cela.
Résultat ( Release )
Testé avec Expert Advisor par stratégie.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
Encore 2 fois plus rapide (mais pas plus de 10 fois plus rapide, ce qui est certainement dû à l'optimisation du compilateur).
Testé avec un conseiller en stratégie.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
Il est encore 2 fois plus rapide (mais pas plus de 10 fois plus rapide, ce qui est évidemment dû à l'optimisation du compilateur).
Vous mesurez le temps restant pour générer des ticks, et pas seulement le calcul de OnTick.
Voici seulement la mesure OnTick
Bench1
Bench3
Par un facteur de trois. Vous ne pouvez pas obtenir une vitesse 10 fois plus rapide grâce à des appels multiples à la fonction BenchX. StringToDouble2 lui-même est en effet 10 fois plus rapide.
Vous mesurez le temps nécessaire pour générer des ticks, et pas seulement pour calculer OnTick.
...Vous avez raison.
Je suis vraiment surpris que ce soit 10 fois plus rapide, mais votre fonction ne peut être utilisée que lorsque vous savez que la chaîne contient une valeur double valide.
2018.04.16 17 : 14 : 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Merci, mais ce script enregistre également de manière incorrecte.
Sur mon écran, la limitation sur le côté droit est marquée par une ligne verticale, et la capture d'écran est bien au-delà de cette ligne.
Je vais citer la réponse du servicedesk :
Dans ce cas, l'aide ChartScreenShot doit être prise au pied de la lettre.
align_mode=ALIGN_RIGHT
[Mode de sortie d'une capture d'écran étroite. La valeur de l'énumération ENUM_ALIGN_MODE. ALIGN_RIGHT indique un alignement sur le bord droit (sortie par la fin). ALIGN_LEFT spécifie l'alignement à gauche.
Cela signifie que lorsque vous spécifiez l'alignement ALIGN_RIGHT, le graphique défilera de force vers le bord droit, ce qui équivaut à l'exécution de la commande
Ce comportement a été établi il y a de nombreuses années (donc historiquement) lorsqu'il n'y avait pas encore de fonction ChartNavigate(). La définition de align_mode=ALIGN_RIGHT garantissait que le bord droit du graphique serait supprimé.
Lorsque la fonction ChartNavigate() a été ajoutée, le comportement de la fonction ChartScreenShot n'a pas été modifié.
Par conséquent, si vous souhaitez obtenir l'effet souhaité (le graphique ne défilera pas vers le bord droit), utilisez la valeur ALIGN_LEFT pour le paramètre align_mode.
votre fonction ne peut être utilisée que lorsque vous savez que la chaîne de caractères contient une valeur double valide.
2018.04.16 17 : 14 : 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Corrigé, maintenant il fonctionne comme l'original
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Caractéristiques du langage mql5, subtilités et astuces
fxsaber, 2018.04.16 13:23
Si vous supprimez la constante mise en évidence, le temps d'exécution de la fonction sera doublé. Cela montre que le compilateur ne crée pas toujours un code optimal et qu'il a besoin de ce genre d'indications.
Si nous supprimons la mention const, le temps d'exécution de la fonction sera doublé. Cela indique que le compilateur ne crée pas toujours un code optimal et qu'il a besoin de ce genre d'indications.
Intéressant, merci.
Veuillez ne pas modifier votre code une fois que vous avez déjà reçu une réponse, je n'ai pas reçu la notification que vous l'avez mis à jour.
Si nous supprimons la mention const, le temps d'exécution de la fonction sera doublé. Cela indique que le compilateur ne crée pas toujours un code optimal et qu'il a besoin de ce genre d'indications.
Très intéressant...
Vous savez pourquoi cela se produit ?
Quel est le mécanisme ?
Pour déterminer la largeur d'une capture d'écran prise avec MQL5 qui inclurait toutes les barres pour une certaine période, la solution ci-dessous est proposée.
Une particularité s'est avérée être le fait que la largeur de la capture d'écran doit être corrigée à différentes approximations du graphique.
Les "coefficients" réels se sont avérés différents (pour moi spécifiquement) pour la variante avec et sans l'échelle.