Backtest stratégie passive cumul achat le 1er de chaque mois

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #83652 quote
    CoteBourse
    Participant
    Junior

    Bonjour,

    Je voudrais faire un backtest d’une stratégie sur un tracker S&P500 qui consiste simplement à acheter €.1 000 tous les 1ers de chaque mois. C’est le seul critère d’achat. Je ne parviens pas à traduire cette notion de “timing” en code PRT.
    If today = 1er jour du mois then
    Buy 1000 cash at market.

    Merci d’avance pour votre aide précieuse.

     

    [Edit par modérateur: sujet déplacé du forum pro-builder (indicateurs, code se terminant par “return”, pas de mot-clé buy/sell possible) au forum pro-order (backtests et stratégies)]

    #83782 quote
    Nicolas
    Keymaster
    Master

    Tout simplement avec l’instruction DAY:

    if DAY=1 then 
     ...
    endif

    Bien sûr il est possible que le 1er du mois tombe un week-end, dans ce cas de figure, il faudrait adapter le code.

    #83786 quote
    CoteBourse
    Participant
    Junior

    Merci beaucoup. Effectivement, ça marche presque mais certains mois, je n’ai pas d’ordre passé car le 1er jour du mois tombe un week-end.

    Il faudrait peut-être inclure la fonction dayofweek qui permet de tester si on est un jour de weeek end ?.

    Mais mon code ne fonctionne pas :

    DEFPARAM CumulateOrders = true

    IF DAY = 1 and (dayofweek = 1 or dayofweek = 2 or dayofweek = 3 or dayofweek = 4 or dayofweek = 5) THEN
    BUY 1000 CASH AT MARKET
    ELSIF DAY = 1 and (dayofweek <> 1 or dayofweek <> 2 or dayofweek <> 3 or dayofweek <> 4 or dayofweek <> 5) THEN
    BUY 1000 CASH (DES que POSSIBLE)

    ENDIF

    Auriez-vous une idée ?

    #83798 quote
    Nicolas
    Keymaster
    Master

    Peut-être plus simple tester si un ordre a été passé le mois courant au début des 5 premiers jours du mois:

    if active<>openmonth and day<5 then 
     buy at market 
     active=openmonth
    endif
    #83800 quote
    CoteBourse
    Participant
    Junior

    Excellent Merci Nicolas. Cela fonctionne déjà bien.

    Finalement, une bonne gestion passive d’accumulation mensuelle sur un tracker donne déjà un résultat assez intéressant.

    Ce qui serait encore mieux c’est de rester à l’écart pendant les phases de baisse (par exemple lorsque MM50(close) < MM200(close)) et d’accumuler pendant ce temps les €.1 000 d’épargne par mois dans un “compteur”. Au lieu de miser €.1 000 chaque mois, on pourrait désigner un compteur qui serait le “capital disponible” et qui s’incrémenterait de €.1 000 chaque mois pendant lesquels que la MM50 est en dessous de la MM200 et dès que MM50 repasse au dessus de la MM200, on investi le “paquet disponible”. Peut-on rendre les €.1 000 fixes dans “buy 1000 cash at market” par un montant variable qui serait le capital disponible ?

    DEFPARAM CumulateOrders = true // Cumul des positions désactivé

    // Conditions pour ouvrir une position acheteuse
    C1 = average[50](close) > average[200](close)
    if active <> openmonth and day < 5 and C1 then
    buy Capital cash at market
    active = openmonth

    endif

    Merci encore.

    #83802 quote
    Nicolas
    Keymaster
    Master

    une bonne gestion passive d’accumulation mensuelle sur un tracker donne déjà un résultat assez intéressant.

    Bien sûr que oui 🙂 et même sans accumulation.

    Merci d’utiliser le bouton adéquate pour poster du code dans le forum.

    Pour le calcul à investir, je pense que tu devrais y arriver mieux que moi ! Ou alors, il faudrait pousser un peu plus l’explication, car j’ai un peu de mal à te suivre…

    #83809 quote
    CoteBourse
    Participant
    Junior

    C’est pas facile à expliquer par mail…En fait, imaginons qu’on puisse mettre €.1 000 d’épargne sur le tracker CAC 40 tous les mois. Je voulais backtester s’il valait mieux mettre ces €.1 000 tous les mois de manière automatique les yeux fermé (même en cas de forte correction pendant le krack de 2008 /2009 et donc moyenner à la baisse sa position) ou s’il valait mieux attendre, laisser passer la baisse (rester à l’écart tant que MM50 <MM200 par exemple), épargner tous les mois les €.1 000 sans les placer sur le tracker et attendre que MM50 repasse au dessus de MM20 pour placer d’un seul coup l’épargne accumulée pendant toute la phase baissière (soit €.1 000 mensuels x le nombre de mois de baisse depuis que MM50 est passée sous MM200). Sauf que je ne sais pas comment faire un compteur qui compte le nombre de mois de baisse entre le moment où MM50 a croisé à la baisse MM200 et le moment où MM50 est repassé au dessus de MM200…

    #85380 quote
    vindioux
    Participant
    Average

    Salut,

    Moi j’avais fait ça pour tester une stratégie d’accumulation sur le BX4. On achète 1000€ chaque mois où le cours est supérieur à la MM 60 avec un maximum de 33 positions prises. Target profit 20%.

    J’aurais voulu tester aussi en achetant le lundi pour vendre le vendredi mais pour le moment j’ai pas réussi. Si quelqu’un a une idée…

    ha=1000/close
    ha=round(ha)
    
    MMX=Average[60](close)
    c1=month<>month[1]
    
    If not onmarket then
    nb=0
    endif
    
    If c1 and close>MMX and nb<33 then
    buy ha shares at market
    nb=nb+1
    endif
    
    
    SET TARGET %PROFIT 20
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Backtest stratégie passive cumul achat le 1er de chaque mois


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
CoteBourse @cotebourse Participant
Summary

This topic contains 7 replies,
has 3 voices, and was last updated by vindioux
7 years, 3 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 10/28/2018
Status: Active
Attachments: No files
Logo Logo
Loading...