Erreurs, bugs, questions - page 2976
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Soit je suis un idiot, soit les skis ne bougent pas ? mt4 build 1320
Je n'ai pas cherché à savoir en détail pourquoi Kanvas est lent, mais je pense que c'est pour la même raison... Les pixels du tableau ne peuvent pas être modifiés de manière sélective et recevoir une commande de redécoupage. Vous apportez d'abord des modifications au tableau, puis vous devez ResourceCreate. Ce dernier copie les pixels un par un, puis, de la même manière, les affiche un par un, avant de mettre à jour le graphique (ChartRedraw). Combien d'opérations inutiles... Cela permettra en tout cas de tuer la charge du processeur lorsqu'il est occupé à traiter des données utiles. Alors que les étiquettes prennent au moins moins de pixels (et donc une sortie plus rapide). Et puis, leur mécanisme de sortie est entièrement dans le graphique (pas besoin de passer un tableau). Bien que je ne sois pasentièrement sûr de leur algorithme, je pense qu'ils sont plus rapides. J'avais l'habitude de faire un panneau de sortie de texte basé sur un canevas. En testant visuellement le conseiller expert avec un tel panneau dans le testeur, je n'ai pas été très impressionné par le résultat. En plus de la charge propre à l'EA, le redécoupage du panneau était plutôt gênant. Le panneau est constamment mis à jour(ResourceCreate -ChartRedraw) à chaque tick. En même temps, je n'ai jamais remarqué de tels ralentissements avec les étiquettes.
Je n'ai pas cherché à savoir en détail pourquoi Kanvas est lent, mais je pense que c'est pour la même raison... Les pixels du tableau ne peuvent pas être modifiés de manière sélective et recevoir une commande de redécoupage. Vous apportez d'abord des modifications au tableau, puis vous devez ResourceCreate. Ce dernier copie les pixels un par un, puis, de la même manière, les affiche un par un, avant de mettre à jour le graphique (ChartRedraw). Combien d'opérations inutiles... Cela permettra en tout cas de tuer la charge du processeur lorsqu'il est occupé à traiter des données utiles. Alors que les étiquettes prennent au moins moins de pixels (et donc une sortie plus rapide). Et puis, leur mécanisme de sortie est complètement intégré au graphique (pas besoin de passer un tableau ). Bien que je ne sois pas entièrement sûr de leur algorithme, je pense qu'ils sont plus rapides. J'avais l'habitude de faire un panneau de sortie de texte basé sur un canevas. En testant visuellement l'EA avec un tel panneau dans le testeur, je n'ai pas été très impressionné par le résultat. En plus de la charge propre à l'EA, le redécoupage du panneau était plutôt gênant. Il y a une mise à jour constante ( ResourceCreate - ChartRedraw ) à chaque tick. Je n'ai pas remarqué de tels ralentissements avec les étiquettes.
@Ilyas
Bug du compilateur ? Construire 2817.
Il ne semble que pour vous.
Comment savez-vous que les étiquettes sont basées sur canva, si canva lui-même est un add-on de OBJ_BITMAP_LABEL et que l'étiquette est OBJ_LABEL ?
Pendant que je discutais ici sur le forum, j'ai déjà esquissé le panneau de sortie sur les étiquettes, avec un nombre donné de lignes et de colonnes. Et pour la toile, j'ai d'autres tâches, dans mes autres applications. Et cela fonctionne très bien là aussi.
Ne parlez pas de ce que vous ne connaissez pas. @Nikolai Semko a tout à fait raison, et Canvas fonctionne rapidement et sans aucun problème ou défaut.
Donc vous savez probablement tout ? Alors, partagez vos connaissances ou des liens où vous pouvez lire sur les graphiques dans MetaTrader afin que je sache ce que vous savez aussi ? :)
@Ilyas
Bug du compilateur ? Construire 2817.
Dans MQL, const n'est pas const du tout. En fait, la constance nepeut êtreécrite qu'au travers d'une macro
Dans MQL, const n'est pas const du tout. En fait, la constance ne peut être écrite que par le biais d'une macro.
Oui, c'est donc une erreur :-D
Notez que ce n'est pas dans un seul cas, mais dans tous (1) (2) (3) (4) il est conçu de cette façon : avec (*) il y aura une erreur, mais avec (**) c'est OK. Les constantes ne sont pas considérées comme une entité.
Notez que ce n'est pas dans un seul cas, mais dans tous (1) (2) (3) (4) il est conçu de cette façon : avec (*) il y aura une erreur, mais avec (**) c'est OK. Les constantes ne sont pas considérées comme une entité.
Intéressant, comment avez-vous déterminé que les étiquettes sont basées sur le canevas, si le canevas lui-même est un add-on à OBJ_BITMAP_LABEL, et que l'étiquette est OBJ_LABEL ?
Pendant que je discutais ici sur le forum, j'ai déjà esquissé le panneau de sortie sur les étiquettes, avec un nombre donné de lignes et de colonnes. Et pour la toile, j'ai d'autres tâches, dans mes autres applications. Et cela fonctionne très bien là aussi.
Donc vous savez probablement tout ? Alors peut-être partagez-vous vos connaissances ou des liens où vous pouvez lire sur les graphiques dans MetaTrader, afin que je sache ce que vous savez aussi ? :)
MT est écrit en C++. Il suffit donc de comprendre comment GDI est configuré et comment toutes les sorties graphiques en C++ fonctionnent via DC (device context) pour comprendre comment les graphiques fonctionnent dans MT.
Il peut y avoir une certaine confusion avec le concept de Canvas. Ce n'est pas une bibliothèque CCanvas. Fondamentalement, ce concept dans divers langages de programmation peut être simplifié en un simple concept de tableau de pixels (BitMap).
C'est ce que je veux dire quand je parle de kanvas.
Dans MQL, on accède à ce tableau de pixels par l'intermédiaire deOBJ_BITMAP_LABEL et OBJ_BITMAP.
Tous les autres OBJ_, y compris OBJ_LABEL et OBJ_TEXT, sont finalement dérivés de bitmaps. Tout ce que vous voyez à l'écran (pas seulement MT) est en fin de compte l'œuvre deDisplay DC, qui est inextricablement lié à un tableau de pixels, dont chacun occupe 4 octets (RVB et un octet exta supplémentaire qui existait à l'origine pour l'alignement, mais qui est surtout utilisé pour la transparence (canal alpha)).