Erreurs, bugs, questions - page 2020
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Un bug, bien sûr. Écrire dans le SD.
Cette ligne fonctionne comme elle le devrait, mais j'ai dû vérifier car je dois deviner l'ordre d'exécution. Discussion de ce point ici.
L'ordre des expressions de calcul dans Print() est de droite à gauche. En quelque sorte... Jusqu'à présent... Je l'ai également vérifié à l'avance :)
Il est difficile d'être sûr quand il y a unecontradiction directe dans la référence MQL4/5 :
Référence MQL5Fondamentaux du langageFonctionsPassage de paramètres
Note
N'oubliez pas que les paramètres sont transmis à la fonction à l'envers, c'est-à-dire que le dernier paramètre est calculé et transmis en premier, puis l'avant-dernier, et ainsi de suite. Le paramètre qui est le premier après la parenthèse ouvrante est calculé et passé en dernier.
Référence MQL5Fondamentaux du langageOpérations et expressionsAutres opérations
Appel de fonction avec les arguments x1, x2,..., xn
Chaque argument peut être une constante, une variable ou une expression d'un type correspondant. Les arguments passés sont séparés par des virgules et doivent être mis entre parenthèses, la parenthèse ouvrante doit suivre le nom de la fonction.
La valeur de l'expression est la valeur renvoyée par la fonction. Si le type de valeur de retour d'une fonction est void, l'appel de fonction ne peut pas être placé à droite de l'opération d'affectation. Notez que l'ordre des expressions x1,..., xn est garanti.
Pour l'instant, je me concentre sur le passage des paramètres dans l'ordre inverse.
Une question sur OrderCalcMargin a été soulevée dans un fil de discussion voisinhttps://www.mql5.com/ru/forum/216697/page3.
Test : vérifions 2 façons différentes de calculer le dépôt en substituant différents prix d'ouverture.
Voici le LOG
La fonction OrderCalcMargin ne prend pas en compte le prix d'ouverture lors du calcul de la marge.
Cela semble être lié au taux de change de la devise cotée, qui doit être recalculé pour l'heure et le prix d'ouverture.
Si la devise cotée est l'USD (et que la devise du compte est également l'USD), la marge calculée changera en fonction du prix d'ouverture.
Journal pour GBPUSD
Est-ce un bug ou devrait-il l'être ?
Il est probable qu'elle devrait l'être, car l'AUDUSD et l'USDJPY en particulier sont impliqués dans le calcul, et leurs cotations sont constantes au moment du calcul.
Maintenant, cette pensée me donne envie de vérifier... Dans le compte MetaQuotes-Demo, dans l'aperçu du marché, le GBPUSD est présent, mais pas dans le compte robo...
Cela doit être le cas parce que AUDUSD et USDJPY en particulier sont impliqués dans le calcul et leurs cotations sont inchangées au moment du calcul.
Maintenant, cette pensée me donne envie de vérifier... GBPUSD est présent dans le compte MetaQuotes-Demo, mais pas dans le compte Robo-...
Je voulais juste vous dire - qu'il y a un bug.
J'ai déjà reproduit votre situation avec Margin=0 dans le calcul de OrderCalcMargin.
Je ne l'ai juste pas encore posté.
Dans le compte MetaQuotes-Demo, le GBPUSD est présent dans Market Watch, mais pas dans le compte Robo...
Très probablement présent dans Market Watch (à ne pas confondre avec la liste générale des symboles), mais non affiché.
Cela doit être le cas parce que AUDUSD et USDJPY en particulier sont impliqués dans le calcul et leurs cotations sont inchangées au moment du calcul.
Maintenant, cette pensée me donne envie de vérifier... Dans le compte MetaQuotes-Demo, dans l'aperçu du marché, le GBPUSD est présent mais pas dans le compte robo...
Voici le test :
1. Sélectionner les croisements dans MarketWatch, cacher tout ce qui est en USD
2. ajouter le symbole DSHBTC et ouvrir son graphique.
3. Fermer le terminal
4) Ouvrir le terminal
5. Commençons le test pour DSHBTC
Voici le LOG :
Toutes les croix montrent une marge=0 et AUCUNE CROIX MAJEURE n'a été sélectionnée.
Une fois encore, exécutez le script sur DSHBTC
LOG
Il n'y a pas de composantes majeures, mais l 'USDJPY est la seule.
Tous les tests ont été effectués sur MetaQuotes.
Très probablement présent dans le Market Watch (à ne pas confondre avec la liste générale des symboles), mais non affiché.
Nous parlons en quelque sorte de la même chose mais de manière différente.
Nous parlons en quelque sorte de la même chose de manière différente.
Exactement. Le Market Watch ne le montre pas, mais il est là.
Répare-le.
C'est fait !
P.S. J'ai oublié d'enlever la réserve :)
Jouer le bug
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é.