Astuce "dernier jour du mois" ?

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #30019 quote
    Doctrading
    Participant
    Master

    Bonjour à tous,

    Je cherche une petite astuce pour indiquer le “dernier jour du mois”.

    Par exemple :

    IF “dernier jour du mois” THEN…

    Une idée ?

    Ou pourquoi pas le premier jour du mois aussi…

    Merci à tous !

    #30025 quote
    Nicolas
    Keymaster
    Master

    C’est plutôt simple, le premier jour du mois on change de mois 🙂

    test = openmonth<>openmonth[1]
    
    return test
    #30060 quote
    Doctrading
    Participant
    Master

    Merci !

    #31920 quote
    Doctrading
    Participant
    Master

    Désolé de vous redéranger.

    En fait ce code indique une valeur positive pour indiquer le 1er jour du mois.
    Je cherche une astuce pour indiquer la veille.
    Par exemple pour backtester une stratégie qui achèterait au dernier jour du mois : comment lui faire comprendre quelque chose du genre :

    “IF (dernier jour du mois) THEN”
    Une idée ?
    Merci !

    #31923 quote
    Doctrading
    Participant
    Master

    PS : en fait, je précise qu’évidemment, je cherche à indiquer le dernier jour de trading du mois !

    Si le dernier jour du mois est un dimanche, on indiquera le vendredi, soit 2 jours auparavant
    Merci

    #31936 quote
    Nicolas
    Keymaster
    Master

    Ce site devrait t’aider à savoir combien de jours comptent chaque mois 🙂

    https://jeretiens.net/mois-de-30-jours-mois-de-31-jours/

    Ensuite il faut créer des variables en dur pour enregistrer ces informations. Avec un test rapide pour savoir si on est en Avril, alors tu saura qu’il n’y a que 30 jours.

    Si le 28 tombe un Vendredi (comme c’est le cas cette année), 28+2=30, oops c’est un Dimanche, THEN prendre les dispositions qui s’imposent.

    Sinon, on peut utiliser l’algorithme de Keith (très utilisé en programmation), je viens de coder le snippet pour toi:

    //find the day number with a date
    myYear=2017
    myMonth=2
    myDay=13
    
    if myMonth >= 3 then
    D = (((23*myMonth)/9) + myDay + 4 + myYear + (myYear/4) - (myYear/100) + (myYear/400) - 2) mod 7
    else
    z = myYear - 1
    D = (((23*myMonth)/9) + myDay + 4 + myYear + (z/4) - (z/100) + (z/400) ) mod 7
    endif
    
    return D

    D te retournera le jour de la semaine.

    #31944 quote
    Doctrading
    Participant
    Master

    Merci Nicolas,

    Je me suis longtemps servi de l’astuce avec le dos de la main et ses articulations…

    C’est quand même dommage que PRT ne propose pas tout simplement une instruction pour déterminer le dernier jour de l’année…

    Je vais étudier le code que tu m’as proposé. Je devrais en tirer une stratégie vraiment profitable (très profitable en manuel en tout cas).

    Là où sa se complique, c’est pour les années bissextiles…

    J’avais commencé à taper un code recensant tous les derniers jours des mois, éliminer les dimanches, etc. Trop complexe !

    Bien à toi,

    #31948 quote
    Doctrading
    Participant
    Master

    PS : pour les années bissextiles (AB) :

    IF (year mod 4) = 0 THEN
    AB = 1
    ENDIF
    
    Return AB

    Ne fonctionne pas…

    Je vais encore me creuser la tête !

    A bientôt

    #31953 quote
    Nicolas
    Keymaster
    Master

    Cette fonction Visual Basic devrait t’aider:

    Function IsBisextil(maDate As Date) As Boolean
    'Fonction de contrôle de la bisextilité d'une année à partir d'une date
     
    'Les conditions pour avoir une année bisextile sont les suivantes:
    ' - année divisible par 4 : année bisextile
    ' - exception : année divisible par 100 : année non bisextile
    ' - exception de l'exception : année divisible par 400 : année bisextile
     
        If Year(maDate) Mod 4 = 0 And (Year(maDate) Mod 100 <> 0 Or Year(maDate) Mod 400 = 0) Then
            IsBisextil = True
        Else
            IsBisextil = False
        End If
     
    End Function
    #31955 quote
    Doctrading
    Participant
    Master

    Suis-je bête, il fallait rajouter :

    IF (year mod 4) = 0 THEN AB = 1
    ELSE
    AB = 0 ENDIF
    Return AB

    Je vais continuer ma recherche, merci !

    #32342 quote
    Doctrading
    Participant
    Master

    PRT me confirme qu’il n’y a pas d’instruction pour cela.
    Je me suis arraché les cheveux quelques heures pour mettre au point un code qui fonctionne et qui me donne précisément la date du dernier jour du mois.
    Problème : il ne fonctionne pas bien certains mois où il manque des jours de données !

    Donc à oublier.

    J’attendrai patiemment que PRT fournisse cette nouvelle commande : dernier jour du mois.
    A bientôt

    #32470 quote
    Nicolas
    Keymaster
    Master

    Oui il n’y pas d’instruction, il ne peut pas y en avoir pour chaque calcul mathématique aussi simple, d’ailleurs je ne connais pas d’autres langages te retournant le dernier jour du mois dans une instruction “toute faite”. J’ai pourtant fourni tout ce qu’il fallait pour le trouver ce dernier jour du mois ! 🙂

    Donc, si je résume ta demande, tu veux savoir si le jour actuel est le dernier jour du mois ? et si c’est un Dimanche, indiquer le Vendredi ?

    #32499 quote
    Doctrading
    Participant
    Master

    Oui, c’est cela.

    J’ai essayé avec l’algorithme de Keith, mais pour moi toutes les années séculaires (1900, 2000, 2100) sont des années bissextiles, j’ai donc voulu en modifier la formule.
    C’est pas grave, j’essaierai de trouver un autre moyen, ou d’attendre de voir si PRT fait une mise à jour avec cette instruction (ils m’ont dit qu’ils y songeraient).
    Merci à toi.

    #32511 quote
    Nicolas
    Keymaster
    Master

    Bon j’ai codé une fonction pour retourner le dernier jour de trade valide du mois. Je posterai l’ensemble demain.

    Je devrais en tirer une stratégie vraiment profitable (très profitable en manuel en tout cas).

    On a hâte ! 🙂

    last-trading-day-of-the-month.png last-trading-day-of-the-month.png
    #32515 quote
    Doctrading
    Participant
    Master

    Merci beaucoup.
    J’attends ça avec impatience.

    Je m’arrangerai pour faire un backtest avec un ordre genre “acheter le dernier jour de trading de chaque mois”.

    Si c’est profitable, je le posterai dans la “Library”.
    Bonne soirée 😉

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

Astuce "dernier jour du mois" ?


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Doctrading @doctrading Participant
Summary

This topic contains 16 replies,
has 2 voices, and was last updated by Doctrading
8 years, 10 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 03/27/2017
Status: Active
Attachments: 2 files
Logo Logo
Loading...