Mise à jour de MQL4 et de l'ancien code (partage des expériences de résolution de problèmes) - page 2

 

Le code de cet article a également cessé de fonctionner. https://forum.mql4.com/ru/3481

Plus précisément, il ne peut ni écrire ni lire les fichiers du lecteur C.

 
J'ai un 509 bild. Aujourd'hui, j'ai vu que l'éditeur a changé. J'avais besoin de changer le lot dans le code d'EA, et pendant la compilation j'ai eu des erreurs liées à stdlib.mqh et stderror. J'ai copié ces fichiers dans /MQL4/Include et le conseiller expert a réussi à copier .
 

Mise à jour de la nuit ME sur les deux Real sur 509 et avec des positions ouvertes. Point s'est avéré être 0,0001 et Digits, respectivement, 4 ! J'ai dû faire les variables en urgence comme indiqué dans la documentation, mais le StopLoss est pour une raison quelconque fixé à zéro sur le 5ème chiffre. Et le seul indicateur DailyPivotPoints, que j'utilise pour "calmer ma conscience", a disparu. J'ai dû le recompiler.

Sur la démo, les points et les chiffres antérieurs mis à jour étaient normaux en même temps et les DailyPivotPoints ne se sont pas envolés.

 
Quelles histoires d'horreur vous racontez ici, cela devrait être raconté à l'heure du coucher, comme on le faisait dans les camps de pionniers))))
 
evillive:
Les horreurs que vous racontez ici, il faudrait les raconter la nuit, comme c'était le cas dans le camp des pionniers ;)))

Donc, nous allons venir à MT0 et seulement tout le lot. Jusqu'à présent, j'ai fait ce qui est décrit dans la documentation, et les points et les chiffres, quelle que soit la façon dont on les colorie, sont les mêmes que pour un lot à 4 chiffres.

  double point = MarketInfo(Symbol(),MODE_POINT);
  int   digits = MarketInfo(Symbol(),MODE_DIGITS);
Et la Démo est bien, relativement, bien sûr.
 
borilunad:

Donc, nous allons venir à MT0 et seulement tout le lot. Jusqu'à présent, j'ai fait ce qui est décrit dans la documentation, mais le point et les chiffres, peu importe comment vous les colorez, sont les mêmes que pour 4 chiffres.

Et la démo est bien, relativement, bien sûr.

Avez-vous mis à jour la référence ? Je suis entré et j'ai trouvé ce qui suit - ce n'était pas là avant.

-----------------------

int _Digits

La variable _Digits stocke le nombre de décimales après la virgule qui détermine la précision du prix du symbole graphique actuel.

Vous pouvez également utiliser la fonction Digits().

----------------------

J'ai vérifié, la ligne Print(_Digits, " ", Digits()) ; comme ceci sur AUDJPY et EURUSD donne le résultat suivant

2014.02.07 18:52:54.313 TestFileOpen EURUSD.e,M30 : 5 5
2014.02.07 18:52:33.317 TestFileOpen AUDJPY.e,M15 : 3 3

 
VDev:

Avez-vous mis à jour l'aide ? Je suis entré et j'ai trouvé ce qui suit - ce n'était pas là avant.

-----------------------

int _Digits

La variable _Digits stocke le nombre de décimales après la virgule qui détermine la précision du prix du symbole graphique actuel.

Vous pouvez également utiliser la fonction Digits().

Cela doit être lors du passage à un langage mis à jour, et je ne le fais pas, tout compile ! Mais il est très étrange que sur la démo avec le même Expert Advisor sur un autre terminal mis à jour le lundi, le point et les chiffres sont normaux, cinq chiffres, mais ici sur Real devrait obtenir cinq chiffres par MarketInfo() :((((

Ici, il y a un contrôle dans le commentaire sur le graphique :

  "\n\n                                  ",DoubleToStr(Point,Digits), //тут выводится 0.0001
  "\n                                  ",DoubleToStr(point,5),   //а тут с переменной 0.00001
Bien sûr, j'ai été "horrifié" lorsque le SL a été fixé à 10 fois sa valeur ! Je garde ce chèque pour l'instant en espérant qu'il fonctionnera correctement, et je le rangerai.
 

Il y aura d'autres problèmes, mais c'est un début))) Maintenant, le compilateur semble exiger une stricte conformité avec les langages normaux comme C/C++, et MQL5, bien sûr. C'est-à-dire que de telles absurdités ne peuvent plus être compilées.

switch(n)
{
case 1: double d=1; break;
case 2: d=2; break;
}
 
VDev:

Il y aura d'autres problèmes, mais c'est un début))) Maintenant, le compilateur semble exiger une stricte conformité avec les langages normaux comme C/C++, et MQL5, bien sûr. C'est-à-dire que de telles absurdités ne peuvent plus être compilées.

Je ne me laisse pas aller à de telles absurdités ! L'essentiel, c'est si... sinon - ça marche et c'est tout ! C'est vrai, l'interrupteur est dans les fonctions empruntées en dehors du départ, et tout fonctionne. Peut-être qu'il reprendra normalement lundi après un repos ! ;))
 
borilunad:
Je ne me mêle pas de ça ! L'essentiel est de savoir si...autre chose fonctionne et c'est tout ! Le véritable interrupteur est dans les fonctions empruntées en dehors du départ, et tout fonctionne. Peut-être qu'il reprendra normalement lundi après un repos ! ;))
Je n'ai essayé cette version que pendant une heure aujourd'hui, je n'en suis pas conscient. Une de mes connaissances m'a fait rire aujourd'hui )))). Il adore mettre des points dans les noms de variables. Je lui ai dit pendant longtemps - changez-le en soulignement. Aujourd'hui, il n'a pas bien compilé. Alors il me dit - pourquoi, parce que maintenant les variables doivent juste devenir des classes !