Bonjour,
Je débute en programmation et je suis en train de créer mon premier indicateur qui est très simple puisque je veux simplement afficher le Point Pivot.
Mon point pivot sur mon graphique de prix (CAC 40) est calculé sur une plage horaire spécifique soit 00:00 à 23:00 UTC + 01:00
Comment faire pour pouvoir faire le calcul de mon pivot dans mon indicateur avec cette même plage car actuellement mon code est :
IF dayofweek = 1 THEN
Ht = DHigh(2)
Bs = DLow(2)
C = DClose(2)
ENDIF
IF dayofweek >=2 and dayofweek < 6 THEN
Ht = DHigh(1)
Bs = DLow(1)
C = DClose(1)
ENDIF
Pivot = (Ht + Bs + C) / 3
return pivot
mais il ne donne pas la même valeur : 4811.8 sur mon graphe du cours et 4817.8 pour mon indicateur :
Je vous remercie,
Très bonne soirée
En effet les constantes OHLC du daily (DOpen, DHigh, etc.) n’utilisent pas les données des graphiques personnalisés. Voir cet exemple pour un calcul temps réel vis à vis du graphique courant: https://www.prorealcode.com/topic/decalage-dune-heure-dans-le-calcul-des-points-pivot/#post-114244
Merci beaucoup pour votre réponse.
Mais quand j’exécute le code du post mis en exemple :
If IntradayBarIndex=0 then
if prevPeriodBarIndex<>-1 then
periodHigh = Highest[BarIndex - prevPeriodBarIndex](High)[1]
periodLow = Lowest[BarIndex - prevPeriodBarIndex](Low)[1]
periodClose = Close[1]
periodOpen = Open[prevPeriodBarIndex]
If mode = 0 then
periodPivot = (periodHigh + periodLow + periodClose) / 3
Elsif mode = 1 then
periodPivot = (periodOpen + periodHigh + periodLow + periodClose) / 4
Elsif mode = 2 then
periodPivot = (periodHigh + periodLow + periodClose*2) / 4
Else
periodPivot = (periodOpen*2 + periodHigh + periodLow) / 4
Endif
periodR1 = 2*periodPivot - periodLow
periodS1 = 2*periodPivot - periodHigh
periodR2 = periodPivot + (periodHigh - periodLow)
periodS2 = periodPivot - (periodHigh - periodLow)
periodR3 = periodR1 + (periodHigh - periodLow)
periodS3 = periodS1 - (periodHigh - periodLow)
Endif
prevPeriodBarIndex = BarIndex
Endif
return periodPivot,periodR1,periodS1,periodR2,periodS2,periodR3,periodS3
J’ai l’erreur suivante : Erreur de syntaxe. Veuillez définir la variable mode
🙁
Oui car il faut définir la variable “mode” 🙂
Ajoute au début du code
mode = 0 //mode de calcul du point pivot (0,1,2 ou 3)
Merci beaucoup de prendre le temps de me répondre j’ai bien mis mode = 0.
Mais j’ai de nouveau une erreur : Un paramètre de type entier positif est attendu avec HIGHEST
🙁
Voilà le code complet et corrigé :
mode = 0 //mode de calcul du point pivot (0,1,2 ou 3)
If IntradayBarIndex=0 then
if prevPeriodBarIndex<>-1 then
periodHigh = Highest[max(1,BarIndex - prevPeriodBarIndex)](High)[1]
periodLow = Lowest[max(1,BarIndex - prevPeriodBarIndex)](Low)[1]
periodClose = Close[1]
periodOpen = Open[prevPeriodBarIndex]
If mode = 0 then
periodPivot = (periodHigh + periodLow + periodClose) / 3
Elsif mode = 1 then
periodPivot = (periodOpen + periodHigh + periodLow + periodClose) / 4
Elsif mode = 2 then
periodPivot = (periodHigh + periodLow + periodClose*2) / 4
Else
periodPivot = (periodOpen*2 + periodHigh + periodLow) / 4
Endif
periodR1 = 2*periodPivot - periodLow
periodS1 = 2*periodPivot - periodHigh
periodR2 = periodPivot + (periodHigh - periodLow)
periodS2 = periodPivot - (periodHigh - periodLow)
periodR3 = periodR1 + (periodHigh - periodLow)
periodS3 = periodS1 - (periodHigh - periodLow)
Endif
prevPeriodBarIndex = BarIndex
Endif
return periodPivot,periodR1,periodS1,periodR2,periodS2,periodR3,periodS3
Vraiment merci beaucoup cela fonctionne parfaitement.
Je vous remercie vraiment d’avoir pris le temps de me répondre
Très bonne journée
🙂
Bonjour,
Je me permets de revenir vers vous car cela fonctionne très bien sauf pour le vendredi où je me retrouve avec un décalage.
J’ai mis un fichier en pièce jointe.
Je vous remercie
Très bonne journée.