Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1063
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
mais comment activer ce mode ?
Cochez la case dans la fenêtre du testeur, en bas à gauche :
Bonjour Gourou.
Pouvez-vous me dire si je suis sur la bonne voie ?
Objectif : introduire une taille de lot variable en fonction de la distance par rapport à l'AM.
Dans les paramètres d'entrée :
extern double Lot1 = 0.01 ; // première variante du lot
extern double Lot2 = 0.03 ; // deuxième variante du lot
extern int Distan = 20 ; // distance de SlowMA
Ma a été défini dans le corps du conseiller expert :
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0) ;
De plus, nous avons besoin d'une condition : si le prix actuel (Bid ou Ask selon la direction) est inférieur ou égal à la taille Distant, nous utilisons la première taille de lot, si elle est supérieure, nous utilisons la seconde.
La première chose qui m'est venue à l'esprit :
si (Ask-SlowMA<Distan) Lot == Lot1 ;
si (SlowMA-Bid<Distan) Lot == Lot1 ;
si (Ask-SlowMA>Distan) Lot == Lot2 ;
si (SlowMA-Bid>Distan) Lot == Lot2 ;
Mais ça ne marche pas. L'erreur se situe soit dans les connexions du Lot, soit dans la logique générale.
Merci d'avance.
Bonjour Gourou.
Pouvez-vous me dire si je suis sur la bonne voie ?
Objectif : introduire une taille de lot variable en fonction de la distance par rapport à l'AM.
Dans les paramètres d'entrée :
extern double Lot1 = 0.01 ; // première taille de lot
extern double Lot2 = 0.03 ; // variante du deuxième lot.
extern int Distan = 20 ; // distance du SlowMA
Dans le corps du conseiller expert défini Ma :
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0) ;
De plus, nous avons besoin d'une condition : si le prix actuel (Bid ou Ask selon la direction) est inférieur ou égal à la taille Distant, nous utilisons la première taille de lot, si elle est supérieure, nous utilisons la seconde.
La première chose qui m'est venue à l'esprit :
si (Ask-SlowMA<Distan) Lot == Lot1 ;
si (SlowMA-Bid<Distan) Lot == Lot1; ;
si (Ask-SlowMA>Distan) Lot == Lot2 ;
si (SlowMA-Bid>Distan) Lot == Lot2 ;
Mais ça ne marche pas. C'est soit une erreur en conjonction avec le Lot, soit une erreur de logique générale.
Merci d'avance.
Bid et Ask sont les derniers cours acheteur et vendeur connus, c'est-à-dire le prix actuel.
SlowMA est mon renommé Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0) ;)
L'écart du prix actuel (Bid ou Ask) par rapport à la Ma (SlowMA) peut être supérieur ou inférieur à Distans. En fonction de cela, vous devez définir soit la première, soit la deuxième taille de lot.
J'ai trouvé des variantes pour changer le lot en fonction du dépôt ou du nombre d'ordres ouverts, mais je n'arrive pas à obtenir de réponse à partir d'un terme aussi linéaire.
Quelque chose me dit que nous avons besoin d'une fonction qui renvoie une valeur absolue. C'est-à-dire que si on l'applique à un nombre négatif, le résultat sera positif.
Bid et Ask sont les derniers cours acheteur et vendeur connus, c'est-à-dire le prix actuel.
SlowMA est mon renommé Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0) ;)
L'écart du prix actuel (Bid ou Ask) par rapport à la Ma (SlowMA) peut être supérieur ou inférieur à Distans. En fonction de cela, vous devez définir soit la première, soit la deuxième taille de lot.
J'ai trouvé des variantes pour modifier le lot en fonction du dépôt ou du nombre d'ordres ouverts, mais je n'arrive pas à obtenir de réponse à partir d'un terme aussi linéaire.
Quelque chose me dit que nous avons besoin d'une fonction qui renvoie une valeur absolue. C'est-à-dire que si on l'applique à un nombre négatif, le résultat sera positif.
La valeur absolue de la différence entre l'offre et la demande peut être nécessaire un peu plus tard ; maintenant, puisque vous n'avez pas compris l'allusion, calculons ensemble
Prix d'achat = 1,12730 ;
MA = 1.12530 ;
Distans = 20 ;
Question :
Quand et si 1.1273 à 1.1253 sera supérieur à 20 ???
Pour une raison quelconque, ma calculatrice affiche 0,002 seulement. Mais c'est loin d'être 20...
Merci, je vois. Ou vous pouvez le faire comme ça :
dist=Distan*Point ;
si (Ask-SlowMA<dist) Lot == Lot1 ;
si (SlowMA-Bid<dist) Lot == Lot1 ;
si (Ask-SlowMA>dist) Lot == Lot2 ;
si (SlowMA-Bid>dist) Lot == Lot2 ;
Alors comment faire correctement ?
Merci, je vois. Ou vous pouvez le faire comme ça :
dist=Distan*Point ;
si (Ask-SlowMA<dist) Lot == Lot1 ;
si (SlowMA-Bid<dist) Lot == Lot1 ;
si (Ask-SlowMA>dist) Lot == Lot2 ;
si (SlowMA-Bid>dist) Lot == Lot2 ;
Alors comment faire correctement ?
Et maintenant, nous pouvons utiliser MathAbs() pour ne pas nous prendre la tête en gardant la trace de ce qui est soustrait de quoi. Et il existe un autre opérateur conditionnel intéressant
Lot = MathAbs(Ask-SlowMA) < dist ? Lot1 : Lot2;
Ce qui signifie : La variable Lot se verra attribuer la valeur de Lot1 si Ask- SlowMA est inférieur à dist, sinon, la valeur de Lot2 sera attribuée.
Une autre recommandation : oubliez la variable Point. Utilisez _Point ou la fonction Point()
J'ai besoin d'aide, je suis encore en train d'apprendre...
Et maintenant, vous pouvez appliquer MathAbs() afin de ne pas avoir à garder la trace de ce qu'il faut soustraire de ce qu'il faut. Et un autre opérateur conditionnel intéressant
Ce qui signifie que la variable Lot se verra attribuer la valeur de Lot1 dans le cas où Ask- SlowMA est inférieur à dist, sinon, la valeur de Lot2 sera attribuée.
Une autre recommandation : oubliez la variable Point. Utilisez _Point ou la fonction Point()