Questions des débutants MQL5 MT5 MetaTrader 5 - page 589
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
En vérifiant l'indicateur pas à pas, j'ai trouvé un rebondissement dans la sous-routine derrière le if {} et dans laquelle il n'y a pas de W. Voici un code simplifié pour clarifier le point :
//--- paramètres d'entrée
entrée int w=10 ;
//---
{
int i ;
//---
int co=0 ;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- retour de la valeur de prev_calculée pour l'appel suivant
retour(taux_total) ;
}
Résultat (arlets) :
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... etc. à 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Règle : Si l'expression entre parenthèses est vraie, alors l'opérateur1 est exécuté.
Dans le code : l'opérateur1 est exécuté TOUJOURS.
Je pense que if() ne devrait fonctionner qu'une seule fois lorsque la condition entre parenthèses est vraie. Mais elle se produit en réalité à chaque vérification, de sorte que toutes les expressions dans {} sont exécutées à chaque étape et grugent du temps machine.
Questions : POURQUOI la variable CO est-elle passée de 0 à 11 pendant la boucle ? Pourquoi Alert est-il déclenché à chaque étape ?
Combien de fois dois-je te le dire ?
Regardez : vous avez w égal à 10,
Vous vérifiez w pour 10 : "if(w==10){co++ ; Alert(co);}" Pensez-vous que cette expression est vraie ?
Alors pourquoi cette question ?
En vérifiant l'indicateur pas à pas, j'ai détecté un rebondissement dans la sous-routine derrière le if {} et dans laquelle il n'y a pas de W. Voici un code simplifié pour clarifier la question :
//--- paramètres d'entrée
entrée int w=10 ;
//---
{
int i ;
//---
int co=0 ;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- retour de la valeur de prev_calculée pour l'appel suivant
retour(taux_total) ;
}
Résultat (arlet) :
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... etc. à 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Règle : Si l'expression entre parenthèses est vraie, alors l'opérateur1 est exécuté.
Dans le code : l'opérateur1 est exécuté TOUJOURS.
Je pense que if() ne devrait fonctionner qu'une seule fois lorsque la condition entre parenthèses est vraie. Mais elle se produit en réalité à chaque vérification, de sorte que toutes les expressions dans {} sont exécutées à chaque étape et grugent du temps machine.
Questions : POURQUOI la variable CO est-elle passée de 0 à 11 pendant la boucle ? Pourquoi l'alerte est déclenchée à chaque étape ?
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Bugs, bugs, questions
Andrey Barinov, 2016.05.30 10:38
Apparemment, vous avez une erreur de frappe dans le code, et vous vouliez écrire comme ceci :
Bonjour messieurs ! J'ai un petit problème lors de l'écriture d'un EA(( L'EA ouvre des ordres en attente la plupart du temps très bien, mais parfois j'ai besoin d'ouvrir des ordres très proches du prix actuel, alors comment prescrire qui ouvrirait des ordres en attente aussi proches que possible ?
Combien de fois dois-je te le dire ?
Regardez : vous avez w égal à 10,
Vous vérifiez que w est égal à 10 : "if(w==10){co++ ; Alert(co);}" Pensez-vous que cette expression est vraie ?
Alors pourquoi cette question ?
Je m'excuse pour cette question stupide et je vous remercie de votre patience et de votre compréhension. J'ai été déçu en déplaçant mécaniquement la sonde if(w==10){ Alert(I,"/",F) ; à travers le programme à la recherche d'une erreur dans les étapes. Cela arrive parfois lorsque vous vous heurtez à un mur de votre propre ignorance de la raison, mais une fois que vous vous tenez à l'écart du problème pendant un certain temps, la question se résout d'elle-même. Ce que vous percevez comme une "secousse" s'avère en fait être une demande non prise en compte provenant d'une autre partie du programme. Merci, Vladimir.
Bonjour, pouvez-vous m'aider avec les maths s'il vous plaît ?
Comment savoir quel sera le lot de la cinquième position, si vous connaissez le lot de la première et que le lot de chaque nouvelle position augmente en progression arithmétique.
La deuxième option est que le lot augmente avec la progression géométrique.
Bonjour, pouvez-vous m'aider avec les maths s'il vous plaît ?
Comment savoir quel sera le lot de la cinquième position, si vous connaissez le lot de la première et que le lot de chaque nouvelle position augmente en progression arithmétique.
La deuxième option est que le lot augmente avec la progression géométrique.
Êtes-vous banni de Google ? Je suis désolé, pourquoi es-tu si cruel ? ))
La progression arithmétique est définie par une formule.
laprogression géométrique est donnée par la formule
Je ne comprends pas, en théorie pour la première variante il suffit de multiplier le premier lot par 5, s'il augmente du lot de départ...
Pour la deuxième option : le multiplicateur du lot* de la première position*5 ...mais
Je ne comprends pas, en théorie, pour la première option, il suffit de multiplier le premier lot par 5.
Pour la deuxième option, le lot de la première position * coefficient * 5 ...mais
C'est bon, j'ai moi-même oublié les maths depuis l'école ;)) J'ai ressorti un livre de mathématiques, j'ai retapé la définition d'arithmétique, de progression.
-------------
Suite de nombres dont chacun, à partir du deuxième, est obtenu à partir du précédent en ajoutant un nombre constant d, appelé différence d'une progression arithmétique.
Si le premier terme est a1, alors la prog. arith. de longueur n a la forme :
a1, a1+d, a1+2*d, ...., a1 + n*d
Le code en MQL est comme ceci, j'ai créé un exemple simple
C'est bon, j'ai moi-même oublié les maths depuis l'école ;))