Erreurs, bugs, questions - page 2733

 
Bogues MT5 (build 2402) problèmes avec la priorité d'appel des fonctions surchargées dans l'espace de noms :
1) lorsque la fonction d'un espace de nom global est surchargée ;
2) lorsque la fonction du système est surchargée.

void func(){
   printf("1");
}
      
namespace A{
   void func(){
      printf("2");
   }
   bool OrderSend(const MqlTradeRequest &trader_request, MqlTradeResult &trade_result){
      printf("2");
      return true;
   }
      
   class B{
      public:      
      void test(){
         func();                             // PRINT: 1   Expected result: 2
         
         MqlTradeRequest request;
         MqlTradeResult result;
         OrderSend(request, result);         // Compile Error: 'OrderSend' - override system function. Expected result: 2
      }
   };
};

void OnStart(){    
   A::B b;
   b.test();
}
 

Bonne journée !

Pouvez-vous me conseiller, j'ai un conseiller expert Sniper, il ne fonctionne pas dans la nouvelle version de MT4 Alpari, y a-t-il un moyen de le réparer ? Il n'est même pas installé sur la carte. Cela fonctionne sur la version 1090.

J'ai déjà enregistré ma copie de MT4, mais elle n'est pas connectée à l'Internet, elle indique "Ancienne version".

 
valera_nur:

Bonne journée !

Pouvez-vous me conseiller, j'ai un conseiller expert Sniper, il ne fonctionne pas dans la nouvelle version de MT4 Alpari, y a-t-il un moyen de le réparer ? Il n'est même pas installé sur la carte. Cela fonctionne sur la version 1090.

Mais le terminal MT4 ne peut pas se connecter à Internet avec la version 1090, il indique "Ancienne version".

Si vous avez le fichier source d'Expert Advisor, postulez à Freelance. Ils vous aideront.

Le meilleur moyen, bien sûr, est de contacter directement l'auteur du conseiller expert.

 

J'ai écrit une dll pour MQL5 qui crée un tableau graphique dans une fenêtre dans WinForms sur .Net. J'ai porté le code aux appels natifs pour MQL4.

mesuré la vitesse pour évaluer la vitesse de mise à jour de 5 colonnes et 5 lignes du tableau

  for(int j = 0; j < 3; j++)
   {
      uint start = GetTickCount();
      for(int i = 0; i < 100000; i++)
      {
         string s = (string)(i) + ";" + (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" +  (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n";
         TBL_FillAllTable(htbl, s);
      }
      uint time = GetTickCount() - start;
      PrintFormat("Цикл  %d время = %d ms", j, time);
   }

.....
void TBL_FillAllTable(int handle, string data, string  ColSeparator = ";", string RowSeparator = "\n")
{
#ifdef __MQL4__   refreshalldata(handle,data,ColSeparator,RowSeparator); #endif
#ifdef __MQL5__   SHARPTABLE::refreshalldata(handle, data,ColSeparator, RowSeparator); #endif
}
//+------------------------------------------------------------------+

MQL5 :

2020.05.05 22:55:33.220 tbl_tst (EURUSD,H1) Temps du cycle 0 = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Temps du cycle 1 = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Durée du cycle 2 = 143750 ms

MQL4 :

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1 : Temps du cycle 2 = 66813 ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1 : Time Frame 1 = 69219 ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1 : Öècle 0 temps = 67062 ms


le code de la dll est identique à 99%, je l'ai porté sous MQL4 en utilisant les exemples de l'articlehttps://www.mql5.com/ru/articles/249.


Il me semble qu'il y a une grande différence.

Dossiers :
tst_winforms.jpg  239 kb
 
Joignez votre code de bibliothèque + le code MQL complet pour que vous puissiez vérifier et reproduire à 100%.
 
Renat Fatkhullin:
Joignez votre code de bibliothèque + le code MQL complet, afin que vous puissiez vérifier et reproduire à 100%.

Voici le script de test

Je peux, en principe, envoyer des projets et des VS au PM.

 

le test ci-dessus a fonctionné :

2020.05.05 23:46:03.512 Terminal MetaTrader 5 x64 build 2402 started for MetaQuotes Software Corp.

2020.05.05 23:46:03.515 Terminal Windows 10 build 18363, Intel Core i3 M 380 @ 2.53GHz, 0 / 2 Go de mémoire, 149 / 237 Go de disque, IE 11, UAC, GMT+4

Le terminal n'est toujours pas mis à jour sur mon ordinateur portable :

2020.05.05 23:37:15.336 Terminal MetaTrader 5 - FXOpen x64 build 2280 démarré (FXOpen Investments Inc.)

2020.05.05 23:37:15.338 Terminal Windows 10 (build 18363) x64, IE 11, UAC, Intel Core i3 M 380 @ 2.53GHz, Mémoire : 1071 / 2804 Mb, Disque : 149 / 237 Gb, GMT+4

J'ai utilisé l'ancien code de construction que j'ai joint, j'ai obtenu un meilleur temps de test :

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Temps du cycle 0 = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Temps du cycle 1 = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Durée du cycle 2 = 69000 ms

 
Igor Makanu:

sur lequel le test ci-dessus a été effectué :

J'ai toujours un terminal non mis à jour sur mon ordinateur portable :

J'ai exécuté le code que j'ai joint sur l'ancienne version, j'ai obtenu un meilleur temps de test :

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Temps du cycle 0 = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Temps du cycle 1 = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Durée du cycle 2 = 69000 ms

J'ai la même vitesse sur mon 2404 que dans MT4.

 
Geess:

J'ai la même vitesse sur le 2404 que sur le MT4.

Je soupçonne que MT5 est devenu plus exigeant pour les ressources du PC, je le vérifierai demain sur mon PC, mon ordinateur portable est faible ((()

Ouais, voici une autre chose, confondu par la ligne de configuration du PC dans la nouvelle build - au-dessus de mon post, pour une raison quelconque la nouvelle build a écrit sur la mémoire de l'ordinateur portable :

0 / 2 Gb de mémoire

Les conditions de démarrage étaient les mêmes, avec seulement un ME et un terminal en fonctionnement.

ZS : mais le taux de rafraîchissement sur WinForm est inférieur à 1 ms .... de façon inattendue ;)

 
Les tests doivent être effectués correctement et très soigneusement.

Plus reproductible. De plus, il est hors de question d'exécuter la dll de quelqu'un d'autre sans la compiler vous-même à partir des sources.