Erreurs, bugs, questions - page 1547
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
Il semble que ce ne soit pas le cas.
ChartRedraw fera cependant 100% du travail en quatre.
Et il s'est av éré que c'était OK dans cinq ans également.
Ainsi, ChartRedraw fonctionnera parfaitement sur les deux plateformes.
Lorsque CHARTEVENT_CHART_CHANGE arrive, je fais un calcul qui dure parfois une seconde/soirée. Si, pendant le calcul, par exemple, un graphique est déplacé, après le calcul, CHARTEVENT_CHART_CHANGE est à nouveau appelé depuis la file d'attente.
Est-il possible de savoir pendant le calcul qu'il y a quelque chose dans la file d'attente des événements ? Ne pourrait-il pas alors faire un calcul qui n'est plus pertinent, l'interrompre et commencer un nouveau calcul ?
Par exemple, si même une partie de calcul très lourde comporte une vérification de IsStopped(), alors la fermeture du conseiller expert serait instantanée, sans attendre le calcul.
Voici quelque chose de similaire, mais pas avec l'événement de fermeture, mais avec ChartEvent.
Lorsque CHARTEVENT_CHART_CHANGE arrive, je fais un calcul qui dure parfois une seconde/soirée. Si, pendant le calcul, par exemple, un graphique est déplacé, après le calcul, CHARTEVENT_CHART_CHANGE est à nouveau appelé depuis la file d'attente.
Est-il possible de savoir pendant le calcul qu'il y a quelque chose dans la file d'attente des événements ? Ne pourrait-il pas alors faire un calcul qui n'est plus pertinent, l'interrompre et commencer un nouveau calcul ?
Par exemple, si même une partie de calcul très lourde comporte une vérification de IsStopped(), alors la fermeture du conseiller expert serait instantanée, sans attendre le calcul.
Voici quelque chose de similaire, mais pas avec l'événement de fermeture, mais avec ChartEvent.
faire un deuxième fil de traitement (sous la forme d'un timer ms, par exemple)
et exactement là pour effectuer le calcul, à condition que l'indicateur de compteur==XXX soit activé, incrémenté à CHARTEVENT_CHART_CHANGE.
Ainsi, vous récupérez rapidement la totalité de la file d'attente des ChartEvent, vous définissez un indicateur et, parallèlement, le timer vérifie cet indicateur et le calcule.
---
Dans le même temps, vérifiez la valeur du compteur de drapeaux. Il est possible d'arrêter le calcul si la valeur actuelle du compteur est supérieure à la valeur à laquelle le calcul a été lancé. C'est une sorte d'IsNewChanged.
Vous ratissez donc très rapidement toute la file d'attente des ChartEvent, définissez un drapeau et, en parallèle, le timer tire ce drapeau et le calcule.
Le Service Desk a fait cette déclaration
SetIndexBuffer делается однократно на вызове OnInit
Quelqu'un utilise-t-il SetIndexBuffer pas dans OnInit et/ou de manière répétée ? Dans MT4, je l'utilise tout le temps. Dans MT5, vous ne pouvez pas le faire, malheureusement.
Vous voulez dire que les événements ChartEvent et Timer fonctionnent en parallèle ?
même s'ils sont exécutés séquentiellement - rien ne vous empêche d'utiliser au moins ceci.
vous supprimez instantanément l'ensemble du ChartEvent et ne mettez qu'un seul ordre.
---
sur le parallélisme des événements de la minuterie et du graphique est une question pertinente.
Demandez au servicedesk.
même s'ils sont exécutés séquentiellement - rien ne vous empêche d'utiliser au moins ceci.
vous supprimez instantanément l'ensemble du ChartEvent et ne mettez qu'un seul ordre.
---
sur le parallélisme des événements de la minuterie et du graphique est une question pertinente.
Demandez au Service Desk.
Personne ne lit la documentation...
Le terminal client envoie les événements générés aux graphiques ouverts correspondants. Les événements peuvent également être générés par des graphiques (événements graphiques) ou des programmes mql5 (événements personnalisés). La génération d'événements de création et de suppression d'objets graphiques sur un graphique peut être activée ou désactivée en définissant les propriétés CHART_EVENT_OBJECT_CREATE et CHART_EVENT_OBJECT_DELETE d'un graphique. Chaque programme mql5 et chaque graphique a sa propre file d'attente d'événements, où tous les nouveaux événements sont stockés.
Le programme ne reçoit des événements que de la carte sur laquelle il est exécuté. Tous les événements sont traités un par un dans l'ordre de leur réception. S'il y a déjà un événement NewTick dans la file d'attente ou si cet événement est en cours de traitement, un nouvel événement NewTick n'est pas placé dans la file d'attente du programme mql5. De même, si la file d'attente du programme mql5 contient déjà l'événement ChartEvent ou si un tel événement est en cours de traitement, un nouvel événement de ce type ne sera pas mis en file d'attente. Les événements de temporisation sont traités selon le même schéma - s'il existe un événement de temporisation dans la file d'attente ou si l'événement de temporisation est déjà traité, un nouvel événement de temporisation n'est pas placé dans la file d'attente.
Personne ne lit la documentation...
Personne ne lit la documentation...
Cela fait longtemps
Alors vous ne pouvez pas interrompre le calcul par un événement.
Ok, regardez de l'autre côté alors.
Vous pouvez mettre en parallèle de manière artificielle - en plaçant un deuxième indicateur sur le graphique.
Et en accédant à GlobalVariableSetOnCondition à partir des deux.