Je ne comprends pas pourquoi la comparaison était dans le Visualiseur et non dans le Terminal ?
Je n'ai pas regardé dans le code. C'est pour ce genre de tâches que Kanvas est fait un pour tous "50 lignes".
Dans le terminal, j'ai mesuré par le biais de la bible d'utilisation. Les méthodes ne montrent aucune différence significative.
Je ne comprends pas pourquoi la comparaison s'est faite dans le Visualiseur et non dans le Terminal ?
Car dans le Visualiseur, c'est la lenteur du Canvas qui pose problème. Et vous pouvez voir ce qu'ils sont. Un tel affichage consomme plus de 50% du temps CPU, je l'ai mentionné plus haut ! Et dans Terminal, il faudrait appeler des méthodes en boucle pour tout voir. Mais je ne me suis pas embêté avec ça. J'ai un conseiller expert qui fonctionne en boucle avec une optimisation hors ligne, où, en fait, j'ai besoin d'un tel affichage avec des mises à jour rapides. Mais je ne suis pas prêt à le présenter pour le moment car le projet n'est pas encore terminé.
Je n'ai pas regardé dans le code. C'est pour ce genre de tâches que Kanvas est fait un pour tous "50 lignes".
Alors, jetez un coup d'œil. C'est le seul là-bas !
Tu veux vraiment me mettre le nez dedans, n'est-ce pas ?

Je savais que tu voudrais faire quelque chose comme ça. Et je savais que tu inventerais quelque chose comme ça.
Vous ne savez pas comment préparer des tests de comparaison.
Car dans le Visualiseur, c'est la lenteur de Canvas qui pose problème. Et vous pouvez voir lesquels. Un tel affichage consomme plus de 50% du temps CPU, je l'ai mentionné plus haut ! Et dans Terminal, il faudrait appeler des méthodes en boucle pour tout voir. Mais je ne me suis pas embêté avec ça. J'ai un conseiller expert qui fonctionne en boucle avec une optimisation hors ligne, où, en fait, j'ai besoin d'un tel affichage avec des mises à jour rapides. Mais je ne suis pas prêt à le présenter pour le moment, car le projet n'est pas encore terminé.
Alors, jetez-y un coup d'œil. C'est la seule là-bas !
Eh bien... si vous n'écrivez que pour un visualiseur, alors jouez ces jeux seuls. N'avez-vous jamais entendu dire que des graphiques, même des marques d'ouverture/fermeture de position, ralentissent le moteur de rendu ? Non.
Je vais essayer de ne pas vous déranger... créez des étiquettes séparées pour chaque lettre... et aussi une ressource séparée...
Vous trompez les gens.
Tu veux me mettre le nez dedans, n'est-ce pas ?
Je savais que tu voudrais faire quelque chose comme ça. Je savais que tu voudrais faire quelque chose comme ça.
Vous ne savez pas comment préparer des tests de comparaison.
Tout ce que j'ai compris de votre message, ce sont les mots "délire", "LOL", "je ne sais pas comment préparer les tests". Vraiment, je ne comprends pas comment ils se rapportent à ce sujet... Le reste, je ne comprends rien au mot "du tout" ! Lorsque j'ai créé ce fil de discussion, je voulais voir descritiques constructives ici, pas un tas d'affirmations incompréhensibles ! Alors, prenez la peine d'expliquer vos propos. Sinon, n'écrivez pas de bêtises ici !
Eh bien... si vous n'écrivez que pour le visualiseur, alors jouez ces jeux seuls. N'avez-vous jamais entendu dire que tout graphique, même les marques d'ouverture/fermeture de position ralentissent le visualiseur ? Non.
Je vais essayer de ne pas vous déranger... créez des étiquettes séparées pour chaque lettre... et aussi une ressource séparée...
Je m'empresse de vous informer, Alexei. Vous avez, bien sûr, tendance à fantasmer, tout comme Nikolaï... Mais ce n'est pas vraiment la façon dont vous l'imaginez. Simplement, des solutions différentes sont nécessaires pour des tâches différentes. Est-ce que vous et Nikolaï avez des commentaires de fond? !
Tout ce que j'ai compris de votre message, ce sont les mots "délire", "LOL", "je ne sais pas comment préparer les tests". Vraiment, je ne comprends pas comment ils se rapportent à ce sujet... Le reste, je ne comprends rien au mot "du tout" ! Lorsque j'ai créé ce fil de discussion, je voulais voir descritiques constructives ici, pas un tas d'affirmations incompréhensibles ! Alors, prenez la peine d'expliquer vos propos. Sinon, n'écrivez pas de bêtises ici !
Patience mon ami, patience.
Allez-y. Comprenez d'abordcorrectement le code, car le code est une chose compliquée, et j'ai besoin d'affirmations clairement étayées!
Je ne comprends pas. La première image présente une toile sur laquelle se trouve du texte.
Les images suivantes ne comportent pas de texte similaire sur le graphique.
Je veux dire, qu'est-ce qui était comparé alors ?
Allez-y. Mais d'abord comprendre le codecorrectement, parce que le code est une chose compliquée, et j'ai besoin d'une revendication argumentative claire!

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Je voudrais vous présenter une comparaison de la vitesse d'affichage du texte dans le graphique, créé à l'aide de différentes méthodes. La première variante de l'affichage que j'ai faite en utilisant la classe CCanvas, la seconde que j'ai créée sur des étiquettes (CChartObjectLabel). Toutes les classes ont été prises dans la bibliothèque standard. Cette idée m'est venue lorsque j'ai créé un affichage sur CCanvas et que cela ralentissait considérablement mon Expert Advisor. Dans le même temps, certains programmeurs ont affirmé que j'avais tort et queCCanvas, et pour être plus précis, OBJ_BITMAP_LABEL est très rapide, plus rapide que toutes les méthodes d'affichage des informations dans le graphique disponibles dans MetaTrader.J'ai donc décidé de le vérifier expérimentalement. Donc, le moment de vérité.
Fonctionnement de l'affichage avec sortie dansCCanvas
Charge du CPU en ce moment
Fonctionnement de l'affichage avec sortieCChartObjectLabel
Fonctionnement deCChartObjectLabel avec le mode d'optimisation de la vitesse activé (je vous en parlerai plus loin).
Maintenant, les valeurs temporelles. Total est la durée totale de fonctionnement du conseiller expert testé. Min delay,Mid delay etMax delay sont despériodes de retard sur les ticks. Mais ils ne peuvent pas toujours être obtenus correctement, malgré le fait que j'ai vérifié le code, il n'y avait pas d'erreurs. Je pense que cela a à voir avec la fonction GetTickCount64 dans le testeur. Mais c'est un problème insignifiant. L'essentiel est qu'il indique le temps total.
Laissez-moi maintenant vous parler brièvement de l'optimisation de l'affichage sur les étiquettes. En effet, pour que le texte apparaisse à l'écran, vous devez afficher les lignes d'un tableau spécial de lignes dans des étiquettes, qui sont disposées de haut en bas au nombre de 50 pièces. Mais lorsque seule la dernière ligne est mise à jour, il n'est pas nécessaire de mettre à jour toutes les étiquettes, il suffit de mettre à jour une seule étiquette qui correspond à cette ligne. En activant le mode "Optimisation de la mise à jour", nous obtenons un gain de performance de plus de 2 fois supérieur.
J'ai décidé de tester plus en détail l'affichage sur les étiquettes, car cette période de test est trop petite pour lui, en raison de sa vitesse. Par conséquent, j'ai augmenté la période de test. Et j'ai obtenu les résultats suivants.
SansoptimizeUpdate : false
AvecoptimizeUpdate : true
J'ai ajouté tous les résultats à Excel
Le premier histogramme montre la comparaison globale, le second ne montre que la variante avec les étiquettes.
Conclusion : l'affichage créé sur CChartObjectLabel peut être 83,7 fois plus rapide que l'affichage équivalent sur CCanvas. Ce n'est pas pour rien que les opérations sur les pixels sont considérées comme les plus coûteuses de tous les programmes !
Je joins un tableau avec les résultats des tests. Le code source peut être téléchargé à partir du site KB: https://www.mql5.com/ru/code/33898.