Théorie de l'accélération de l'EA lors de l'utilisation d'un indicateur personnalisé (fonction - iCustom) - page 4
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 compris, le problème est inventé.
Lorsque je serai confronté à des freins indicateurs réels dans un projet réel, je serai prêt à poursuivre la discussion.
Un triste constat pour cinq personnes, et les développeurs n'expliquent pas le sens sacré de ce fait ?
Apparemment, c'est une question d'architecture. Je n'étais pas intéressé.
Une discussion sur un sujet connexe a eu lieu ici - https://www.mql5.com/ru/forum/8278.
Le starter s'est mis dans le bain, n'ayant pas compris les bases du travail avec les indicateurs... mais l'information est publiquement disponible (articles + Documentation).
D'où beaucoup de mauvaises questions et de suppositions...
Un autre lien vers l'indicateur créé à l'aide d'OpenCL. La charge est sur la carte vidéo.
Il est vrai que pour obtenir une vitesse de calcul comparable, la tâche doit être vraiment "lourde"...
A propos, MT4 se débrouille très bien avec le calcul d'une partie seulement de l'historique et ne consomme pas de mémoire pour l'ensemble du tampon, si la boucle passe par les 1000 dernières barres (même s'il y a 50000 barres "dans la fenêtre").
Cependant, j'ai rencontré ce problème dans MT5 - il alloue de la mémoire pour l'ensemble des 50000 barres même si seules les 100 dernières sont comptées.
Vous êtes sûr de ça ?
Dans les deux plateformes, les tampons des indicateurs sont alloués automatiquement et de la même manière pour tous les historiques de barres disponibles.
Vous en êtes sûr ?
Dans les deux plateformes, les tampons d'indicateurs sont alloués automatiquement et de manière égale pour tout l'historique des barres disponibles.
Je ne l'ai pas vérifié depuis six mois, mais le même indicateur avec 1000 barres dans MT4 et MT5 utilisait une quantité de mémoire très différente (lors de l'affichage d'un grand nombre de barres dans la fenêtre).
J'ai des doutes maintenant. Peut-être s'agit-il d'un problème avec le cache d'objets dont nous avons parlé ici -https://www.mql5.com/ru/forum/8278 ?
Vous en êtes sûr ?
Dans les deux plateformes, les tampons des indicateurs sont alloués automatiquement et de la même manière pour tous les historiques de barres disponibles.
J'ai rencontré un problème dans MT4 - il y a un script qui a la tâche de superposer un indicateur sur un graphique, de collecter des données à partir de sa mémoire tampon et de faire le calcul mathématique et l'analyse.
Le fonctionnement du script avec les indicateurs intégrés est parfait, mais les choses ne sont pas si bonnes avec les indicateurs appelés via iCustom - la mémoire, allouée pour le terminal (maximum), se termine rapidement, en conséquence le script commence à obtenir des valeurs nulles du tampon de l'indicateur. Existe-t-il une possibilité d'effacer de force la RAM au moment de la suppression de l'indicateur du graphique ou après son rappel, mais avec des paramètres différents, via iCustom) ?
J'ai été confronté à un problème avec MT4 - il y a un script qui implémente un indicateur sur un graphique, collecte des données à partir de sa mémoire tampon et effectue des calculs et des analyses mathématiques.
Le fonctionnement du script avec les indicateurs intégrés est parfait, mais les choses ne sont pas si bonnes avec les indicateurs appelés via iCustom - la mémoire, allouée pour le terminal (maximum), se termine rapidement, en conséquence le script commence à obtenir des valeurs nulles du tampon de l'indicateur. Existe-t-il une possibilité d'effacer de force la RAM au moment de la suppression de l'indicateur du graphique ou après son rappel, mais avec des paramètres différents, via iCustom) ?
Et combien d'iCustoms avec différents paramètres avez-vous créés exactement ?
S'il y en a des dizaines et des centaines (il semble que ce soit le cas), rien ne peut être fait dans le cadre des indicateurs externes. Vous pouvez seulement l'intégrer dans votre EA comme une unité de calcul qui ne consomme pas de mémoire.
Dans MetaTrader 5, il y a un contrôle total sur tous les indicateurs demandés, mais même là, le jeu "je crée et supprime des centaines d'indicateurs" est lourd de conséquences.
Et combien d'iCustoms avec différents paramètres avez-vous créés exactement ?
S'il y en a des dizaines et des centaines (il semble que ce soit le cas), rien ne peut être fait dans le cadre des indicateurs externes. La seule chose que vous pouvez faire est de l'intégrer dans votre EA comme une unité de calcul qui ne consomme pas de mémoire.
Dans MetaTrader 5, il y a un contrôle total sur tous les indicateurs demandés, mais le jeu "je crée et supprime des centaines d'indicateurs" est lourd de conséquences.
Vous créez un seul indicateur, puis vous modifiez ses paramètres. La fonction iCustom est utilisée dans l'indicateur lui-même pour demander des données pour un autre indicateur - c'était plus facile à faire de cette façon.
Si nous comptons toutes les demandes de ce groupe, nous obtiendrons environ 7 tampons.
D'autres indicateurs avec la fonction iCustom, mais plus simples, le script croque... Le total des chevauchements se situe aux alentours de dix mille. L'indicateur actuel s'écrase sur la sixième douzaine de passages.
Je comprends que je manque de mémoire, mais si nous n'utilisons pas les anciennes données, pourquoi les nouvelles données ne se remplissent-elles pas correctement ?
Pourquoi dans MT4 il n'y a pas de fonction pour supprimer l'indicateur de la mémoire, c'est très difficile à mettre en œuvre ?
Si le nombre de copies d'indicateurs est important, il faut les intégrer dans le conseiller expert. Il n'y a pas d'autre solution.
Nous ne parlons pas d'un EA ici, nous parlons d'un script ! Le script analyse l'indicateur. Si nous apprenons au script à fermer et ouvrir le graphique après plusieurs passages (changement des paramètres des indicateurs et de leur analyse), cela permettra-t-il de vider la mémoire ?
Pourquoi créer un indicateur dans votre Expert Advisor qui doit être supprimé plus tard, et surtout pas une seule fois ?
Incluez dans le code de l'EA une fonction qui effectue un calcul similaire à celui de l'indicateur. Dans cette fonction, vous pouvez facilement modifier les paramètres du calcul et il n'y aura pas de dépassement de mémoire. En outre, le calcul sur toutes les barres, dont, si j'ai bien compris, vous n'avez pas besoin, peut être évité. Et vous n'aurez pas besoin de la fonction iCustom().
J'ai juste besoin de toutes les barres pour une période. Le script fonctionne - il est universel pour l'analyse des indicateurs d'un certain type - il est coûteux d'écrire un script pour chaque indicateur. Si seulement le compilateur insérait des indicateurs (selon une certaine commande) dans les conseillers/scripts/indicateurs, alors la vie serait différente ! Ah, les rêves...