La toile est cool ! - page 81

 
Dmitry Fedoseev travailler avec des objets dans le bureau du conseiller.

La solution au problème se trouve dans l'EA :

Peut-être que ObjectFind() n'est pas nécessaire.

Si vous aviez joint le code au problème, celui-ci aurait déjà été résolu hier

Ce n'est pas du tout le problème.
Ce problème ( gel de OnChartEvent) n'existe que dans MT4, et il n'est pas du tout évident. J'ai moi-même été tourmenté pendant très longtemps. Mais ce problème a déjà été abordé dans ce fil de discussion il y a environ un an.

 
Nikolai Semko #:

ce n'est pas du tout le problème.
Ce problème n'existe que dans MT4, et il n'est pas du tout évident. J'ai moi-même été tourmenté pendant très longtemps. Mais cela a déjà été discuté dans ce fil il y a environ un an.

Je ne sais pas du tout quel est le problème, j'ai juste écrit ce qui le cause et comment il est résolu. Mais vous pouvez continuer à souffrir...

 
Dmitry Fedoseev #:

Et je ne sais pas du tout quel est le problème, j'ai juste écrit ce qui le cause et comment il est résolu. Mais vous pouvez continuer à souffrir.

Ces mots devraient être gravés dans la pierre ! :))
 
Dmitry Fedoseev #:

Et je ne sais pas du tout quel est le problème, j'ai juste écrit ce qui le cause et comment il est résolu. Mais vous pouvez continuer à souffrir.

Le problème deunit n'a rien à voir avec cela. Ce problème ne se produit qu'avec MT5. Et nous parlons ici de MT4.

 
Nikolai Semko #:

Vous êtes une personne étrange.
Vous voulez que les autres comprennent votre code et vos centaines de lignes lorsque vous posez une question, mais vous n'essayez même pas de pénétrer dans la réponse et de regarder dans le code de cent lignes.

D'accord. Je vais vous faciliter la vie.
Traduisez tout le code de OnChartEvent en OnTimer. Réglez la minuterie à 30 millisecondes. Vous ne devrez entrer que des variables globales (pas de terminal), qui devront être mises à jour dans OnChartEvent, et réinitialisées (qui sont bool) dans OnTimer.
Les variables peuvent être les
suivantes

Ce n'était pas du tout évident pour moi. J'ai appris en lisant le lien que j'ai donné plus haut que le problème est ancien et que sa solution a été recherchée même par des auteurs ayant plus de 10 000 ventes sur le marché plus d'une fois.

Et cela s'applique à tous les Expert Advisors MT4 avec objets, ce qui signifie qu'un grand nombre d'utilisateurs ont été confrontés à ce problème. Ils écrivent aux auteurs sur le marché, et ils ne connaissent pas la solution. C'est pourquoi il était si important de résoudre ce problème.

En regardant le GIF (preuve de faisabilité), je suis déterminé à mettre en œuvre cette approche dans mes produits. Je vais probablement m'asseoir, expérimenter et faire un rapport demain.
 
Vitaliy Kuznetsov #:

Pour moi, ce n'était pas du tout évident. Le lien que j'ai donné plus haut m'a appris que le problème est ancien et que sa solution a été recherchée même par des auteurs ayant réalisé plus de 10 000 ventes sur le marché, et ce plus d'une fois.

Et cela s'applique à tous les Expert Advisors MT4 avec objets, ce qui signifie qu'un grand nombre d'utilisateurs ont été confrontés à ce problème. Ils écrivent aux auteurs sur le marché, et ils ne connaissent pas la solution. C'est pourquoi il était si important de résoudre ce problème.

En regardant le GIF, je suis déterminé à mettre en œuvre cette approche dans mes produits. Je vais probablement m'asseoir, expérimenter et faire mon rapport demain.

Peut-être que la même chose peut être faite dans l'Expert Advisor.
Mais cela fonctionne sans décalage.

 
Nikolai Semko #:

Peut-être que la même chose peut être faite dans l'EA.
Mais cela fonctionne sans décalage.

Tout d'abord, merci !

Hmm, cela semble fonctionner dans le code donné. Mais il y a toujours des conflits avec les EA. Par exemple avec celui-ci - https://www.mql5.com/ru/code/35440.

J'ai également vérifié avec d'autres EAs. Je devrais essayer d'améliorer le code de l'EA. Le problème est toujours d'actualité.
cm partial closing position
cm partial closing position
  • www.mql5.com
Советник закрывает позиции частями и переводит их в безубыток.
 
Vitaliy Kuznetsov #:

Tout d'abord, merci !

Hmm, cela semble fonctionner dans le code donné. Mais il y a toujours des conflits avec les EA. Par exemple avec celui-ci - https://www.mql5.com/ru/code/35440.

J'ai également vérifié avec d'autres EAs. Je devrais essayer d'améliorer le code de l'EA. C'est toujours un problème.

Je ne vois aucun décalage.
Oui, vous devriez également ajuster le code de l'EA afin qu'il n'y ait pas de calculs dans OnChartEvent.
La règle est simple :
- les variables globales (non terminales) des événements et des coordonnées doivent être remplies dans OnChartEvent, mais n'exécutez pas de fonctions avec des calculsencombrants à partir de ce dernier .
- Tous les appels de ces fonctions doivent être effectués à partir de la minuterie en fonction des variables d'événement,
- après le traitement des événements, vous devez vous rappeler de réinitialiser ces événements dans la minuterie, de sorte que lors de la prochaine itération de la minuterie, vous n'exécutez pas à nouveau la même chose.

Je répète qu'il s'agit d'un bogue de gel de OnChartEvent uniquement dans MT4

. Ce qui est amusant, c'est que si MQ corrige ce bogue, qui est apparemment élémentaire ( OnChartEventfreeze if there are about 10 milliseconds of calculations inside of it) and is fixed so easily with the help of a timer, then many people will notice after recompiling their indicators or Expert Advisors, in which OnChartEvent is actively used, that everything is flying :)))
Ou peut-être s'agit-il d'un bug artificiel pour inciter les gens à passer à MT5 ;))))

 
Nikolai Semko #:

Je ne vois aucun décalage.
Oui, vous devriez également ajuster le code dans l'EA de sorte qu'il n'y ait pas de calculs dans OnChartEvent .
La règle est simple :
- les variables globales (pas terminales) des événements et des coordonnées doivent être remplies dans OnChartEvent, mais n'exécutez pas de fonctions avec des calculsencombrants à partir de là .
- Tous les appels de ces fonctions doivent être effectués à partir de la minuterie en fonction des variables d'événement,
- après le traitement des événements, vous devez vous rappeler de réinitialiser ces événements dans la minuterie, de sorte que lors de la prochaine itération de la minuterie, vous n'exécutez pas à nouveau la même chose.

Je répète qu'il s'agit d'un bogue de gel de OnChartEvent uniquement dans MT4

. Ce qui est amusant, c'est que si MQ corrige ce bogue, qui est apparemment élémentaire ( OnChartEventfreeze if there are about 10 milliseconds of calculations inside of it) and is fixed so easily with the help of a timer, then many people will notice after recompiling their indicators or Expert Advisors, in which OnChartEvent is actively used, that everything is flying :)))
Ou peut-être s'agit-il d'un bug artificiel pour inciter les gens à passer à MT5 ;))))

Il s'avère que la méthode d'amélioration du code de l'indicateur ordinaire ne peut pas résoudre le conflit avec les EA en code fermé qui utilisent des objets.

J'espère que l'amélioration de l'EA résoudra globalement le conflit avec tous les indicateurs de tableau de bord (ce qui est ma tâche).

J'ai écrit dans le fil MT4 build 1353, peut-être que les programmeurs du terminal y prêteront attention.

P.S. J'ai fait des changements dans les hiboux et quelque chose de skis ne va pas ...

 
Vitaliy Kuznetsov #:


P.S. Edited the owls and something skis did not go....

Êtes-vous sûr qu'il ne reste rien dans OnChartEvent avec des boucles et des appels d'autres fonctions ?
Mesurez
avec GetMicrosecondCount() le temps de calcul de ce qui se passe dans OnTimer (ou OnChartEvent ) .