indicateur Cumulative volume delta

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #261541 quote
    pilou66pilou66
    Participant
    Senior

    Bonjour à tous,

    sur le graph on peut avoir un indicateur cumulative volume delta.

    Quelle est l’instruction pour utiliser ce delta dans proorder? je n’ai pas trouvé.

    et pour aller plus loin: comment cet indicateur est obtenu, calculé?

    merci de votre aide

    Capture-decran-2026-05-27-111109.png Capture-decran-2026-05-27-111109.png
    #261543 quote
    NicolasNicolas
    Keymaster
    Legend

    Les données de cet indicateur ne sont pas disponibles via le langage de programmation.

    #261544 quote
    Iván GonzálezIván González
    Moderator
    Legend

    Bonjour,

    Je réponds aux deux questions séparément :

    1) Utiliser le CVD natif dans ProOrder : ce n’est pas possible directement

    L’indicateur “Cumulative Volume Delta” que tu vois sur le graphique est un indicateur propriétaire de la plateforme qui n’est PAS exposé au langage ProBuilder/ProOrder. C’est pour ça que tu ne trouves pas l’instruction : elle n’existe pas.

    En interne, il travaille avec des données de bande tick-by-tick (chaque trade individuel classé comme agression acheteuse s’il s’exécute au ask, ou agression vendeuse s’il s’exécute au bid). Ces données ne sont pas accessibles depuis le code. Dans ProBuilder/ProOrder tu n’as que VOLUME, qui est le volume total agrégé de la bougie, sans détail acheteur/vendeur.

    2) Comment il est calculé (natif) et comment l’approximer en code

    Calcul natif :

    Pour chaque tick de la bougie : si le trade s’exécute au prix ask → son volume est ajouté au delta. S’il s’exécute au bid → il est soustrait. Le delta de la bougie est la somme de tous ces deltas tick par tick. Le CVD (cumulatif) est la somme courante des deltas de chaque bougie.

    Approximation en ProBuilder/ProOrder :

    Comme on n’a pas les ticks, il faut approximer par la direction de la bougie. Deux méthodes courantes :

    Version 1 — binaire par bougie (la plus simple) :

    once cvd = 0
    IF close > open THEN
        cvd = cvd + volume
    ELSIF close < open THEN
        cvd = cvd - volume
    ENDIF
    RETURN cvd AS "CVD approx"
    

    Version 2 — proportionnelle à la position de la clôture dans le range (plus douce) :

    once cvd = 0
    IF high > low THEN
        buyVol = volume * (close - low) / (high - low)
        sellVol = volume * (high - close) / (high - low)
        cvd = cvd + (buyVol - sellVol)
    ENDIF
    RETURN cvd AS "CVD approx prop"
    

    3) Recommandations pour l’utiliser dans un système ProOrder

    • Le CVD cumulatif depuis le début du graphique croît sans limite et n’est pas comparable d’un jour à l’autre. Pour un usage réel en système, préfère une de ces variantes : Reset par séance (intraday) :
    IF intradaybarindex = 0 THEN
        cvd = 0
    ENDIF
    

    Delta “rolling” sur N bougies (non cumulatif depuis l’origine) :

    N = 20
    cvdN = 0
    FOR i = 0 TO N-1 DO
        IF close[i] > open[i] THEN
            cvdN = cvdN + volume[i]
        ELSIF close[i] < open[i] THEN
            cvdN = cvdN - volume[i]
        ENDIF
    NEXT
    
    • Ne t’attends pas à ce que l’approximation coïncide exactement avec l’indicateur natif du graphique. En M1 ou en bougies de quelques secondes, ils divergent pas mal ; en M5+ ils se rapprochent. L’approximation capte bien le signal de pression, mais elle n’est pas identique.


    J’espère que ça t’aide.


    Nicolas thanked this post
    #261545 quote
    pilou66pilou66
    Participant
    Senior

    merci à tous les deux pour ces réponses exhaustives et rapides.

    #261546 quote
    NicolasNicolas
    Keymaster
    Legend

    J’avais ça aussi il y a quelques temps: https://www.prorealcode.com/prorealtime-indicators/cumulative-volume-delta-periods/

    Je me demande si il n’y a pas une autre version qui existe où, en temps réel, à chaque tick reçu on ajoute / retranche les volumes selon la direction du prix, à l’aide du IsLastBarUpdate. Bien entendu, ça ne serait pas disponible dans l’historique, mais uniquement à partir du moment où on place l’indicateur sur le graphique, je vais chercher.

    Iván González and robertogozzi thanked this post
    #261548 quote
    NicolasNicolas
    Keymaster
    Legend

    Autre code dispo: https://www.prorealcode.com/topic/conversion-of-delta-volume/

    Sinon, en repartant de ce code de notre bibliothèque de snippets (une mine d’or !): https://www.prorealcode.com/snippet/display-per-bar-volume-accumulation-in-real-time/

    Je dissocie les volumes lorsque le prix grimpe ou descend durant chaque bougie :

    if not isset($volumes[barindex]) then
    $volumesUp[barindex] = 0
    $volumesDn[barindex] = 0
    $volumes[barindex] = 0
    $lastPrice[barindex] = close
    endif
    
    
    if islastbarupdate then
    diff=volume-$volumes[barindex]
    if close>$lastPrice[barindex] then 
    $volumesUp[barindex]=$volumesUp[barindex]+diff
    else
    $volumesDn[barindex]=$volumesDn[barindex]+diff
    endif
    $lastPrice[barindex] = close
    $volumes[barindex] = volume
    endif 
    
    
    return $volumesUp[barindex] coloured("lightgreen") style(histogram,2), -$volumesDn[barindex] coloured("crimson") style(histogram,2)
    

    On obtient ainsi une sorte de Delta du volume par bougie, estimatif 😉

    ot2n4JJhfC.png ot2n4JJhfC.png
    #261571 quote
    pilou66pilou66
    Participant
    Senior

    merci Nicolas, je vais me plonger là dedans. j’ai construit une sorte d’indicateur de pression de force acheteuse vendeuse avec le force index qui produit un delta sur x bougies. C’est assez efficace mais pas impulsif; ça amène une vision de la tendance (les acheteurs sont en force ou pas) mais pas de l’impulsion de la bougie, c’est là que le delta volume est intéressant: ne pas entrer long sur une bougie qui a un delta négatif.

    #261576 quote
    NicolasNicolas
    Keymaster
    Legend

    Ok, c’est plutôt approximatif puisque la quantité de volume reçu est une agrégation de ce qui s’est passé dans le carnet, hors on ne connaît pas ce détail.

    Il y avait pour projet d’ajouter des instructions pour donner jusqu’à 10 ou 20 niveaux du carnet dans les instructions ; pour le moment en standby.

    #265153 quote
    LucasBestLucasBest
    Participant
    Senior


    Nicolas wrote: Autre code dispo: https://www.prorealcode.com/topic/conversion-of-delta-volume/ Sinon, en repartant de ce code de notre bibliothèque de snippets (une mine d’or !): https://www.prorealcode.com/snippet/display-per-bar-volume-accumulation-in-real-time/ Je dissocie les volumes lorsque le prix grimpe ou descend durant chaque bougie : if not isset($volumes[barindex]) then $volumesUp[barindex] = 0 $volumesDn[barindex] = 0 $volumes[barindex] = 0 $lastPrice[barindex] = close endif if islastbarupdate then diff=volume-$volumes[barindex] if close>$lastPrice[barindex] then $volumesUp[barindex]=$volumesUp[barindex]+diff else $volumesDn[barindex]=$volumesDn[barindex]+diff endif $lastPrice[barindex] = close $volumes[barindex] = volume endif return $volumesUp[barindex] coloured(“lightgreen”) style(histogram,2), -$volumesDn[barindex] coloured(“crimson”) style(histogram,2) Collapse Copy On obtient ainsi une sorte de Delta du volume par bougie, estimatif 😉

    Merci Nicolas pour ce snippet code très intéressant.

    En “jouant” avec, je me suis aperçu qu’il y avait une très grosse différence entre le Live et le Market replay…

    Dans les deux cas, le volume acheteur et le volume vendeur additionné correspondent à chaque fois au volume global donné par la plateforme par l’indicateur Volume, néanmoins la répartition des volumes acheteurs et vendeurs est drastiquement différentes systématiquement à chaque bougie.

    J’ai fait différents codes pour essayer de comprendre d’où vient la différence et le Market Replay m’a l’air bizarrement plus “juste”… Par example, en Live il arrive systématiquement (à chaque bougie de 3min ou quelque soit le time frame) d’avoir des tick avec des déplacement nul, alors qu’en Market Replay on ne retrouve ce phénomène quasi jamais…

    Capture-decran-SPTRD-Market-Replay-17h45.png Capture-decran-SPTRD-Market-Replay-17h45.png Capture-decran-SPTRD-Live-17h45.png Capture-decran-SPTRD-Live-17h45.png
    #265411 quote
    LucasBestLucasBest
    Participant
    Senior

    Up, je me permets de remonter ce fil… Si quelqu’un a une réponse à cette énigme, j’aimerais bien comprendre la différence de comportement entre le live et le trading live…

    #265415 quote
    NicolasNicolas
    Keymaster
    Legend

    Ce code ne différencie pas les véritables volumes Bid et Ask, on n’a pas accès au carnet d’ordres via ProBuilder pour le moment, c’était en projet toutefois pour la plateforme desktop, on en reparlera pour la version web (je travaille à une grosse surprise pour la version web, encore un peu de patience).

    Ensuite, qu’il y ai des différences entre le market replay et le live, c’est normal, après vérification, on rejoue bien les mêmes ticks qu’en live, mais pas à la même fréquence. D’où une différence sur la restitution des volumes.

    Iván González thanked this post
Viewing 11 posts - 1 through 11 (of 11 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 Cumulative volume delta


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
pilou66 @pilou66 Participant
Summary

This topic contains 10 replies,
has 4 voices, and was last updated by NicolasNicolas
3 weeks, 3 days ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 05/27/2026
Status: Active
Attachments: 3 files
ProRealCode ProRealCode
Loading...