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 !
C’est plutôt simple, le premier jour du mois on change de mois 🙂
test = openmonth<>openmonth[1]
return test
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 !
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
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.
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,
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
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
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 !
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
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 ?
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.
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 ! 🙂
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 😉