Indicateur niveaux importants et VWAP ProRealTime non fiable

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #260415 quote
    Géraud Laveissiere
    Participant
    Junior

    Bonjour

    J’ai demandé à Claudecode de créer un itf avec tous les niveaux importants. Or il y a des erreurs. est ce possible de repaerr ce code ?

    // ============================================

    // INDICATEUR NIVEAUX IMPORTANTS + VWAP

    // Low, High, Close J-1 | Semaine précédente

    // POC, VAH, VAL J-1 et Semaine précédente

    // Open du jour

    // VWAP Jour, J-1, Semaine précédente

    // Labels blancs à gauche

    // ============================================


    // ———————————————–

    // DONNÉES JOURNALIÈRES

    // ———————————————–


    // — Niveaux J-1 —

    YesterdayLow = DailyLow(1)

    YesterdayHigh = DailyHigh(1)

    YesterdayClose = DailyClose(1)


    // — Open du jour —

    TodayOpen = DailyOpen(0)


    // ———————————————–

    // SEMAINE PRÉCÉDENTE

    // ———————————————–

    WeekLow = WeekLow(1)

    WeekHigh = WeekHigh(1)

    WeekClose = WeekClose(1)


    // ———————————————–

    // VWAP DU JOUR

    // Calcul : somme(prix typique x volume) / somme(volume)

    // Prix typique = (High + Low + Close) / 3

    // ———————————————–

    cumTPV_day = 0 // cumul typicalPrice x Volume

    cumVol_day = 0 // cumul Volume


    FOR i = 0 TO 1439

     IF Date[i] = Date[0] THEN

      typicalPrice = (High[i] + Low[i] + Close[i]) / 3

      cumTPV_day = cumTPV_day + (typicalPrice * Volume[i])

      cumVol_day = cumVol_day + Volume[i]

     ENDIF

    NEXT


    IF cumVol_day > 0 THEN

     VWAP_day = cumTPV_day / cumVol_day

    ELSE

     VWAP_day = Close

    ENDIF


    // ———————————————–

    // VWAP J-1

    // ———————————————–

    cumTPV_yest = 0

    cumVol_yest = 0


    FOR i = 0 TO 1439

     IF Date[i] = Date[1] THEN

      typicalPrice = (High[i] + Low[i] + Close[i]) / 3

      cumTPV_yest = cumTPV_yest + (typicalPrice * Volume[i])

      cumVol_yest = cumVol_yest + Volume[i]

     ENDIF

    NEXT


    IF cumVol_yest > 0 THEN

     VWAP_yesterday = cumTPV_yest / cumVol_yest

    ELSE

     VWAP_yesterday = YesterdayClose

    ENDIF


    // ———————————————–

    // VWAP SEMAINE PRÉCÉDENTE

    // ———————————————–

    cumTPV_week = 0

    cumVol_week = 0


    FOR i = 0 TO 10079

     IF Date[i] >= WeekStart(1) AND Date[i] <= WeekEnd(1) THEN

      typicalPrice = (High[i] + Low[i] + Close[i]) / 3

      cumTPV_week = cumTPV_week + (typicalPrice * Volume[i])

      cumVol_week = cumVol_week + Volume[i]

     ENDIF

    NEXT


    IF cumVol_week > 0 THEN

     VWAP_week = cumTPV_week / cumVol_week

    ELSE

     VWAP_week = WeekClose

    ENDIF


    // ———————————————–

    // VOLUME PROFILE – POC, VAH, VAL J-1

    // ———————————————–

    highestVol = 0

    POC_yesterday = 0

    VAH_yesterday = 0

    VAL_yesterday = 0


    FOR i = 0 TO 1439

     IF Date[i] = Date[1] THEN

      IF Volume[i] > highestVol THEN

       highestVol = Volume[i]

       POC_yesterday = Close[i]

      ENDIF

     ENDIF

    NEXT


    totalVolYest = 0

    FOR i = 0 TO 1439

     IF Date[i] = Date[1] THEN

      totalVolYest = totalVolYest + Volume[i]

     ENDIF

    NEXT


    cumVol = 0

    VAH_yesterday = POC_yesterday

    VAL_yesterday = POC_yesterday


    FOR i = 0 TO 1439

     IF Date[i] = Date[1] THEN

      cumVol = cumVol + Volume[i]

      IF cumVol <= totalVolYest * 0.35 THEN

       IF Close[i] > VAH_yesterday THEN

        VAH_yesterday = Close[i]

       ENDIF

      ELSE

       IF Close[i] < VAL_yesterday THEN

        VAL_yesterday = Close[i]

       ENDIF

      ENDIF

     ENDIF

    NEXT


    // ———————————————–

    // VOLUME PROFILE – POC, VAH, VAL SEMAINE PRÉCÉDENTE

    // ———————————————–

    highestVolW = 0

    POC_week = 0

    VAH_week = 0

    VAL_week = 0


    FOR i = 0 TO 10079

     IF Date[i] >= WeekStart(1) AND Date[i] <= WeekEnd(1) THEN

      IF Volume[i] > highestVolW THEN

       highestVolW = Volume[i]

       POC_week = Close[i]

      ENDIF

     ENDIF

    NEXT


    totalVolWeek = 0

    FOR i = 0 TO 10079

     IF Date[i] >= WeekStart(1) AND Date[i] <= WeekEnd(1) THEN

      totalVolWeek = totalVolWeek + Volume[i]

     ENDIF

    NEXT


    cumVolW = 0

    VAH_week = POC_week

    VAL_week = POC_week


    FOR i = 0 TO 10079

     IF Date[i] >= WeekStart(1) AND Date[i] <= WeekEnd(1) THEN

      cumVolW = cumVolW + Volume[i]

      IF cumVolW <= totalVolWeek * 0.35 THEN

       IF Close[i] > VAH_week THEN

        VAH_week = Close[i]

       ENDIF

      ELSE

       IF Close[i] < VAL_week THEN

        VAL_week = Close[i]

       ENDIF

      ENDIF

     ENDIF

    NEXT


    // ———————————————–

    // TRACÉ DES LIGNES – NIVEAUX JOURNALIERS (traits pleins)

    // ———————————————–

    DRAWLEVEL(YesterdayLow, colWhite, 1, 1, “Low J-1”)

    DRAWLEVEL(YesterdayHigh, colWhite, 1, 1, “High J-1”)

    DRAWLEVEL(YesterdayClose, colWhite, 1, 1, “Close J-1”)

    DRAWLEVEL(TodayOpen, colWhite, 1, 1, “Open Jour”)


    // ———————————————–

    // TRACÉ DES LIGNES – NIVEAUX SEMAINE (traits épais)

    // ———————————————–

    DRAWLEVEL(WeekHigh, colWhite, 1, 2, “High S-1”)

    DRAWLEVEL(WeekLow, colWhite, 1, 2, “Low S-1”)

    DRAWLEVEL(WeekClose, colWhite, 1, 2, “Close S-1”)


    // ———————————————–

    // TRACÉ DES LIGNES – VOLUME PROFILE J-1

    // ———————————————–

    DRAWLEVEL(POC_yesterday, colWhite, 1, 1, “POC J-1”)

    DRAWLEVEL(VAH_yesterday, colWhite, 1, 1, “VAH J-1”)

    DRAWLEVEL(VAL_yesterday, colWhite, 1, 1, “VAL J-1”)


    // ———————————————–

    // TRACÉ DES LIGNES – VOLUME PROFILE SEMAINE

    // ———————————————–

    DRAWLEVEL(POC_week, colWhite, 1, 2, “POC S-1”)

    DRAWLEVEL(VAH_week, colWhite, 1, 2, “VAH S-1”)

    DRAWLEVEL(VAL_week, colWhite, 1, 2, “VAL S-1”)


    // ———————————————–

    // TRACÉ DES LIGNES – VWAP (pointillés)

    // ———————————————–

    DRAWLEVEL(VWAP_day, colWhite, 2, 1, “VWAP Jour”)

    DRAWLEVEL(VWAP_yesterday, colWhite, 2, 1, “VWAP J-1”)

    DRAWLEVEL(VWAP_week, colWhite, 2, 2, “VWAP S-1”)


    // ———————————————–

    // RETOUR obligatoire

    // ———————————————–

    RETURN 0

    #260441 quote
    Nicolas
    Keymaster
    Master

    Il y a de très nombreuses erreurs dans ce code, je viens de le retravailler avec notre propre modèle d’intelligence artificielle qui sera bientôt disponible à la communauté (en test interne pour le moment), bien plus performant et adapté à la programmation pour ProRealTime, encore quelques semaines et on sera prêt pour une sortie officielle 🙂

    Voici un résumé de tous les changements effectués :

    • DailyHigh/DailyLow/DailyClose/DailyOpen remplacés par DHigh, DLow, DClose, DOpen qui sont les fonctions ProBuilder officielles.
    • WeekHigh/WeekLow/WeekClose remplacés par un bloc TIMEFRAME(1 week, updateonclose) avec high[1], low[1], close[1] pour lire la semaine précédente.
    • WeekStart/WeekEnd supprimés, inexistants en ProBuilder. La détection de la semaine utilise OpenDayOfWeek = 1 (lundi).
    • DRAWLEVEL remplacé par DRAWHLINE(valeur) COLOURED(r,g,b). DRAWLEVEL n’existe pas.
    • Les boucles FOR rétroactives sur 1439/10079 barres entièrement supprimées. En ProBuilder, les index [i] dans une boucle FOR représentent des barres passées de la série, pas des minutes d’une journée. Le calcul est remplacé par une accumulation barre à barre avec reset au changement de date/semaine via les conditions date <> date[1] et OpenDayOfWeek.
    • DEFPARAM drawonlastbaronly = true ajouté pour que les DRAWHLINE soient tracés uniquement sur la dernière barre visible, ce qui est l’usage standard pour ce type d’indicateur de niveaux fixes.
    • Les couleurs des niveaux sont différenciées par type (blanc pour journalier, gris pour hebdo, jaune pour POC/VAH/VAL J-1, bleu pour semaine) pour améliorer la lisibilité, car DRAWHLINE ne supporte pas de labels texte.


    // ============================================
    // INDICATEUR NIVEAUX IMPORTANTS + VWAP
    // Low, High, Close J-1 | Semaine precedente
    // POC, VAH, VAL J-1 et Semaine precedente
    // Open du jour
    // VWAP Jour, J-1, Semaine precedente
    // ============================================
    
    
    DEFPARAM drawonlastbaronly = true
    
    
    // -----------------------------------------------
    // DONNEES JOURNALIERES via fonctions D*
    // -----------------------------------------------
    YesterdayLow   = DLow(1)
    YesterdayHigh  = DHigh(1)
    YesterdayClose = DClose(1)
    TodayOpen      = DOpen(0)
    
    
    // -----------------------------------------------
    // DONNEES SEMAINE PRECEDENTE via TIMEFRAME weekly
    // -----------------------------------------------
    TIMEFRAME(1 week, updateonclose)
    WeekHighVal  = high[1]
    WeekLowVal   = low[1]
    WeekCloseVal = close[1]
    TIMEFRAME(default)
    
    
    // -----------------------------------------------
    // VWAP DU JOUR
    // Accumulation barre a barre, reset au changement de date
    // -----------------------------------------------
    IF date <> date[1] THEN
        cumTPVday = typicalPrice * volume
        cumVolday = volume
    ELSE
        cumTPVday = cumTPVday[1] + typicalPrice * volume
        cumVolday = cumVolday[1] + volume
    ENDIF
    
    
    IF cumVolday > 0 THEN
        VWAPday = cumTPVday / cumVolday
    ELSE
        VWAPday = close
    ENDIF
    
    
    // -----------------------------------------------
    // VWAP J-1 : valeur finale du VWAP au dernier moment de J-1
    // On stocke le VWAP quand on est encore sur J-1 et qu'on
    // est a la derniere barre de cette journee
    // -----------------------------------------------
    IF date[1] <> date[2] THEN
        VWAPyesterday = VWAPday[1]
    ELSE
        VWAPyesterday = VWAPyesterday[1]
    ENDIF
    
    
    // -----------------------------------------------
    // VWAP SEMAINE PRECEDENTE
    // Accumulation sur la semaine courante, reset chaque lundi
    // On garde la valeur finale de la semaine precedente
    // -----------------------------------------------
    IF OpenDayOfWeek = 1 AND OpenDayOfWeek[1] <> 1 THEN
        // Premier bar du lundi : reset
        cumTPVweek = typicalPrice * volume
        cumVolweek = volume
    ELSE
        cumTPVweek = cumTPVweek[1] + typicalPrice * volume
        cumVolweek = cumVolweek[1] + volume
    ENDIF
    
    
    IF cumVolweek > 0 THEN
        VWAPweekCur = cumTPVweek / cumVolweek
    ELSE
        VWAPweekCur = close
    ENDIF
    
    
    // Sauvegarder le VWAP de fin de semaine precedente
    IF OpenDayOfWeek = 1 AND OpenDayOfWeek[1] <> 1 THEN
        VWAPweek = VWAPweekCur[1]
    ELSE
        VWAPweek = VWAPweek[1]
    ENDIF
    
    
    // -----------------------------------------------
    // VOLUME PROFILE J-1 : POC, VAH, VAL
    // Accumulation barre a barre sur J-1
    // POC = Close de la barre avec le plus grand volume sur J-1
    // -----------------------------------------------
    IF date[1] <> date[2] THEN
        // On vient de passer a J-1 : on lit la toute derniere valeur connue
        // POC : on accumule sur J-1 barre par barre
        IF volume[1] > maxVolYest THEN
            maxVolYest = volume[1]
            POCyesterday = close[1]
        ENDIF
    ENDIF
    
    
    // Accumulation sur la journee courante pour préparer J-1 le lendemain
    IF date <> date[1] THEN
        maxVolDay   = volume
        POCdayCur   = close
        totalVolDay = volume
        cumVolForVA = volume
        VAHdayCur   = close
        VALdayCur   = close
    ELSE
        totalVolDay = totalVolDay[1] + volume
        IF volume > maxVolDay[1] THEN
            maxVolDay = volume
            POCdayCur = close
        ELSE
            maxVolDay = maxVolDay[1]
            POCdayCur = POCdayCur[1]
        ENDIF
        cumVolForVA = cumVolForVA[1] + volume
        IF cumVolForVA <= totalVolDay * 0.70 THEN
            IF close > VAHdayCur[1] THEN
                VAHdayCur = close
            ELSE
                VAHdayCur = VAHdayCur[1]
            ENDIF
            VALdayCur = VALdayCur[1]
        ELSE
            VAHdayCur = VAHdayCur[1]
            IF close < VALdayCur[1] THEN
                VALdayCur = close
            ELSE
                VALdayCur = VALdayCur[1]
            ENDIF
        ENDIF
    ENDIF
    
    
    // Figer les valeurs de J-1 au passage au jour suivant
    IF date <> date[1] THEN
        POCyesterday  = POCdayCur[1]
        VAHyesterday  = VAHdayCur[1]
        VALyesterday  = VALdayCur[1]
    ELSE
        POCyesterday  = POCyesterday[1]
        VAHyesterday  = VAHyesterday[1]
        VALyesterday  = VALyesterday[1]
    ENDIF
    
    
    // -----------------------------------------------
    // VOLUME PROFILE SEMAINE PRECEDENTE
    // -----------------------------------------------
    IF OpenDayOfWeek = 1 AND OpenDayOfWeek[1] <> 1 THEN
        maxVolWk    = volume
        POCweekCur  = close
        totVolWk    = volume
        cumVolWkVA  = volume
        VAHweekCur  = close
        VALweekCur  = close
    ELSE
        totVolWk = totVolWk[1] + volume
        IF volume > maxVolWk[1] THEN
            maxVolWk   = volume
            POCweekCur = close
        ELSE
            maxVolWk   = maxVolWk[1]
            POCweekCur = POCweekCur[1]
        ENDIF
        cumVolWkVA = cumVolWkVA[1] + volume
        IF cumVolWkVA <= totVolWk * 0.70 THEN
            IF close > VAHweekCur[1] THEN
                VAHweekCur = close
            ELSE
                VAHweekCur = VAHweekCur[1]
            ENDIF
            VALweekCur = VALweekCur[1]
        ELSE
            VAHweekCur = VAHweekCur[1]
            IF close < VALweekCur[1] THEN
                VALweekCur = close
            ELSE
                VALweekCur = VALweekCur[1]
            ENDIF
        ENDIF
    ENDIF
    
    
    IF OpenDayOfWeek = 1 AND OpenDayOfWeek[1] <> 1 THEN
        POCweek  = POCweekCur[1]
        VAHweek  = VAHweekCur[1]
        VALweek  = VALweekCur[1]
    ELSE
        POCweek  = POCweek[1]
        VAHweek  = VAHweek[1]
        VALweek  = VALweek[1]
    ENDIF
    
    
    // -----------------------------------------------
    // TRACE DES NIVEAUX JOURNALIERS
    // -----------------------------------------------
    DRAWHLINE(YesterdayLow)   COLOURED(255,255,255)
    DRAWHLINE(YesterdayHigh)  COLOURED(255,255,255)
    DRAWHLINE(YesterdayClose) COLOURED(255,255,255)
    DRAWHLINE(TodayOpen)      COLOURED(255,255,255)
    
    
    // -----------------------------------------------
    // TRACE DES NIVEAUX HEBDOMADAIRES
    // -----------------------------------------------
    DRAWHLINE(WeekHighVal)   COLOURED(200,200,200)
    DRAWHLINE(WeekLowVal)    COLOURED(200,200,200)
    DRAWHLINE(WeekCloseVal)  COLOURED(200,200,200)
    
    
    // -----------------------------------------------
    // TRACE VOLUME PROFILE J-1
    // -----------------------------------------------
    DRAWHLINE(POCyesterday) COLOURED(255,200,0)
    DRAWHLINE(VAHyesterday) COLOURED(255,150,0)
    DRAWHLINE(VALyesterday) COLOURED(255,150,0)
    
    
    // -----------------------------------------------
    // TRACE VOLUME PROFILE SEMAINE PRECEDENTE
    // -----------------------------------------------
    DRAWHLINE(POCweek) COLOURED(0,200,255)
    DRAWHLINE(VAHweek) COLOURED(0,150,200)
    DRAWHLINE(VALweek) COLOURED(0,150,200)
    
    
    // -----------------------------------------------
    // TRACE VWAP
    // -----------------------------------------------
    DRAWHLINE(VWAPday)       COLOURED(255,255,0)
    DRAWHLINE(VWAPyesterday) COLOURED(200,200,0)
    DRAWHLINE(VWAPweek)      COLOURED(0,255,200)
    
    
    RETURN 
    
    robertogozzi thanked this post
    niveaux-importants-cles-trading.png niveaux-importants-cles-trading.png
    #260444 quote
    Géraud Laveissiere
    Participant
    Junior

    parfait merci bien Nicolas

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

Indicateur niveaux importants et VWAP ProRealTime non fiable


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by Géraud Laveissiere
3 weeks, 2 days ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 04/22/2026
Status: Active
Attachments: 1 files
Logo Logo
Loading...