Malheureusement, à l'heure actuelle, les types de pointeurs de fonction dans MT4/MT5 sont très limités et peu pratiques en raison de certains défauts : #(non corrigé dans MT5(build 2060))"Erreur de compilation lors de l'utilisation répétée de la même signature de fonction dans un typedef". #(non corrigé dans MT5(build 2060))"Lorsque l'on travaille avec typedef, l'utilisation d'une fonction template avec une spécialisation explicite ne génère pas de code pour cette fonction template".
Compte tenu de l'implémentation en cours de l'espace de noms, veuillez envisager d'implémenter la prise en charge de ce comportement dans le cadre des corrections de défauts de la prochaine version C++:
//#include <iostream>template<typename T>
class A{
public:
typedefvoid (*callback)(T&); //class namespace for function pointer type
callback f_ptr;
T data;
};
template<typename T>
class B{
public:
typedefvoid (*callback)(T&); //class namespace for function pointer type
callback f_ptr;
};
template<typename T>
void func(T& value){
++value;
}
voidOnStart(){
//int main(){
A<int> a;
B<int> b;
a.f_ptr = func<int>; // automatic code generation of templates functions
b.f_ptr = a.f_ptr; // assignment operation for function pointers with the same function signatures and different function pointer types.int x = 1;
b.f_ptr(x);
printf("%d\r\n", x); //2printf("%d\r\n", b.f_ptr == a.f_ptr); //1 // equal operation for function pointers with the same function signatures and different function pointer types.
}
#property strictvoid Func( int &[] ) {}
void Func( int &[][2] ) {} // 'Func' - function already defined and has bodyvoidOnStart()
{
int Array1[];
int Array2[][2];
Func(Array1);
Func(Array2); // 'Array2' - invalid array access
}
Il n'y a aucun problème à ce sujet dans MT5. Dans MT4, il n'y a aucun moyen de surcharger la fonction.
#(non corrigé dans MT5(build 2060))"Erreur de compilation lors de l'utilisation répétée de la même signature de fonction dans un typedef".
#(non corrigé dans MT5(build 2060))"Lorsque l'on travaille avec typedef, l'utilisation d'une fonction template avec une spécialisation explicite ne génère pas de code pour cette fonction template".
Compte tenu de l'implémentation en cours de l'espace de noms, veuillez envisager d'implémenter la prise en charge de ce comportement dans le cadre des corrections de défauts de la prochaine version C++:
Bonjour ! Veuillez prêter attention au sujet
https://www.mql5.com/ru/forum/314275
En bref, le testeur calcule une marge qui ne correspond pas à celle définie dans les paramètres du symbole.Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Nouvelle version de la plateforme MetaTrader 4 build 1170
fxsaber, 2019.05.28 12:10
S'agit-il d'un bogue dans le compilateur MT4 ?Il n'y a aucun problème à ce sujet dans MT5. Dans MT4, il n'y a aucun moyen de surcharger la fonction.
Légère anomalie dans MT 4 dans MT 5 non vérifié...
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Nouvelle version de la plateforme MetaTrader 4 build 1170
fxsaber, 2019.05.28 14:24
J'ai remarqué une différence entre MT4 et MT5. S'agit-il d'un bogue dans MT4 ?Cinq a fait une bonne initialisation de la statique. Au premier accès.
Quatre ne l'ont pas fait. Et on ne peut pas dire quand nous le ferons.
build 2062 : Erreur 5305 lors de la création d'un symbole personnalisé.
En 2060, tout va bien.
Je me souviens que dans MT4 il y avait une clé de ligne de commande /skipupdate
Existe-t-il quelque chose de similaire dans MT5 ? Comment puis-je désactiver les mises à jour ?
fxsaber:
MT4 est appelé, MT5 ne l'est pas.
Il semble que vous compilez avec un vieux compilateur. Compilez avec un compilateur moderne (fourni avec MT5) et tout ira bien.
Compilé jusqu'en 1966. J'ai essayé 2062 dans MT4 - cela fonctionne correctement. Merci !
C'est dommage qu'il n'y ait aucun moyen de le battre.
Aux développeurs.
Visualisation très peu pratique des valeurs des variables dans le débogueur.
Par exemple, les objets complexes ressemblent à ceci :
pour voir le contenu, vous devez le saisir manuellement :
même dans ce cas, le contenu de cet élément est dessiné en une chaîne de caractères et les valeurs des champs ne sont pas visibles.
Veuillez commenter - un développement dans la direction suivante est prévu. Par exemple :
Collection d'objets :
Appuyez sur F2 :
Tout élément de collection qui contient des champs peut être visualisé de la manière suivante :