Je fais remonter ce sujet car j’ai eu les mêmes soucis avec le calcul des points pivots qui ne semblent pas bons et tout du moins différents de ceux de PRT.
C’est le cas de l’indicateur daily-weekly-monthly-pivot-points (dont j’ai mis le lien ci-dessous), et de nombreux stratégies/indicateurs qui reprennent le même code dans le forum.
Daily Weekly Monthly pivot points
Le soucis provient de l’utilisation de “Day>Day[1]” ou “Day<>Day[1]” et aussi de DHigh, Dlow et Dclose qui compliquent les choses…
L’indicateur Day et dayofweek change de valeur à la dernière bougie de la journée pour une time frame donnée (par exemple à 00:30 dans le cas du time frame 30minutes ou à 00:55 dans le cas du timeframe 5 minutes). Seule exception, à minuit le dimanche, là Day et dayofweek fonctionne bien si l’on teste Day<>day[1]… Ce qui complique encore plus les choses!
Or, à cette dernière bougie de la journée, Dhigh(1) ou Dlow(1) donne le plus haut ou plus bas de la journée précédante. Ce qui fait que l’indicateur va calculer le pivot avec une bougie d’avance et surtout avec les valeurs de l’avant veille pour toutes les autres bougies de la journée…
Il faudrait donc plutôt écrire : IF (DAYOFWEEK=DAYOFWEEK[1] and DAYOFWEEK<>DAYOFWEEK[2] THEN
J’ai donc refait le calcul du pivot en utilisant deux manières différentes, la première avec Dhigh, Dlow, etc, et la seconde différemment. Mais cette fois ci les pivots calculés ainsi correspondent parfaitement aux points pivots de la plateforme PRT.
IF (DAYOFWEEK=DAYOFWEEK[1] and DAYOFWEEK<>DAYOFWEEK[2] and dayofweek>1) or (DAYOFWEEK<>DAYOFWEEK[1] and dayofweek=0) then
IF dayofweek <> 1 THEN
PivotDuJour = (DHigh(1) + DLow(1) + DClose(1)) / 3
DH=DHigh(1)
DC = DClose(1)
ENDIF
If dayofweek=1 then
PivotDuJour = (DHigh(2) + DLow(2) + DClose(2)) / 3
DH=DHigh(2)
DC = DClose(2)
endif
endif
Return PivotDuJour
Et la seconde méthode qui me parait bien plus simple…
ONCE HH = high
ONCE LL = low
ONCE CC = close
IF (OpenTime = 010000 and dayofweek<>1) or (OpenTime = 000000 and dayofweek=0) THEN
yHH = HH
yLL = LL
yCC = CC
HH = high
LL = low
ENDIF
HH = max(HH,high)
LL = min(LL,low)
CC = close
Pivot = (yHH + yLL + yCC)/3
Return pivot