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
En 2016, la plupart des compilateurs C++ sont arrivés aux mêmes niveaux d'optimisation.
MSVC fait s'interroger sur les améliorations apportées à chaque mise à jour, et Intel C++ en tant que compilateur a fusionné - il ne s'est toujours pas remis de son "erreur interne" sur les grands projets.
Une autre de nos améliorations du compilateur dans la version 1400 est qu'il est plus rapide pour compiler des projets complexes.
Sur le sujet. Vous devez créer des alternatives aux fonctions standard, car elles donnent parfois des résultats erronés. Voici un exemple d'alternative à SymbolInfoTick
Vous pouvez appeler SymbolInfoTick sur chaque événement NewTick dans le testeur et additionner le champ volume pour connaître la rotation des actions. Mais non, vous ne pouvez pas ! Je dois rendre beaucoup plus logique MySymbolInfoDouble.
Bienvenue dans la programmation, où vous êtes le créateur !
Nous vous donnons l'outil le plus complet, où vous pouvez faire tout ce que vous voulez.
Vous pouvez optimiser tout ce qui vous entoure.
C'est un processus sans fin. Mais 99% du temps, ce n'est pas économiquement viable.
Il ne s'agit pas d'optimisation, mais d'adapter l'ancienne fonction à la nouvelle réalité. Il est clair que vous auriez pu ne pas écrire NormalizeDouble du tout. Et les gens auraient créé leur propre variante. Mais vous l'avez créé pour gagner du temps. Ce n'est pas encore suffisant. Et il serait bon de réparer le vieux vélo pour satisfaire les mêmes outils de stock.
À propos, il n'y a pas si longtemps, @iliyas a suggéré d'insérer un grand nombre de fonctions système au moment de la compilation en tant que code source MQL5, afin qu'elles puissent participer à l'inlining et à l'optimisation maximale.
Je n'ai pas apprécié l'idée au début, mais maintenant je vois que ce serait brillant. Le même MSVC le fait.
Merci, nous allons vérifier et voir si nous pouvons changer la bibliothèque.
Vous avez mal compris. Pas les bibliothèques, mais NormalizeDouble. Pour ajouter une surcharge.
Pour normaliser les prix et les lots lorsque TickSize = 25, VolumeStep = 0.5
Par exemple, la normalisation ressemblerait à ceci
À propos, il n'y a pas si longtemps, @iliyas a suggéré d'insérer un grand nombre de fonctions système au moment de la compilation en tant que codes source MQL5, afin qu'elles puissent participer à l'inlining et maximiser l'optimisation.
Je n'ai pas apprécié l'idée tout de suite, mais maintenant je vois que ce serait génial. Le même MSVC le fait.
Il s'avère que #import ex5 est le mal de l'optimisation.
Veuillez prêter attention aux caractéristiques du préprocesseur
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Comment puis-je procéder à l'énumération de manière séquentielle ?
Alexey Navoykov, 2016.09.01 23:20
J'ai déjà mis en œuvre le principe ci-dessus dans MQL5, car les macros ont un nombre fixe d'arguments et le nombre d'arguments est limité à 8. Je n'ai donc que 3 valeurs pour l'enum.
Pour ce qui est de l'aspect théorique, il est probablement plus rapide de créer une fonction interne pour analyser les enum. Les développeurs ont déjà promis de créer quelque chose.
Il s'avère que des constructions très astucieuses et conviviales peuvent être créées.
Vous avez mal compris. Pas les bibliothèques, mais NormalizeDouble. Pour ajouter une surcharge.
Pour normaliser les prix et les lots lorsque TickSize = 25, VolumeStep = 0.5
Par exemple, la normalisation ressemblerait à ceci
Vous ne pouvez pas surcharger de cette façon. Mêmes signatures de fonctions.
Mais l'idée est claire - la fonction de normalisation prenant en compte la granulation des tiques.
Vous ne pouvez pas surcharger de cette manière. Mêmes signatures de fonctions.
Il ne semble pas y avoir de problème. Dans une variante, le deuxième paramètre est int (était), dans l'autre il est double (apparaîtra).
Mais l'idée est claire - la fonction de normalisation prenant en compte la granulation des tics.
fxsaber
Il y a une erreur dans votre code