Erreurs, bugs, questions - page 2081

 
Les commentaires non pertinents pour ce sujet ont été déplacés vers "BUY_LIMIT, ORDER_TIME_DAY".
 
Vladimir Karputov:

Oui, je confirme :

l'animation :

Merci. Ajout d'un lien vers votre message à l'application servicedesk en tant qu'addendum. Besoin d'un correctif d'urgence pour ce bug, tout le travail a été arrêté.
 

fxsaber:

Les deux terminaux ont deux onglets - Commerce et Courrier. Je veux que "Trading" soit actif en permanence. Mais lorsqu'un courriel interne (par exemple un remplissage partiel) du courtier arrive, l'onglet passe à "Mail".

Comment j'éteins ce truc vraiment méchant ? Eh bien, il ne devrait pas y avoir de notification aussi intrusive, qui plus est dans les courriels de courtiers tout à fait ordinaires, où il informe automatiquement de l'exécution des ordres des dizaines de fois par jour. Je ne comprends pas pourquoi parfois il passe à "Mail" et parfois non.

Comment puis-je l'éteindre ? Je ne lis jamais l'onglet "Courrier électronique", car c'est du spam. Pour dire les choses gentiment, c'est ennuyeux de voir l'interface graphique du terminal réagir comme ça au spam.


Je pense que je peux utiliser WinApi pour mettre en œuvre une fonction permettant de passer à l'onglet souhaité : commerce, balance, etc.
Essayez de le mettre en œuvre vous-même, ou commandez-le à des indépendants, j'espère qu'il y a encore des gens compétents.

 
Sergey Dzyublik:

Je pense qu'en utilisant WinApi, vous pouvez implémenter une fonction permettant de passer à l'onglet souhaité : commerce, balance, etc.
Essayez de l'implémenter vous-même, ou commandez-la à Freelancer, j'espère qu'il y a encore des personnes compétentes là-bas.

J'ai moi-même pratiqué cette perversion. Je veux une interface utilisateur conviviale.

 
Aleksey Vyazmikin:

Il a encore perdu la mémoire...

Même s'il y a encore 7 gigaoctets de RAM disponibles. Qu'est-ce que c'est que ça ?

Ouvrez un ticket avec le Service Desk. Incluez l'expert et les paramètres d'optimisation.

+ décrire le système d'exploitation, le débit binaire, la configuration du système.

 
Alexey Da:

Ouvrez un ticket avec le Service Desk. Attachez l'expert et les paramètres d'optimisation.

+ décrire le système d'exploitation, le débit binaire, la configuration du système.


Je ne sais pas comment reproduire tout cela - la semaine dernière, ce message apparaissait tous les jours, et l'EA ne fonctionnait pas du tout. Et l'autre jour avec l'optimisation... puis tout a fonctionné après avoir fermé tous les programmes.

Peut-il s'agir d'un conflit entre programmes ? J'ai remarqué que le bug était toujours présent lorsque le navigateur Opera était ouvert.

 

Dans ce fil de discussion, j'ai découvert une chose intéressante concernant les performances de la commande Comment() dans MT4 et MT5. Dans MT5, cette commande fonctionne ~2000 fois ( !!!) plus lentement que dans MT4.

Voici le code de test qui fonctionne sur les deux plateformes :

#property script_show_inputs
#include <Canvas\Canvas.mqh>

input uint   FontSize=12;                                   // размер шрифта
input uint   Count=1000;                                    // размерность цикла
input ENUM_COLOR_FORMAT format=COLOR_FORMAT_ARGB_NORMALIZE; //Способ обработки цвета

void OnStart()
  {
   CCanvas Text;
   ulong ColorScreen=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);

   Text.FontSet("Arial",FontSize);
   string str="Необходимо подождать.Выполняется проход цикла №: = ";
   int H=Text.TextHeight(str);
   int W=Text.TextWidth(str+"00000");
   if(!Text.CreateBitmapLabel(0,0,"FONT",2,130,W,H,format)) Print("Error creating canvas: ",GetLastError());

   ulong t1=1,t2=1,t0;
   uint j=0;
   color clr=(color)ARGB(255,255^GETRGBR(ColorScreen),255^GETRGBG(ColorScreen),255^GETRGBB(ColorScreen));
   t0=GetMicrosecondCount();
   for(j=0;j<Count;j++)
     {
      Comment(str+IntegerToString(j));
      if (IsStopped()) break;
     }
   t1=GetMicrosecondCount()-t0;

   t0=GetMicrosecondCount();
   for( j=0;j<Count;j++)
     {
      Text.Erase((color)ColorScreen);
      Text.TextOut(0,0,str+IntegerToString(j),clr);
      Text.Update();
      if (IsStopped()) break;
     }
   t2=GetMicrosecondCount()-t0;
      Text.Erase((color)ColorScreen);
      Text.TextOut(0,0,"Время Comment = "+IntegerToString(t1)+" Время Canvas = "+IntegerToString(t2),clr);
      Text.Update();
      Sleep(30000);
     
   Text.Destroy();
   Comment("");
  }
//+------------------------------------------------------------------+

Est-ce que ça va ?

Dossiers :
 
Nikolai Semko:

Dans ce fil de discussion, j'ai découvert une chose intéressante concernant les performances de la commande Comment() dans MT4 et MT5. Dans MT5, cette commande fonctionne ~2000 fois ( !!!) plus lentement que dans MT4.

Voici le code de test qui fonctionne sur les deux plateformes :

Est-ce que ça va ?

Oui, c'est exact et correct.

Dans MT4, la fonction Commentaire modifie simplement la zone de texte de commentaire interne sans essayer de l'afficher sur le graphique. En d'autres termes, le commentaire s'affichera lors du prochain rendu régulier du graphique, mais la modification du commentaire lui-même n'entraînera pas un nouveau rendu du graphique. Si vous modifiez rapidement le commentaire, sa modification ne sera pas visible dans le graphique.

Dans MT5, la fonction Commentaire entraîne explicitement le redessin du graphique, car la priorité est donnée à l'affichage du commentaire dans le graphique. Sinon, la fonction est inutile.

C'est exactement la différence.


Si dans MT4 vous mettez ChartRedraw() de force après avoir appelé Comment, le comportement ne sera toujours pas le même que dans MT5. ChartRedraw() dans Metatrader 4 ignore la valeur du commentaire et décide lui-même si le graphique doit être mis à jour à partir de la dernière image ou non. Bien sûr, en l'absence de centaines de cotations par seconde qui entraîneraient une désactivation des données du graphique, ChartRedraw décide "pourquoi dessiner un graphique inchangé" et saute le dessin du cadre.

Metatrader 5 a également le même système, mais il y a beaucoup plus de cas où le tirage inconditionnel est prioritaire.

Les terminaux sont des applications graphiques et peuvent fournir des centaines d'images par seconde et fonctionner en mode d'affichage économique pour des raisons de performance.


D'où des conclusions supplémentaires lors de l'exécution des benchmarks :

  • on ne peut pas considérer un appel ChartRedraw comme un vrai ChartRedraw

  • vous devez toujours savoir et prouver les affirmations "pourquoi un graphique sera redessiné" et "est-ce que j'invalide l'image interne du marché, de sorte que le terminal décide de redessiner le graphique".

  • vous ne devez pas tirer de conclusions multiples dans MT5 pendant les benchmarks, vous devez toujours réfléchir à la manière dont vous affectez le rendu

  • MT5 dispose d'un système plus correct de modification des objets sur le graphique et il est nécessaire de bien comprendre les conséquences des commandes de lecture/écriture du mélange.
    il est recommandé de ne pas mélanger les commandes de lecture et d'écriture, et d'effectuer la lecture et l'écriture en masse séparément.

  • Le redessin fréquent des graphiques dans les benchmarks entraîne une forte dépendance des résultats à la carte graphique.
    en fait, certains tests peuvent finir par tester la carte graphique plutôt que les algorithmes ou les fonctions. le test sur un ordinateur portable et un ordinateur de bureau peut montrer des résultats plusieurs fois différents simplement à cause d'une carte graphique 3 à 5 fois plus lente.

Ces erreurs sont commises en permanence par tout le monde.

 
Renat Fatkhullin:

Oui, c'est exact et correct.

Merci beaucoup pour cette réponse détaillée. C'est à peu près ce que je pensais. Tout a un sens.

 
Anatoli Kazharski:

Les indicateurs ne fonctionnent plus correctement. Se déplace vers la droite lorsque de nouvelles barres se forment sans calcul sur de nouvelles données. Demande n° 1899266.

Secondé ! L'indicateur se déplace vers la droite.
Raison: