Bonjour,
J’essaie de coder un breakeven tout simple mais on voit bien sur la capture d’écran que le SL ne se place pas sur mon niveau d’entrée alors qu’il devrait s’y placer dès qu’on dépasse 30 points. Et dans cet exemple on en fait plus de 90..
Sur le second trade on voit que ca marche bien. Je ne comprends pas. Une idée ?
version : 11
instrument : FCEXXXX
TF : 5 minutes
Deux choses qui me viennent à la lecture de ton problème avec ton code de breakeven :
- utilise toujours une taille adaptée à l’instrument courant en faisant une conversion avec l’instruction pointsize, soit modifie la ligne avec: 30*pointsize
- le code est lu à fin de bougie, si à la clôture ta condition d’éloignement de 30 points n’est pas respectée, alors il ne se passera rien. Dans le présent, tu devrais peut être tester le High plutôt que le Close: High-tradeprice(1)>=30*pointsize
Merci de poster le code la prochaine fois, plutôt qu’une image, c’est plus simple et rapide pour te répondre.
Merci pour ta réponse. J’ai fait la modification en conséquence mais mon breakeven ne fonctionne toujours pas. J’ai essayé sur CFD également avec la v10.3 et même en ayant un écart de 150 pts mon SL ne remonte pas au BE.
DEFPARAM CUMULATEORDERS = False
DEFPARAM FLATBEFORE = 060000
DEFPARAM FLATAFTER = 210000
// INDICATEURS
MM20 = Average[20](close)
MM100 = WilderAverage[100](close)
// CONDITIONS
C1 = MM20 CROSSES OVER MM100
C2 = MM20 CROSSES UNDER MM100
// ACHAT
IF C1 AND NOT ONMARKET THEN
BUY 1 SHARES AT MARKET
ENDIF
// BREAKEVEN
IF LONGONMARKET THEN
IF HIGH-TRADEPRICE(1) > 30*POINTSIZE THEN
SELL AT TRADEPRICE(1) STOP
ENDIF
ENDIF
// REVENTE
IF C2 THEN
SELL AT MARKET
ENDIF
Un order conditionnel ne dure qu’une seule période, il faut donc le replacer en permanence, et c’est là où se situe ton problème, tu le places uniquement pour 1 seule période quand ta condition de la ligne 20 est vrai.
Je te conseille d’utiliser l’un des codes de breakeven que tu pourras trouver dans ces sujets :
https://www.prorealcode.com/topics-tag/breakeven/
https://www.prorealcode.com/topics-tag/break-even/
Ok je viens de comprendre mon erreur. Merci beaucoup ! Voici le code corrigé.
Modifications : ligne 16, ligne 22, lignes 26 à 28
DEFPARAM CUMULATEORDERS = False
DEFPARAM FLATBEFORE = 060000
DEFPARAM FLATAFTER = 210000
// INDICATEURS
MM20 = Average[20](close)
MM100 = WilderAverage[100](close)
// CONDITIONS
C1 = MM20 CROSSES OVER MM100
C2 = MM20 CROSSES UNDER MM100
// ACHAT
IF C1 THEN
BUY 1 SHARES AT MARKET
SET STOP PLOSS 50
ENDIF
// BREAKEVEN
IF LONGONMARKET THEN
IF HIGH-TRADEPRICE(1) > 30*POINTSIZE THEN
newSL = tradeprice(1)
ENDIF
ENDIF
IF newSL > 0 THEN
SELL AT newSL STOP
ENDIF
// REVENTE
IF C2 THEN
SELL AT MARKET
ENDIF