Achat si x% de hausse

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #96482 quote
    Jeum37
    Participant
    New

    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.

    #96487 quote
    Nicolas
    Keymaster
    Master

    Le prix le plus bas depuis la sortie de l’ordre sur trailing stop, le plus bas historique ou sur une période donnée uniquement ?

    #96499 quote
    Jeum37
    Participant
    New

    Dé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 !

    #96523 quote
    Nicolas
    Keymaster
    Master

    On peut essayer ceci :

    defparam cumulateorders=false
    
    once minclose=close
    
    minclose=min(minclose,close)
    
    if not longonmarket and flag=0 then 
     buy at market 
     flag=1
    endif 
    
    if not longonmarket and flag=1 then 
     buy at minclose*1.05 stop 
    endif
    
    set stop %trailing 8
    #96534 quote
    Jeum37
    Participant
    New

    Bonsoir.

    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):

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    capital = 10000 + strategyprofit
    n = (capital/close)
    
    // Conditions pour ouvrir une position acheteuse
    once minclose=close
     
    minclose=min(minclose,close)
     
    if not longonmarket and flag=0 then
    buy n shares at market
    flag=1
    endif
     
    if not longonmarket and flag=1 then
    buy n shares at minclose*1.05 stop
    endif
    
    // Stops et objectifs
    SET STOP %TRAILING 8
    

    Merci encore de votre aide ! Si vous avez d’autres idées, n’hésitez pas !

    Cordialement,

    Jeum.

    #96642 quote
    Jeum37
    Participant
    New

    Bonsoir.

    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.

    #96649 quote
    Nicolas
    Keymaster
    Master

    Désolé, je suis allé trop vite la dernière fois. La version ci-dessous devrait faire l’affaire :

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    capital = 10000 + strategyprofit
    n = (capital/close)
    
    once minclose=low
    
    if onmarket then 
    minclose=low
    endif
    
    if not onmarket then
    minclose=min(minclose,low)
    endif
    
    if not longonmarket and flag=0 then
    buy n shares at market
    flag=1
    endif
     
    if not longonmarket and flag=1 then
    buy n shares at minclose*1.05 stop
    endif
    
    // Stops et objectifs
    SET STOP %TRAILING 8
    
    Jeum37 thanked this post
    strategie-avec-reinvestissement-wall-street.png strategie-avec-reinvestissement-wall-street.png
    #96683 quote
    Jeum37
    Participant
    New

    Bonjour 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.

    #96684 quote
    Nicolas
    Keymaster
    Master

    En mesurant avec l’outil regle de la plateforme,  on trouve bien 5% entre le plus bas atteint et un nouvel ordre d’achat, sauf erreur de ma part .

    #96688 quote
    Jeum37
    Participant
    New

    Désolé pour cette fausse alerte: j’ai dû mal m’y prendre dans le relevé de valeurs (en pointant simplement à la souris) !

    Merci pour cette dernière précision !

     

    Cordialement,

    Jeum.

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

Achat si x% de hausse


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Jeum37 @jeum37 Participant
Summary

This topic contains 9 replies,
has 2 voices, and was last updated by Jeum37
6 years, 11 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 04/15/2019
Status: Active
Attachments: 1 files
Logo Logo
Loading...