Achat si x% de hausse
Forums › ProRealTime forum Français › Support ProOrder › Achat si x% de hausse
- This topic has 9 replies, 2 voices, and was last updated 5 years ago by Jeum37.
-
-
04/15/2019 at 9:29 AM #96482
Bonjour tout le monde !
Etant grand débutant sur PRT, je me tourne vers vous pour un coup de main.
J’aimerais backtester une idée toute simple.
Je choisis un ETF sur lequel j’investis tout le capital. Je mets un stop trailing (disons 8% pour l’exemple). S’il se déclenche, j’aimerais que toute la somme soit réinvestie dès que l’ETF affiche une hausse de x% (par exemple 5%) depuis son plus bas, même si ça prend des semaines ou des mois. Or, je ne sais pas comment spécifier cette dernière instruction (repérer le prix le plus bas et tout racheter quand ce prix a augmenté de 5%).
Je suis désolé de vous demander de me proposer un code pour ce backtest mais j’ai beau lire le manuel de PRT et les différents topics de ce forum, il semble que je sois vraiment trop néophyte en terme de programmation !
Merci par avance pour votre aide !
Jeum.
04/15/2019 at 9:34 AM #9648704/15/2019 at 12:10 PM #96499Désolé d’avoir manque de précision !
imaginons que la valeur baisse. Elle perd 8% donc le stop se déclenche et tout est vendu. La valeur continue à chuter pendant un moment (même si celui-ci est long de plusieurs semaines voire mois) puis elle se remet an remonter. Quand elle aura repris 5%, donc depuis le plus bas qu’elle ait atteint depuis le déclenchement de mon stop, j’aimerais que le signal d’achat se déclenche.
Ainsi, j’espère backtester cette technique simple de stop trailing suivi d’un rachat quand la valeur se met à remonter.
J’espère que mon explication est plus claire ainsi !
Un exemple pourrait être l’indice S&P 500. Il chute en septembre 2018 donc le stop trailing se déclenche (tout est vendu). Il continue an plonger jusqu’à la fin de l’année et se met à remonter en janvier 2019. C’est là que j’aimerais que le signal d’achat intervienne (quand la valeur a repris x% depuis le plus bas de la chute).
Merci !
04/15/2019 at 5:07 PM #96523On peut essayer ceci :
12345678910111213141516defparam cumulateorders=falseonce minclose=closeminclose=min(minclose,close)if not longonmarket and flag=0 thenbuy at marketflag=1endifif not longonmarket and flag=1 thenbuy at minclose*1.05 stopendifset stop %trailing 804/15/2019 at 7:51 PM #96534Bonsoir.
Merci beaucoup pour cette réponse rapide !
J’ai ajouté une ligne en entrée de code (elle n’est pas de moi: je l’ai copiée d’une bonne âme qui répondait à un internaute qui avait le même problème que moi…) pour spécifier que tout le capital était mobilisé à chaque rachat et pas seulement une part.
En revanche, lorsque je regarde la courbe qui sort du backtest, je constate que les rachats n’attendent pas que l’on remonte de 5% à partir du plus bas prix après la vente, mais interviennent bien plus vite. En fait, le rachat est lancé à la bougie suivant directement la vente.
Je copie-colle le code que j’ai utilisé (une erreur s’y est peut-être glissée):
123456789101112131415161718192021// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivécapital = 10000 + strategyprofitn = (capital/close)// Conditions pour ouvrir une position acheteuseonce minclose=closeminclose=min(minclose,close)if not longonmarket and flag=0 thenbuy n shares at marketflag=1endifif not longonmarket and flag=1 thenbuy n shares at minclose*1.05 stopendif// Stops et objectifsSET STOP %TRAILING 8Merci encore de votre aide ! Si vous avez d’autres idées, n’hésitez pas !
Cordialement,
Jeum.
04/16/2019 at 11:31 PM #96642Bonsoir.
J’ai malheureusement trop peu de connaissances en programmation pour comprendre bien le détail de votre code, Nicolas, désolé.
Mais votre version ou celle que j’ai modifiée donnent le même problème: quand le stop se déclenche, le système rachète dès la bougie suivante, sans chercher la hausse de 5% depuis le prix le plus bas depuis la vente (je ne sais pas si cette phrase est très claire…).
Auriez-vous une autre idée ?
Par avance merci.
Jeum.
04/17/2019 at 8:33 AM #96649Désolé, je suis allé trop vite la dernière fois. La version ci-dessous devrait faire l’affaire :
12345678910111213141516171819202122232425DEFPARAM CumulateOrders = False // Cumul des positions désactivécapital = 10000 + strategyprofitn = (capital/close)once minclose=lowif onmarket thenminclose=lowendifif not onmarket thenminclose=min(minclose,low)endifif not longonmarket and flag=0 thenbuy n shares at marketflag=1endifif not longonmarket and flag=1 thenbuy n shares at minclose*1.05 stopendif// Stops et objectifsSET STOP %TRAILING 81 user thanked author for this post.
04/17/2019 at 11:35 AM #96683Bonjour Nicolas.
Je vous remercie beaucoup d’avoir fait aussi vite pour corriger le code !
Je n’ai pas eu beaucoup de temps pour le tester mais il ne donne pas le même bug que le précédent.
En revanche, je ne retrouve pas les écarts de 8% (stop suiveur) et 5% (achat) en les calculant à la main d’après la courbe (ou d’après le rapport détaillé). Ce n’est pas lié à votre code mais à Prorealtime lui-même car j’ai le même souci avec d’autres backtests: il y a toujours un écart entre la valeur demandée et celle mesurée sur la courbe.
Je chercherai si je trouve l’explication quelque part.
En attendant, je vous remercie grandement de m’avoir construit ce code !
Cordialement,
Jeum.
04/17/2019 at 11:47 AM #9668404/17/2019 at 12:15 PM #96688 -
AuthorPosts
Find exclusive trading pro-tools on