Erreurs, bugs, questions - page 2473

 
Très cool, merci beaucoup.
Est-il possible d'obtenir un accès alpha à MT avec le support des espaces de noms ?
J'ai vraiment besoin, dans le cadre d'une étude, d'être capable d'écrire un "conteneur intelligent", et non de rechercher des bogues/vulnérabilités, etc.
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

Sergey Dzyublik, 2019.05.23 13:52

J'ai travaillé avec mon courtier pour la dernière fois, et j'ai découvert une douzaine de bugs et de "particularités" dans MT.
Comment savoir si cela vaut la peine d'attendre qu'ils soient réparés ou non ?
S'il vous plaît, ne suggérez pas de tout tester à chaque fois qu'une nouvelle version sort.

(non corrigé dans MT5(build 2059))"Erreur de compilation lors du passage du paramètre (void*)(NULL) à la fonction template".
(corrigé dans MT5(build 2059)) "Testeur de stratégie : 2 passes prévues, mais en pratique un nombre infini de passes > 900pc en raison de "OnInit critical error"".
(non corrigé dans MT5(build 2059))"Valeur invalide du champ de taille du tableau dans l'opérateur d'affectation par défaut pour les structures avec tableaux dynamiques".
(non corrigé dans MT5(build 2059))"Le compilateur ne voit pas le constructeur de copie de classe par défaut lorsqu'il retourne un objet de classe par valeur depuis une fonction".
(corrigé dans MT5(build 2059)) "Le compilateur ne voit pas le type cast "in itself" pour les classes de motifs et les structures "complexes"".
(non corrigé dans MT5(build 2059))"Lorsque vous travaillez avec typedef, l'utilisation d'une fonction template avec une spécialisation explicite ne génère pas de code pour cette fonction template.
(non corrigé dans MT5(build 2059))"Erreur de compilation lors de la réutilisation de la même signature de fonction dans un typedef".
#
(non corrigé dans MT5(build 2059))"Une partie importante des fonctions de traitement des chaînes de caractères ne fonctionne pas avec des caractères NULL dans une chaîne de caractères (par exemple : ShortArrayToString, StringInit, StringFill)".
(non corrigé dans MT5(build 2059))"La fonction StringSetLength ne fonctionne que pour "couper" la longueur de la chaîne, pas pour l'augmenter.
#(corrigé dans MT5(build 2057))"Strategy Tester : 750 processus "metatester64.exe" sont en cours d'exécution".
"Forum www.mql5.com, lors de la modification d'un message avec une image, l'image précédente n'est pas remplacée par la nouvelle".


Suggestions :
"Autoriser l'utilisateur à forcer la génération/suppression de code pour l'opérateur d'affectation par défaut (constructeur de copie)".
"Permettre à ArrayCopy de copier des classes et des structures "complexes", de façon similaire à la façon dont les structures fournissent une fonctionnalité de copie profonde pour tout type d'objet".
# Fournir une fonctionnalité permettant à l'utilisateur de lire/définir la valeur de capacité lorsqu'il travaille avec des tableaux dynamiques.

"Changements pour améliorer les infographies du service Signaux"


 

Aujourd'hui, dans mon terminal, l'historique des ticks sur mon compte réel de marché à terme, courtier Otkritie, n'est pas téléchargé.

Les données du téléscripteur sont en train de changer.

C'est maintenant 24.05.2019 23:40

Le terminal a la dernière tique pour le 23.05.2019.


Même situation sur certains autres instruments, y compris ceux sur lesquels j'ai moi-même effectué des transactions.

Sur un second terminal (configuration distincte), sur un autre compte du même courtier, l'effet est le même.

 
Pouvez-vous dire si un expert travaille en mode optimisation ou en mode test unique ?
 
MT5 (build 2059)
Erreur de compilation lors du passage du paramètre (void*)(NULL) à la fonction template :
class C{
public:
   template<typename T>
   static void func(T ){
      Print(__FUNCSIG__);
   }
};


void OnStart(){  
   void* c_ptr = new C();
   
   C::func((C*)NULL);     // Ok
   C::func(c_ptr);        // Ok
   C::func((void*)NULL);  // 'void' - illegal use of 'void' type
   
   delete c_ptr;
}
Tout fonctionnait dans (build 2057), peut-être que quelque chose a été gâché dans le cadre de la correction :
et#"Erreur de compilation lors de l'exécution du type cast "itself" pour les classes template et les structures "complexes"".
 
Par analogie avec le C++, il serait peut-être judicieux d'introduire un pointeur nullptr "à part entière" ?
 

Dans la version 2056, tout fonctionnait bien. Mais en 2059, il y a déjà une erreur de compilation :

void OnStart()
{
class A {};
//#define void  A //(*)
        const void *p1;
              void *p2 = (void *)p1; //Error: 'void' - class type expected
}

Et si on remplace void par A (*), tout est ok. Quelle différence cela fait-il ?

De plus, une erreur de compilation se produit même dans ce cas :

              void *p2 = (void *)p1; //Error: 'void' - class type expected
 

Lors de la compilation en commande build 2059x32 erreur abstraite :

mais ne se reproduit pas via l'IDE - pourrait être un accident

 
A100:

Comment choisir entre l'utilisation de templates et de void* ?

 
fxsaber:

Comment choisir entre l'utilisation de templates et de void* ?

Il n'y a pas d'approche particulière, c'est juste une question d'intuition.