Indicateur niveaux importants et VWAP ProRealTime non fiable

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

    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
    NicolasNicolas
    Keymaster
    Legend

    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 LaveissiereGéraud Laveissiere
    Participant
    Senior

    parfait merci bien Nicolas

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

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

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 LaveissiereGéraud Laveissiere
5 months ago.

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