Erreurs, bugs, questions - page 2021

 
fxsaber:

Jouer le bug

  1. Allez sur Metaquotes-Demo.
  2. Seul AUDJPY est dans l'aperçu du marché et ouvre son graphique.
  3. Rechargez le terminal et attendez une connexion complète - les devis arrivent.
  4. Exécuter le script sur le graphique


Le résultat est le suivant


Redémarrage.


C'est-à-dire queSYMBOL_TRADE_TICK_VALUE renvoie des zéros à la première exécution si Sleep() n'est pas utilisé ;


HI Au sujet du symbole invisible dans Market Watch. Si vous essayez d'ouvrir le graphique USDJPY (appuyez sur Entrée et entrez "USDJPY") avant le début du script, cela ne fonctionnera pas. Si après avoir exécuté le script, cela fonctionne. Bien que le Market Watch n'ait pas changé.

Ajoutez cette boucle au début du script

   for(int i = 0; i < SymbolsTotal(true); i++)
     Print(SymbolName(i, true));

Et voyez combien de symboles sont imprimés.

Au premier passage, l'accès à AUDJPY n'ajoute que AUDUSD et USDJPY à l'aperçu du marché et ce n'est qu'au deuxième passage que ces paires obtiennent la propriété du symbole. C'est ce qui cause le problème avec OrderCalcMargin dans mon cas.

 
fxsaber:

Ce sujet a été abordé à de nombreuses reprises. Ils ne le corrigent pas pour une raison quelconque.

J'ai eu une réponse du service d'assistance. Ils vont le réparer.
 

Bonjour à tous !

Aide pour un débutant, s'il vous plaît.

La fonction permettant de trouver le prix maximum est exécutée. Comment est-il possible de calculer et de renvoyer au code le NUMÉRO DE BAR avec un certain prix maximum ?

 
Alexey Viktorov:

Ajoutez une boucle comme celle-ci au début du script

Et voyez combien de caractères sont imprimés.

Au premier passage, l'accès à AUDJPY n'ajoute que AUDUSD et USDJPY à l'aperçu du marché et ce n'est qu'au deuxième passage que ces paires obtiennent la propriété du symbole. C'est ce qui cause le problème avec OrderCalcMargin dans mon cas.

Je pense qu'il trouvera un moyen de le faire.

Anatoli Kazharski:
J'ai reçu la réponse du Service Desk. Ils vont le réparer.

Merci.

 

En ce qui concerne le bug "autour" de OrderCalcMargin() a fait une application à la SR

 
Kirill Belousov:

Il est difficile d'être sûr quand il y a unecontradiction directe dans l'aide de MQL4/5 :

...N'oubliez pas que les paramètres sont passés à l'envers dans la fonction, c'est-à-dire que le dernier paramètre est calculé et passé en premier, puis l'avant-dernier, et ainsi de suite. Le paramètre qui vient en premier après la parenthèse ouvrante est calculé et transmis à son tour.


..
.Notez quel'ordre des expressions x1,..., xn est garanti.

Quelle est la contradiction ici ? C'est à l'envers et c'est tout. Il n'y a pas de déclaration inverse.
 
Alexey Navoykov:
Quelle est la contradiction ? C'est à l'envers et c'est tout. Il n'y a pas de déclaration contraire.

- Ces deux recommandations figurent dans des sections distinctes de l'aide.

Quand vous lisez sous

"Appeler une fonction avec les arguments x1, x2,..., xn"

l'ordre des expressions x1,....,xn est garanti, à quel ordre pensez-vous ?

Sur l'ordre x1,...,xn ou sur l'ordre xn,....,x1 ?

 
Kirill Belousov:

- Ces deux recommandations figurent dans des sections distinctes de l'aide.

Quand vous lisez sous

"Appeler une fonction avec les arguments x1, x2,..., xn"

l'ordre des expressions x1,....,xn est garanti, à quel ordre pensez-vous ?

L'ordre x1,...,xn ou l'ordre xn,....,x1 ?

Oui, vous avez raison, c'est déroutant.

Cependant, je pense que c'est une mauvaise pratique de faire reposer la logique de son algorithme sur un ordre particulier d 'arguments dans tous les cas. D'autant plus lorsque ces calculs de droite à gauche brouillent la compréhension du code. C'est pourquoi, si vous voulez l'appliquer, vous ne devez le faire qu'à certains endroits non critiques comme l'impression.

 
Kirill Belousov:

L'ordre des expressions de calcul dans Print() est de droite à gauche. En quelque sorte... Au revoir... Je l'ai également vérifié à l'avance :)

Référence MQL5\Les bases dulangage\Les opérationset les expressions\Les autres opérations

Appel de fonction avec les arguments x1, x2,..., xn

Veuillez noter que l'ordre des expressions x1,..., xn est garanti.

Il démontre une fois de plus l'utilité du mot clé C++ inline (une opinion a été émise ici selon laquelle il serait obsolète).
Entre autres choses, inline signifie en fait que le programmeur refuse d'utiliser l'ordre de calcul des paramètres de la fonction. Si le compilateur décide de rendre une fonction inline, le compilateur peut utiliser l'ordre de calcul avant comme plus efficace (l'ordre de calcul inverse n'est évidemment efficace que pour les fonctions appelables).
En même temps, si le compilateur décide d'intégrer une fonction non inline, il doit utiliser l'ordre d'évaluation inverse (général), même si cela entraîne une perte d'efficacité (parce que le programmeur a supposé cet ordre sans avoir déclaré la fonction inline).

inline serait également approprié en MQL, où l'ordre de calcul ne peut être contrôlé explicitement

 
Quel est le son lorsque vous allez sur le forum et lorsque vous recevez un message ?) Comment s'appelle-t-il et où peut-on le télécharger ?
Je veux le mettre sur mes alertes dans Metatrader.
Raison: