Bonjour,
Mon code ne marche pas comme je le souhaite. Il n’aime pas les faux signaux apparemment. J’ai fait un screen explicatif de mon problème.
J’ai essayé de mettre la condition comme quoi je n’étais pas en position, ça ne marche pas. J’ai essayé une ligne : $tab[1] = diff, ça ne marche pas non plus.
Le code utilisé est le suivant :
// Définition des paramètres du code
DEFPARAM CumulateOrders = false // Cumul des positions désactivé
mymm7=Average[7](close)
mymm20=Average[20](close)
if not LONGONMARKET then
pos=1
ELSE
pos =0
ENDIF
if pos=1 and mymm7 crosses under mymm20 THEN
plusbas = DLow(0)
ENDIF
if mymm7<mymm20 and Low[0] < plusbas THEN
plusbas = low[0]
ENDIF
// Conditions pour ouvrir une position acheteuse
c1 = mymm7 CROSSES OVER mymm20
IF c1 THEN
diff = close - plusbas
monatr=AverageTrueRange[14](close)
vol= 250/diff
set stop loss 1*(diff)//+1*(monatr)
BUY 1 CONTRACT AT MARKET
ENDIF
if POSITIONPERF >0 then
sell 1 contract AT MARKET
ENDIF
// Stops et objectifs
//SET TARGET PROFIT 0.5*(diff)
merci d’avance pour vos réponses
Bonjour, Vous avez le problème principal à la ligne 24 de votre code puisque vous ne précisez pas qu'il est hors marché. De cette façon, chaque fois que la condition C1 est remplie, le diff sera mis à jour. Voici le code qui fera ce que vous recherchez :
DEFPARAM CumulateOrders = false // Cumul des positions désactivé
mymm7=Average[7](close)
mymm20=Average[20](close)
if not LONGONMARKET then
if mymm7 crosses under mymm20 THEN
plusbas = DLow(0)
elsif not longonmarket and mymm7 < mymm20 and Low[0] < plusbas THEN
plusbas = low[0]
else
plusbas = plusbas
endif
endif
// Conditions pour ouvrir une position acheteuse
c1 = mymm7 CROSSES OVER mymm20
IF not longonmarket and c1 THEN
diff = close - plusbas
set stop loss 1*(diff)//+1*(monatr)
BUY 1 CONTRACT AT MARKET
ENDIF
if POSITIONPERF >0 then
sell 1 contract AT MARKET
ENDIF
graph diff
Super ! J’ai compris mon erreur ^_^. Un grand MERCI pour votre aide !