Bonjour Nicolas,
Peux-tu me décrire le code afin de n’autoriser qu’un seul trade après le croisement de deux moyennes mobiles s’il te plait ?
Te remerciant par avance.
Bonne journée.
DJ
Si le lancement du trade résulte de ton test de croisement de moyennes mobiles, alors il ne devrait se lancer qu’une seule fois. Je pense que tu dois avoir un soucis de trades successifs sur la même barre, c’est bien cela ?
Non, voilà ma stratégie :
J’ai deux moyennes mobiles de période 10 et 20 et deux moyennes mobiles de période 100 et 150.
Par exemple, quand la MM10 croise à la hausse la MM20 alors que la MM100 est au-dessus de la 150 alors je déclenche un ordre à l’achat.
Je voudrais profiter du retournement de tendance qu’uns seule fois, à son début car il y a aussi des croisements à la hausse de la MM10 sur la MM20 à l’essouflement de la MM100 au-dessus de MM150.
Il suffit simplement de “flagger” le fait que ta MM10 passe au dessus de la M20 (tu inscrits dans une variable que le croisement a eu lieu) et tu reset cette variable à chaque croisement de tes moyennes mobiles long terme (changement de tendance dans ta stratégie si j’ai bien compris).
Ensuite, tu testes ce flag avant de lancer chaque trade, si celui-ci est déjà vrai alors un croisement a déjà eu lieu.
@Nicolas
Bonjour,
Que veut dire “flagger” ?
Boucle conditionnelle (if-while) / itérative (for) ?
Count ?
@+
“flagger” est une francisation du verbe “to flag” soit signaler ou marquer quelque chose comme important, en Anglais. On utilise souvent ce terme en programmation.
Pour ce cas précis, j’indique qu’il faut inscrire dans une variable qu’un événement a eu lieu (ici un croisement de moyennes mobiles):
if average[10] crosses over average[20] then
flag = 1
endif
Si flag=1 alors on prendra d’autres décisions en fonction. On pourrait aussi stocker dans “flag” la valeur du barindex par exemple, ou même un prix, etc.
MM10 = Average[10](close)
MM20 = Average[20](close)
MM100 = Average[100](close)
MM150 = Average[150](close)
ca1 = MM10 crosses over MM20
ca2 = MM100 > MM150
Long = 0
If Long = 0 and ca1 and ca2 then
Long = 1
elsif Long = 1 and ca1 and ca2 then
endif
If Long = 1 and close < MM150 then
Long = 0
Endif
return long style(histogram) as "result", 0 coloured(0,0,255) AS "Zéro"
Pour revenir sur l’exemple ci-dessus, j’ai essayé cela, mais tous les signaux restent Peux-tu nous aider ? @+
Dans ton cas, je pense qu’il vaut mieux scinder les 2 conditions, puisque tu utilises “long” pour matérialiser le signal visuellement. J’ai donc ajouté la variable “signal” pour faire le reset quand le close repasse sous la MM150, car si j’ai bien compris tu ne prends que le premier trade et pas les suivants.
MM10 = Average[10](close)
MM20 = Average[20](close)
MM100 = Average[100](close)
MM150 = Average[150](close)
ca1 = MM10 crosses over MM20
ca2 = MM100 > MM150
//Long = 0
If signal=0 and ca1 and ca2 then
Long = 1
signal = 1
else
long = 0
endif
If signal = 1 and close < MM150 then
signal = 0
Endif
return long style(histogram) as "result", 0 coloured(0,0,255) AS "Zéro"
Me revoilà…..
J’ai voulu transformer le code pour un affichage sur le graphique et faire les conditions ventes :
MM10 = Average[10](close)
MM20 = Average[20](close)
MM100 = Average[100](close)
MM150 = Average[150](close)
//Conditions Achats
ca0 = MM20 > MM150
ca1 = MM10 crosses over MM20
ca2 = MM100 > MM150
//Long = 0
If signalLong=0 and ca0 and ca1 and ca2 then
Long = 1
signalLong = 1
DRAWARROWUP(barindex,low-10) COLOURED(0,0,0)
else
long = 0
endif
If signalLong = 1 and close < MM150 then
signalLong = 0
Endif
//Conditions Vente
ca10 = MM20 < MM150
ca11 = MM10 crosses under MM20
ca12 = MM100 < MM150
If signalShort=0 and ca10 and ca11 and ca12 then
Short = -1
signalShort = -1
DRAWARROWDOWN(barindex,high+10) COLOURED(0,0,0)
else
Short = 0
endif
If signalShort = -1 and close > MM150 then
signalShort = 0
Endif
return Long as "Long", Short as "Short"
Sauf que quand je l’applique au graphique “prix”, celui n’est pas dimensionné correctement !!! Il laisse apparaître la ligne 0 de l’actif……
Comment corriger ce défaut, car si j’enlève l’incrémentation, il me met tous les signaux à nouveau ?!? :=(
@+
Trouvé…
Suffit d’indiquer à la fin du code “return” sans rien après !!!
En effet, ou de paramétrer le graphique du prix pour n’utiliser que le prix pour l’échelle automatique.