Bonjour,
J’ai chercher un peu dans les anciens post mais je n’ai pas trouvé (après comme dirait ma femme, tu vas à la mer tu trouves pas l’eau toi) :-).
J’aimerais, lorsqu’une position est prise et que le stop loss de départ est placé, pouvoir faire évoluer ce stoploss en stopwin en fonction de l’évolution des prix de l’actif.
Exemple : j’achète le dow à 25.000 avec SL initial à 24800. Lorsque les prix passent à 25100, je met le SL à Break Even. Lorsque les prix grimpent à 25.200, le stop à BE passe en stop win à 25100.
Merci d’avance pour votre aide.
Est ce que ce code (code de mise à BE modifiée) est correcte ?
IF LONGONMARKET AND high-tradeprice(1)>=startSWA*pipsize and close > tradeprice(1)+3*pipsize THEN
//On calcul le nouveau niveau du stop BE
SWAlv = tradeprice(1)+SWA*pipsize
ENDIF
//On place le nouvel ordre stop au niveau du stop BE
IF SWAlv>0 THEN
SELL AT SWAlv STOP
ENDIF
Petite question au passage …. Pourquoi met on close > tradeprice(1) + 3 * pipsize ? Est-ce pour éviter que si le niveau de prix devant déclencher la remontée du stop ait été touché mais qu’en clôture de bougie les prix sont revenus sous le niveau de prix d’entrée, le robot ne mette quand même le SL au nouveau niveau ?
Car j’ai ça parfois. Le robot veut mettre le trade à BE car le prix de mise à BE a été touché en cours de bougie, mais en clôture il est inférieur au prix d’entrée et le robot met quand même le stop à be, ce qui a pour effet de clôturer ma position en négatif.
Je ne sais pas d’où provient cette portion de code, je ne peux pas répondre à ta question.
Ce que je peux dire de ce que je vois dans ce code, c’est qu’il est logique que l’ordre ferme à cause du pending STOP, si SWAlv est supérieure au Close lors de la lecture du code. Dans ce cas là, il faut utiliser un ordre LIMIT plutôt qu’un STOP.
J’ai une autre question suite à la lecture sur le Multitime frame dont je viens de faire la demande chez PRT.
Pour la mise à BE, celle-ci se fait classiquement à la clôture de la bougie de l’unité de temps sur laquelle le robot travail. Est-il possible avec le MTF d’appliquer un robt sur l’UT horaire et de faire en sorte que la mise à BE se fasse sur le 5 minutes ou le 1 minute ?
Le bout de code que j’ai mis avant venait de celui-ci que javais modifié.
//On remet le niveau de mise à BE à 0 losque l'on n'est pas en position
IF NOT ONMARKET THEN
BELv=0
ENDIF
IF LONGONMARKET AND high-tradeprice(1)>=startBEA*pipsize and close > tradeprice(1)+3*pipsize THEN
//On calcul le nouveau niveau du stop BE
BELv = tradeprice(1)+PointsToKeepA*pipsize
ENDIF
//On place le nouvel ordre stop au niveau du stop BE
IF BELv>0 THEN
SELL AT BELv STOP
ENDIF
Est-il possible avec le MTF d’appliquer un robt sur l’UT horaire et de faire en sorte que la mise à BE se fasse sur le 5 minutes ou le 1 minute ?
Oui et c’est bien un des arguments de poids dans l’utilisation du MTF.
Exemple dans ce sujet : https://www.prorealcode.com/topic/move-sl-during-current-candle/#post-79130
(déplacement du stoploss à breakeven en timeframe 1 minute d’une stratégie basée sur des indicateurs en H1).
Pour l’utilisation du MTF, il y a quantité de sujets taggés “MTF” : https://www.prorealcode.com/topics-tag/mtf/
ou “multitimeframe” : https://www.prorealcode.com/topics-tag/multitimeframe/
ou cet article que j’ai rédigé en français lors de l’introduction des nouvelles instructions pour le MTF: Première approche sur le multi timeframe avec ProRealTime
Bonjour Nicolas,
Je reviens avec ma demande pour le déplacement d’un stoploss qui a été placé à Breakeven en stopwin. Est ce que je le code joint te semble correcte ?
//On remet le niveau de mise à BE à 0 losque l'on n'est pas en position
IF NOT ONMARKET THEN
BELv=0
ENDIF
IF LONGONMARKET AND high-tradeprice(1)>=startBEA*pipsize and close > tradeprice(1)+3*pipsize THEN
//On calcul le nouveau niveau du stop BE
BELv = tradeprice(1)+PointsToKeepA*pipsize
ENDIF
//On place le nouvel ordre stop au niveau du stop BE
IF BELv>0 THEN
SELL AT BELv STOP
ENDIF
IF LONGONMARKET AND high-tradeprice(1)>=tradeprice(1)+200*pipsize and close > tradeprice(1)+3*pipsize THEN
//On calcul le nouveau niveau du stop win
SWLv = tradeprice(1)+100*pipsize
ENDIF
//On place le nouvel ordre stop au niveau du stop BE
IF SWLv>0 THEN
// je pense qu'il manque une ligne pour la suppression de stop qui est placé à BELv - Comment l'écrire ?
SELL AT SWLv STOP
ENDIF
Je ne vois rien de choquant dans l’approche. On ne peut pas supprimer un ordre conditionnel, il expire à chaque nouveau chandelier. Si tu veux ne plus placer le premier ordre STOP (celui de la ligne 12), alors tu devrais tester à la ligne 11 si SWLv est supérieure à 0.
Merci mais je ne suis pas certain de bien comprendre.
Dans l’état actuel du code, il me placera à chaque fin de chandelier 2 stops ? un à BELv et un SWLv ?
En fait j’aimerais simplement que dans un premier temps, lorsque un premier niveau de prix est atteint, il mette le stop à BE et lorsqu’un second niveau de prix, le stop qui était placé à BE soit relevé à un certains nombre de points (par exemple 100).
Dans l’état actuel du code, il me placera à chaque fin de chandelier 2 stops ? un à BELv et un SWLv ?
Oui c’est ce que tu demandes avec ton code.
n fait j’aimerais simplement que dans un premier temps, lorsque un premier niveau de prix est atteint, il mette le stop à BE et lorsqu’un second niveau de prix, le stop qui était placé à BE soit relevé à un certains nombre de points (par exemple 100).
Voir ma réponse du dessus. Pour éviter de placer 2 ordres stop, on va interdire la pose du premier avec la condition que j’ai indiqué. J’ai donné plein d’exemples dans les liens du dessus également, pourquoi vouloir réinventez la poudre ? 🙂