Décalage horaire calcul Point Pivot

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #146119 quote
    netskiss
    Participant
    Average

    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

    #146136 quote
    Nicolas
    Keymaster
    Master

    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

    #146148 quote
    netskiss
    Participant
    Average

    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

    🙁

    #146176 quote
    Nicolas
    Keymaster
    Master

    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)
    #146178 quote
    netskiss
    Participant
    Average

    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

    🙁

    #146179 quote
    Nicolas
    Keymaster
    Master

    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
    #146190 quote
    netskiss
    Participant
    Average

    Vraiment merci beaucoup cela fonctionne parfaitement.

    Je vous remercie vraiment d’avoir pris le temps de me répondre

    Très bonne journée

    🙂

    #146447 quote
    netskiss
    Participant
    Average

    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.

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

Décalage horaire calcul Point Pivot


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
netskiss @netskiss Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by netskiss
5 years, 5 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 10/01/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...