La toile est cool ! - page 82

 
Vitaliy Kuznetsov #:

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

J'espère que l'amélioration de l'Expert Advisor 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 ...

Regardez dans tout le code (indicateur et Expert Advisor) pour trouver où et pourquoi ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName, etc. sont appelés - ils sont synchrones et peuvent sérieusement ralentir tout. Essayez de vous en débarrasser si possible.

N'oubliez pas d'appeler ChartRedraw() !!!! ci-dessus...

 

Messieurs les modérateurs, on m'attribue toutes sortes d'inepties et je n'ai pas le droit de répondre ? Incroyable !

 
Maxim Kuznetsov #:

Regardez dans tout le code (indicateur et EA) pour trouver où et pourquoi ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName, etc. sont appelés - ils sont synchrones et peuvent sérieusement ralentir tout. Essayez de vous en débarrasser si possible.

N'oubliez pas d'appeler ChartRedraw() !!!! ci-dessus...

Vous devez juste utiliser OnChartEvent() judicieusement et ne pas réagir à tous les événements à la suite. Ou alors je ne sais pas ce qu'il y a là... Et pourquoi s'asseoir ici et réfléchir pour le gars qui ne veut même pas condescendre à montrer le code avec le problème ?

Maintenant, j'ai inséré une boucle de 1000000 répétitions de ObjectFind() et ObjectGet() - tout est normal.

 
Dmitry Fedoseev #:

Messieurs les modérateurs, on m'attribue toutes sortes d'inepties et je n'ai pas le droit de répondre ? Incroyable !

Vous n'êtes pas le seul à être soumis à une telle sélectivité.

 
Dmitry Fedoseev #:

Il suffit d'utiliser la fonction OnChartEvent() à bon escient et de ne pas réagir à tous les événements à la suite. Ou je ne sais pas ce que c'est.... Et pourquoi s'asseoir ici et penser pour le gars qui ne prend même pas la peine de montrer le code avec le problème ?

Maintenant, j'ai inséré une boucle de 1000000 répétitions de ObjectFind() et ObjectGet() - tout est normal.

Bon, je vais l'écrire pour la quatrième fois, ce n'est pas difficile pour moi.

https://www.mql5.com/ru/forum/379526/page9#comment_25865481


Si vous ouvrez le lien, vous trouverez une pièce jointe avec le code en bas du post. Vous pourrez alors lire les messages, par qui et comment la discussion s'est développée.

Le problème n'est pas spécifiquement dans le code proposé (vous pouvez écrire vous-même n'importe quel Expert Advisor avec un objet), mais dans une erreur globale qui affecte tous les Expert Advisors avec des objets (avec une seule exception) lorsqu'on travaille avec la fonction de changement de graphique par le biais d'un indicateur.

Nikolay a proposé sa solution, mais j'ai des erreurs avec le travail d'un tel code, je suis en train de traiter le problème plus avant.

Новая версия платформы MetaTrader 4 build 1350 - Если у вас проблемы с дешбордами, то придется удалять объекты чарта.
Новая версия платформы MetaTrader 4 build 1350 - Если у вас проблемы с дешбордами, то придется удалять объекты чарта.
  • 2021.11.10
  • www.mql5.com
точнее в очередностях OnInit удалении своих объектов чарта. Тут ремонт терминала не имеет смысла не создавайте объектов по крайней мере до первого OnChartEvent. И удалять объекты пачкой лучше по ChartObjectsDelete
 
Dmitry Fedoseev #:

Il suffit d'utiliser la fonction OnChartEvent() à bon escient et de ne pas réagir à tous les événements à la suite. Ou je ne sais pas ce que c'est.... Et pourquoi s'asseoir ici et penser pour le gars qui ne prend même pas la peine de montrer le code avec le problème ?

Maintenant, j'ai inséré une boucle de 1000000 répétitions de ObjectFind() et ObjectGet() - tout est normal.

J'ai un vague doute : avez-vous déjà écrit quelque chose de plus compliqué qu'une boucle ?

 
Vitaliy Kuznetsov #:

Bon, j'écris pour la quatrième fois, ce n'est pas un problème pour moi.

https://www.mql5.com/ru/forum/379526/page9#comment_25865481


Si vous ouvrez le lien, vous trouverez une pièce jointe avec le code au bas de l'article. Vous pourrez alors lire les messages, par qui et comment la discussion s'y est développée.

Le problème n'est pas spécifiquement dans le code proposé (vous pouvez écrire vous-même n'importe quel Expert Advisor avec un objet), mais dans une erreur globale qui affecte tous les Expert Advisors avec des objets (avec une seule exception) quand on travaille avec la fonction de changement de graphique via un indicateur.

Nikolay a proposé sa solution, mais j'ai des erreurs avec le travail d'un tel code, je suis en train de traiter le problème plus avant.

Voici les changements :

   if(sparam=="Win_Ea_"){ // вот тут надо поцивильней сделать, из класса брать имя... но уж сами как-нибудь 
      if(id == CHARTEVENT_OBJECT_CLICK){
         if(win.BtnClickUP()){
         
            win.Process();
            
            ChartPeriodSet(true);
            
         }
         if(win.BtnClickDN()){
         
            win.Process();
            
            ChartPeriodSet(false);
            
         }
      }
   }
   if(id == CHARTEVENT_MOUSE_MOVE){
      MouseX=(int)lparam;
      MouseY=(int)dparam;
      
   }

J'ai réussi à me débarrasser des blocages terribles. Et si vous appuyez sur les boutons à un rythme mesuré, tout va bien.

Mais si vous commencez à frapper comme un pivert, vous obtenez à nouveau des blocages, mais ils sont différents et plus courts. Je ne pense pas qu'il soit possible de s'en débarrasser.

qu'il est impossible de s'en débarrasser. C'est peut-être lié à la construction du calendrier.

Je dois travailler sur les boutons pour qu'il y ait des positions appuyées/désappuyées et introduire de l'inertie pour que le bouton ne soit pas appuyé immédiatement.

Un délai de 0,1 seconde réglerait la situation et l'utilisateur ne le remarquerait pas.

--

En fait, sans l'aide d'un expert, vous pouvez marteler les boutons à un rythme effréné....

 

Et voilà, je me suis complètement débarrassé des suspensions.

C'est peut-être tordu, mais l'essentiel est là :

void windows_class::~windows_class(){
   //Canvas.Destroy();
}
int OnDeinit(const int r){
   if(r==REASON_REMOVE){
      Canvas.Destroy();
   }
}

Il s'agit de ne pas supprimer un objet en changeant de graphique.

Nous devrions voir ce qui se passe lorsque Destroy()... s'il est possible de le laisser comme ça...

 

Bonjour à tous !)

Je m'excuse, mais si nous parlons de mq4, alors peut-être que cela peut être résolu comme ceci : ?)

void OnChartEvent(const int     id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id == CHARTEVENT_CLICK
   || id == CHARTEVENT_CHART_CHANGE)
   {ChartSetSymbolPeriod(0,NULL,0);}
}
 

C'est ce qui peut créer des freins :

void OnTick(void){
  win.Process();
}

Pourquoi ?

Raison: