Bonjour Nicolas,
J’ai bcp pu avancer sur mon robot grace a tes conseils mais je rencontre toujours un serieux soucis au niveau des sorties que je ne trouve pas assez optimisé.
J’ai pensé à coder ceci mais j’aurais besoin de ton aide :
Imaginons que j’aimerais sortir avec un objectif de 20 points dans le cadre d’un achat.
Je place donc tout simplement ce code SET TARGET pPROFIT 20
Maintenant j’aimerais tenter de laisser courir les gains et l’adapter pour sortir a la prochaine bougie rouge et pas avant.
L’idée serait donc de coder quelque chose qui protégerait ma position avec un BE lorsque je suis à +20 points et qui me ferait sortir du marché à la prochaine bougie rouge.
en gros : if +20 points = placé mon stop a BE et sortie du marché a la prochaine bougie rouge.
Je suis satisfait de mes points d’entrées mais j’ai beaucoup de mal a trouver un tp/stop dynamique et intelligent. Si tu as des idées, je suis preneur.
Merci pour ton aide encore.
Le code ci-dessous pose un ordre de vente (ou de rachat pour une VAD) à breakeven+x points dés y points en gain. Si l’ordre est à breakeven, alors on autorise la sortie dés la rencontre avec une bougie rouge (pour les achats) ou verte (pour les ventes).
defparam cumulateorders = false
startBreakeven = 20 //how much pips/points in gain to activate the breakeven function?
PointsToKeep = 1 //how much pips/points to keep in profit above of below our entry price when the breakeven is activated (beware of spread)
//exit long order on red candle (if breakeven is set)
if longonmarket and close<open and breakevenLevel>0 then
sell at market
endif
//exit short order on green candle (if breakeven is set)
if shortonmarket and close>open and breakevenLevel>0 then
exitshort at market
endif
//dummy strategy
c1 = RSI[14] crosses over 50
if c1 then
BUY 1 LOT AT MARKET
SET STOP PLOSS 50
endif
//reset the breakevenLevel when no trade are on market
IF NOT ONMARKET THEN
breakevenLevel=0
ENDIF
// --- BUY SIDE ---
//test if the price have moved favourably of "startBreakeven" points already
IF LONGONMARKET AND close-tradeprice(1)>=startBreakeven*pipsize THEN
//calculate the breakevenLevel
breakevenLevel = tradeprice(1)+PointsToKeep*pipsize
ENDIF
//place the new stop orders on market at breakevenLevel
IF breakevenLevel>0 THEN
SELL AT breakevenLevel STOP
ENDIF
// --- end of BUY SIDE ---
// --- SELL SIDE ---
//test if the price have moved favourably of "startBreakeven" points already
IF SHORTONMARKET AND tradeprice(1)-close>=startBreakeven*pipsize THEN
//calculate the breakevenLevel
breakevenLevel = tradeprice(1)-PointsToKeep*pipsize
ENDIF
//place the new stop orders on market at breakevenLevel
IF breakevenLevel>0 THEN
EXITSHORT AT breakevenLevel STOP
ENDIF
// --- end of SELL SIDE ---
Bonjour Nicolas,
J’ai un souci avec mon breakeven que tu peux surement me solutionner. J’ai exactement le même code que toi pour la mise en place du Breakeven mais il se trouve que des fois il est recalculer à la baisse. Tout d’abord il se met en place en long pour l’exemple et ensuite si la second bougie est rouge et bien il recalcule la distance et baisse pour avoir tjs le meme ecart.
As tu déjà eu ce souci? As tu une solution pour ça?
Merci
Bonjour Nicolas,
Comment faire pour que le breakeven soit recalculer après chaque nouveau plus haut?
Actuellement ce n’est pas le cas et j’aurai aimé savoir s’il y avait une solution pour ça?
L’autre jour le cours a continuer de monter de 100 points après le passage en Breakeven mais il n’a pas suivi du tout.
Merci
Bruno
Un breakeven ne suit pas le prix, par définition mettre à breakeven signifie poser le stoploss au point d’entrée, pour éviter une perte si le marché se retourne. Je pense que tu cherches à faire un trailing stop ? soit modifier le stoploss en fonction de l’évolution du prix, toujours favorablement.
Oui c’est plus un trailing stop calculer a chaque bougie a partir du démarrage du Breakeven.
Peux-tu m’aider sur cette partie du code?
C’est exactement ce que fait le fameux code du trailing stop (et souvent modifié depuis) que j’ai partagé il y a quelques années, le premier mouvement met le stoploss au point d’entrée, puis il bouge selon les paramètres définis:
Complete trailing stop code function
plein d’autres différents dans la liste vivant des snippets intéressants du site: https://docs.google.com/spreadsheets/d/1rgboqj7sVwsP9ZRhOduOefye48QMWC07jWVXCl-KJPU/edit#gid=0
Merci beaucoup.
c’est parti pour la partie test !!