Stop trailing + stop loss programmés
Forums › ProRealTime forum Français › Support ProOrder › Stop trailing + stop loss programmés
- This topic has 2 replies, 2 voices, and was last updated 8 years ago by arcane.
-
-
11/13/2016 at 12:13 PM #16438
Bonjour,
Depuis ma découverte de PRT en aôut 2016, j’ai beaucoup progressé en terme de programmation.
Je profite de ce message pour remercier Nicolas et tous les participants du forum.
J’utilise à présent le stop trailing mis au point par Nicolas.
A présent, je cherche à le combiner avec un stop loss.
Si je mets en place le stop trailing qui se déclenche lorsque le dax gagne 15 points, cela n’est pas suffisant pour protéger la position quand le marché ne monte pas assez alors que je suis long.
Je voudrais donc coder un stop sur le prix d’entrée du marché si le dax gagne 10 points.
Exemple:
Achat dax à 10 000.
Le marché monte à 10 015, le stop trailing se met en place.
Par contre, le marché monte à 10 010 et redescend. Je voudrais déclencher dans ce cas-là, un ordre stop à 10 000 pour sortir flat.
J’ai essayé de combiner les 2 codes de Nicolas sans succès.
Merci si quelqu’un peut m’aider à modifier le code.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485trailingstart = 15//trailing will start @trailinstart points profittrailingstep = 15//trailing step to move the "stoploss"minstop = 2//minimum allowed stoppriceleap = 1 //if price moves rapidly the stop will move till the set leapstop from close.leapstop = 1//if price moves rapidly the stop will move till the set leapstop from close.//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize AND close-newSL>=minstop*pipsize THENif close-newSL>=priceleap*pipsize thennewSL = close - leapstopelsenewSL = newSL+trailingstep*pipsizeendifENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize AND newSL-close>= minstop*pipsize THENif newSL-close>=priceleap*pipsize thennewSL = close + leapstopelsenewSL = newSL-trailingstep *pipsizeendifENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFtrailingstart = 10//trailing will start @trailinstart points profittrailingstep = 10 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF SL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF SL>0 AND close-SL>=trailingstep*pipsize THENSL = SL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF SL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF SL>0 AND SL-close>=trailingstep*pipsize THENSL = SL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF SL>0 THENSELL AT SL STOPEXITSHORT AT SL STOPENDIF11/13/2016 at 8:01 PM #16456Le “first move”, c’est à dire la première fois que le stoploss bouge doit mettre ton ordre au breakeven. C’est à dire au prix d’entrée + trailingstep.
Si tu “trailingstep” a la même valeur que “trailingstart”, comme c’est le cas dans ton code, alors bien entendu ça ne fonctionner pas correctement. Pour mémoire, “trailingstart” est le seuil de gain en pips à partir duquel le trailing stop rentrera en fonctionnement. Je parle ici du fonctionnement de mon code original disponible dans le blog, et pas de celui de ton message .. désolé Dimanche soir, je n’ai pas pris le temps de bien l’analyser/comprendre 😉
11/14/2016 at 8:53 PM #16535Bonjour Nicolas.
Je pensais qu’on peut très bien mettre le même chiffre pour trailingstart et trailing step.
Si je mets 20 points pour les 2. Cela veut dire que si le dax (dans mon exemple)passe de 1000 à 1020, le stop se fait à 1020.
J’ai peut être mal interprété le code. Cela voudrait dire que à 1020, le stop se met à 1000 et montre tous les 20. Pourtant, ce n’est pas ce qui se passe dans le test en réel.
Pour ma part, j’aurais voulu mettre 2 stops différents mais cela n’est sans doute pas possible.
Pour un dax à 1000, je voulais la situation suivant si je suis long:
1010 points, je déclenche un stop sur 1000
1020 points, j’enclenche un nouveau stop à 1020 proche du niveau du marché (le stop de 1000 disparaît bien sûr)
1030, le stop remonte à 1030 au niveau du marché.
Je ne sais pas si je peux le faire à partir de votre code.
Finalement, tous les systèmes reposent sur la gestion des sorties. Sinon point de salut.
-
AuthorPosts
Find exclusive trading pro-tools on