Caractéristiques du langage mql5, subtilités et techniques - page 222
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
Ce n'est pas nouveau, c'est la façon dont cela a toujours fonctionné depuis la naissance.
Ce n'est que si les données sont plus grandes que __atomique__ que l'accès doit être enveloppé/protégé avec des sections critiques (ou mutex vers std::thread terminal).
Je ne connaissais pas ce comportement, et je m'attendais à un processus distinct lors de l'importation.
Je pensais que les pointeurs DLL globaux seront nouveaux, dans chaque programme MT5 chargé.
Avec ce que j'ai dû transpirer pour comprendre la logique, en me demandant pourquoi l'erreur apparaîtra en mémoire.
Mais quand j'ai trouvé la raison par la méthode try (print), alors tout le plan architectural de travail avec les DLL sera construit différemment.
Mec, tu as raison pour les mutex, je n'y avais pas pensé. Merci pour le conseil.
Oui. Bien que si la méthode n'a pas de paramètres, vous pouvez le faire :
Application :
Lorsque les ordres sont exécutés partiellement, le champORDER_TIME_SETUP_MSC change.
En conséquence, DEAL_TIME_MSC peut être inférieur à ORDER_TIME_SETUP_MSC de son ordre.
Pourquoi ne pas utiliser une fonction de comparaison personnalisée ?
Vous avez raison, merci ! J'ai exagéré sur un point plat. Je laisse votre variante pour le tri.
Application.
ZZY C'est dommage, par sous-domaine ou par méthode, ça ne marche pas.
Voici le QuickSort optimisé de ma bibliothèque, légèrement adapté à vos besoins.
Il peut trier des tableaux énormes sans débordement de pile (à cause de la récursion incontrôlée).
Bonjour et merci de partager !
Ce serait parfait si cela fonctionnait. Cependant, lorsqu'il est collé dans un script .mq5 et exécuté, votre code génère malheureusement la ou les erreurs suivantes :
Pourriez-vous corriger ce problème ? Pour vous, c'est probablement facile, alors que je ne saurais pas par où commencer :-)
Lorsque vous utilisez ArrayInsert, vous pouvez économiser de la mémoire lorsque Array_Destination[] est plus petit que Array_Source[] à partir duquel les éléments sont ajoutés.
Pour ce faire, vous devez appliquer ArraySwap deux fois : avant et après ArrayInsert.
Par exemple, cela est utile lorsque l'on travaille avec de grandes archives MqlTick, etc.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Particularités du langage mql5, subtilités et techniques de travail
fxsaber, 2022.02.20 15:00
Vous avez raison, merci ! J'ai overmudryl sur une place droite. Je laisse votre variante pour le tri.
Application.
Il y a eu une erreur dans la méthode Partition. Version corrigée.
Une erreur s'est glissée dans la méthode Partition. Version corrigée.
Pour le cas particulier où un champ numérique est pris pour le tri (la situation la plus courante), j'ai écrit une variante qui est plusieurs ordres de grandeur plus rapide que la précédente. Mais elle consomme deux fois plus de mémoire. Elle est pertinente pour les grands tableaux.
Application (avec mesure du temps d'exécution).
Résultat.