Volume Better(Evolution)

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #55034 quote
    Alai-n
    Participant
    Veteran

    Bonjour,

    Serait-il possible d’envisager une évolution pour le code “Volume Better” avec un affichage sur les bougies en + d’un affichage fenêtre indicateur ???

    Exemple ci-joint : http://emini-watch.com/free-stuff/volume-indicator/

    // Better Volume Indicator
    // Original idea by emini-watch.com
    // Source : http://emini-watch.com/free-stuff/volume-indicator/ AND http://emini-watch.com/category/volume-indicator/
    
    // Rewrite for ProRealTime / ChartNet / CMC by Dutchy, march 2009
    // Code is provided as public domain, no warranty.
    // You can find Dutchy on following fora
    // http://www.aktienboard.com/forum/f29/prorealtime-cmc-script-programmierung-t94783/
    // http://www.pro-at.com/forums-bourse/sujet-Forums-Partenaires-Forum-ProRealTime-92.html
    // Peace
    
    // Better Volume Indicator - Summary
    // ClimaxUp (Red) : Top, Start Up Trend, Down Trend Continue
    // ClimaxDown (White): Bottom, Up Trend Continue, Start Down Trend
    // LowVolume (Yellow): Bottom, Top, Up Trend Continue
    // Churn (Green): Bottom, Top, Down Trend Continue
    // ClimaxChurn (Magenta): Top, Down Trend Continue
    
    // Parameter: History = Boolean
    // Parameter: Use2Bars = Boolean
    // Parameter: Lookback = 20
    
    ONCE Condition1 = 0
    ONCE Condition2 = 0
    ONCE Condition3 = 0
    ONCE Condition4 = 0
    ONCE Condition5 = 0
    ONCE Condition6 = 0
    ONCE Condition7 = 0
    ONCE Condition8 = 0
    ONCE Condition9 = 0
    ONCE Condition10 = 0
    ONCE Condition11 = 0
    ONCE Condition12 = 0
    ONCE Condition13 = 0
    ONCE Condition14 = 0
    ONCE Condition15 = 0
    ONCE Condition16 = 0
    ONCE Condition17 = 0
    ONCE Condition18 = 0
    ONCE Condition19 = 0
    ONCE Condition20 = 0
    
    VolValue = Volume
    LowVolValue = VolValue
    ClimaxUpValue = VolValue
    ClimaxDownValue = VolValue
    ChurnValue = VolValue
    ClimaxChurnValue = VolValue
    StopVolValue = VolValue
    TrampolineValue = VolValue
    AVVolume = Average[Lookback*2](VolValue)
    
    IF History = 0 THEN
        BI = 400
    ELSIF History = 1 THEN
        BI = Lookback
    ENDIF
    
    IF BARINDEX > BI AND Volume <> 0 THEN
            
        IF Close > Open THEN
            Value1 = Volume * (Range / (2 * Range + Open - Close))
        ELSIF Close < Open THEN
            Value1= Volume * ((Range + Close - Open) / (2 * Range + Close - Open))
        ENDIF
        IF Close = Open THEN
            Value1 = 0.5 * Volume
        ENDIF
        Value2 = Volume  - Value1
        
        Value3 = Value1 + Value2
        Value4 = Value1 * Range
        Value5 = (Value1 - Value2) * Range
        Value6 = Value2 * Range
        Value7 = (Value2 - Value1) * Range
        IF Range <> 0 THEN
            Value8 = Value1 / Range
            Value9 = (Value1 - Value2) / Range
            Value10 = Value2 / Range
            Value11 = (Value2 - Value1) / Range
            Value12 = Value3 / Range
        ENDIF
        
        Value13 = Value3 +Value3[1]
        Value14 = (Value1+Value1[1]) * (Highest[2](High) - Lowest[2](Low))
        Value15 = (Value1+Value1[1] - Value2 - Value2[1]) * (Highest[2](High) - Lowest[2](Low))
        Value16 = (Value2 + Value2[1]) * (Highest[2](High) - Lowest[2](Low))
        Value17 = (Value2 + Value2[1] - Value1 - Value1[1]) * (Highest[2](High) - Lowest[2](Low))
        IF Highest[2](High) <> Lowest[2](Low) THEN
            Value18 = (Value1 + Value1[1]) / (Highest[2](High) - Lowest[2](Low))
        ENDIF
        Value19 = (Value1 + Value1[1] - Value2 - Value2[1]) / (Highest[2](High) - Lowest[2](Low))
        Value20 = (Value2 + Value2[1]) / (Highest[2](High) - Lowest[2](Low))
        Value21 = (Value2 + Value2[1] - Value1 - Value1[1]) / (Highest[2](High) - Lowest[2](Low))
        Value22 = Value13 / (Highest[2](High) - Lowest[2](Low))
        
        IF Use2Bars = 0 THEN
            Condition1 = Value3 = Lowest[Lookback](Value3)
            Condition2 = Value4 = Highest[Lookback](Value4) AND Close > Open
            Condition3 = Value5 = Highest[Lookback](Value5) AND Close > Open
            Condition4 = Value6 = Highest[Lookback](Value6) AND Close < Open
            Condition5 = Value7 = Highest[Lookback](Value7) AND Close < Open
            Condition6 = Value8 = Lowest[Lookback](Value8) AND Close < Open
            Condition7 = Value9 = Lowest[Lookback](Value9) AND Close < Open
            Condition8 = Value10 = Lowest[Lookback](Value10) AND Close > Open
            Condition9 = Value11 = Lowest[Lookback](Value11) AND Close > Open
            Condition10 = Value12 = Highest[Lookback](Value12)
        ELSIF Use2Bars = 1 THEN
            Condition11 = Value13 = Lowest[Lookback](Value13)
            Condition12 = Value14 = Highest[Lookback](Value14) AND Close > Open AND Close[1] > Open[1]
            Condition13 = Value15 = Highest[Lookback](Value15) AND Close > Open AND Close[1] > Open[1]
            Condition14 = Value16 = Highest[Lookback](Value16) AND Close < Open AND Close[1] < Open[1]
            Condition15 = Value17 = Highest[Lookback](Value17) AND Close < Open AND Close[1] < Open[1]
            Condition16 = Value18 = Lowest[Lookback](Value18) AND Close < Open AND Close[1] < Open[1]
            Condition17 = Value19 = Lowest[Lookback](Value19) AND Close < Open AND Close[1] < Open[1]
            Condition18 = Value20 = Lowest[Lookback](Value20) AND Close > Open AND Close[1] > Open[1]
            Condition19 = Value21 = Lowest[Lookback](Value21) AND Close > Open AND Close[1] > Open[1]
            Condition20 = Value22 = Highest[Lookback](Value22)
        ENDIF
        
        // *********************************************************************************************
        
        IF (Condition1 or Condition11) THEN    // Yellow
            LowVol = LowVolValue
        ELSE
            LowVol = 0
        ENDIF
        
        IF (Condition2 or Condition3 or Condition8 or Condition9 or Condition12 or Condition13 or Condition18 or Condition19) THEN        // Red
            ClimaxUp = ClimaxUpValue
            IF LowVol <> 0 THEN
                ClimaxUp = ClimaxUpValue / 2
            ENDIF
        ELSE
            ClimaxUp = 0
        ENDIF
        
        IF (Condition4 or Condition5 or Condition6 or Condition7 or Condition14 or Condition15 or Condition16 or Condition17) THEN        // White
            ClimaxDown = ClimaxDownValue
            IF LowVol <> 0 OR ClimaxUp <> 0 THEN
                ClimaxDown = ClimaxDownValue
            ENDIF
        ELSE
            ClimaxDown = 0
        ENDIF
        
        IF (Condition10 or Condition20) THEN    // Green
            Churn = ChurnValue
            IF LowVol <> 0 OR ClimaxUp <> 0 OR ClimaxDown <> 0 THEN
                Churn = ChurnValue / 2
            ENDIF
        ELSE
            Churn = 0
        ENDIF
        
        //IF (Condition10 or Condition20) AND (Condition2 or Condition3 or Condition4 or Condition5 or Condition6 or Condition7 or Condition8 or Condition9 or Condition12 or Condition13 or Condition14 or Condition15 or Condition16 or Condition17 or Condition18 or Condition19) THEN
        IF Churn <> 0 AND (ClimaxUp <> 0 OR ClimaxDown <> 0) THEN        // Magenta
            ClimaxChurn = ClimaxChurnValue
        ELSE
            ClimaxChurn = 0
        ENDIF
        
        //StopVolume
        LocalClosingPosition = 1 - (High - Close) / (High - Low)
        IF Volume > Volume[1] AND Range < Range[1] AND ((High > High[1] AND LocalClosingPosition < 0.4) OR (Low < Low[1] AND LocalClosingPosition > 0.6)) THEN
            StopVol = StopVolValue    * 1 / 3     // HigherVolume & LowerRange @ HigherHigh or LowerLow - DBlue
        ELSE
            StopVol = 0
        ENDIF
        
        //Trampoline
        FOR i = 1 TO 2        // Close together
            IF ((ClimaxChurn[i] > 0 OR ClimaxUp[i] > 0) AND (ClimaxChurn > 0 OR ClimaxUp > 0)) AND ((Close[i] > Open[i] AND Close < Open) OR (Close[i] < Open[i] AND Close > Open)) THEN
                Trampoline = TrampolineValue * 1 / 4
                BREAK
            ELSE
                Trampoline = 0
            ENDIF
        NEXT
        
    ENDIF
    
    RETURN Volume COLOURED (0, 200, 200) AS "Volume (LBlue)", LowVol COLOURED (255, 255, 0) AS "LowVol (Yellow Histo): Bottom & Top & UpTrend Cont",ClimaxUp COLOURED (255, 0, 0) AS "Climax Up (Red Histo): Start UpTrend & Top & DownTrend Cont", ClimaxDown COLOURED (255, 255, 255) AS "ClimaxDown (White Histo): Bottom & UpTrend Cont & Start Down Trend" , Churn  COLOURED (0, 155, 50) AS "Churn = HighVol@LowRange (Green Histo): Bottom & Top & Down Trend Cont",ClimaxChurn COLOURED (255, 0, 255) AS "ClimaxChurn (Magenta Histo): Top & DownTrend Cont: Brearish", Trampoline COLOURED (0, 0, 255) AS "Trampoline (DBlue Histo): Reversal", StopVol COLOURED (0, 0, 0) AS "StopVol (Black Histo): Profit Taking", AVVolume COLOURED (255, 0, 0) AS "AVVolume (Red Line)"

     

    #55979 quote
    Alai-n
    Participant
    Veteran

    UP

    #56543 quote
    Alai-n
    Participant
    Veteran
    UP
    #57207 quote
    Alai-n
    Participant
    Veteran
    UP
    #57314 quote
    Alai-n
    Participant
    Veteran
    (Ref : #55034) Bonjour,   Quelqu’un aurait-il l’amabilité de me montrer sur une ligne ou deux de code, comment procéder afin d’arriver à ce résultat(image jointe)! Merci par avance
    Volume-Better.jpg Volume-Better.jpg
    #57323 quote
    Nicolas
    Keymaster
    Master
    Désolé pour la réponse tardive, difficile d’être partout surtout durant cette période. Je ne peux pas faire le code pour le moment, mais tu peux essayer avec DRAWCANDLE Il faut pour cela insérer une instruction drawcandle à chaque détection du better volume. Bon courage.
    #57413 quote
    Alai-n
    Participant
    Veteran
    Je ne sais pas trop comment! Mais j’ai réussi à faire ça(Image 1) Cpdt des problèmes subsistent : PB1 : Voir (Image 2) PB2 : Affichage en BarChart Impossible Hormis les problèmes, est ce que cela te semble correct???
    // Better Volume Indicator
    // Original idea by emini-watch.com
    // Source : http://emini-watch.com/free-stuff/volume-indicator/ AND http://emini-watch.com/category/volume-indicator/
    
    // Rewrite for ProRealTime / ChartNet / CMC by Dutchy, march 2009
    // Code is provided as public domain, no warranty.
    // You can find Dutchy on following fora
    // http://www.aktienboard.com/forum/f29/prorealtime-cmc-script-programmierung-t94783/
    // http://www.pro-at.com/forums-bourse/sujet-Forums-Partenaires-Forum-ProRealTime-92.html
    // Peace
    
    // Better Volume Indicator - Summary
    // ClimaxUp (Red) : Top, Start Up Trend, Down Trend Continue
    // ClimaxDown (White): Bottom, Up Trend Continue, Start Down Trend
    // LowVolume (Yellow): Bottom, Top, Up Trend Continue
    // Churn (Green): Bottom, Top, Down Trend Continue
    // ClimaxChurn (Magenta): Top, Down Trend Continue
    
    // Parameter: History = Boolean
    // Parameter: Use2Bars = Boolean
    // Parameter: Lookback = 20
    
    ONCE Condition1 = 0
    ONCE Condition2 = 0
    ONCE Condition3 = 0
    ONCE Condition4 = 0
    ONCE Condition5 = 0
    ONCE Condition6 = 0
    ONCE Condition7 = 0
    ONCE Condition8 = 0
    ONCE Condition9 = 0
    ONCE Condition10 = 0
    ONCE Condition11 = 0
    ONCE Condition12 = 0
    ONCE Condition13 = 0
    ONCE Condition14 = 0
    ONCE Condition15 = 0
    ONCE Condition16 = 0
    ONCE Condition17 = 0
    ONCE Condition18 = 0
    ONCE Condition19 = 0
    ONCE Condition20 = 0
    
    VolValue = Volume
    LowVolValue = VolValue
    ClimaxUpValue = VolValue
    ClimaxDownValue = VolValue
    ChurnValue = VolValue
    ClimaxChurnValue = VolValue
    StopVolValue = VolValue
    TrampolineValue = VolValue
    AVVolume = Average[20*2](VolValue)
    
    IF 0 = 0 THEN
    BI = 400
    ELSIF 1 = 1 THEN
    BI = 20
    ENDIF
    
    IF BARINDEX > BI AND Volume <> 0 THEN
            
    IF Close > Open THEN
    Value1 = Volume * (Range / (2 * Range + Open - Close))
    ELSIF Close < Open THEN
    Value1= Volume * ((Range + Close - Open) / (2 * Range + Close - Open))
    ENDIF
    IF Close = Open THEN
    Value1 = 0.5 * Volume
    ENDIF
    Value2 = Volume  - Value1
        
    Value3 = Value1 + Value2
    Value4 = Value1 * Range
    Value5 = (Value1 - Value2) * Range
    Value6 = Value2 * Range
    Value7 = (Value2 - Value1) * Range
    IF Range <> 0 THEN
    Value8 = Value1 / Range
    Value9 = (Value1 - Value2) / Range
    Value10 = Value2 / Range
    Value11 = (Value2 - Value1) / Range
    Value12 = Value3 / Range
    ENDIF
        
    Value13 = Value3 +Value3[1]
    Value14 = (Value1+Value1[1]) * (Highest[2](High) - Lowest[2](Low))
    Value15 = (Value1+Value1[1] - Value2 - Value2[1]) * (Highest[2](High) - Lowest[2](Low))
    Value16 = (Value2 + Value2[1]) * (Highest[2](High) - Lowest[2](Low))
    Value17 = (Value2 + Value2[1] - Value1 - Value1[1]) * (Highest[2](High) - Lowest[2](Low))
    IF Highest[2](High) <> Lowest[2](Low) THEN
    Value18 = (Value1 + Value1[1]) / (Highest[2](High) - Lowest[2](Low))
    ENDIF
    Value19 = (Value1 + Value1[1] - Value2 - Value2[1]) / (Highest[2](High) - Lowest[2](Low))
    Value20 = (Value2 + Value2[1]) / (Highest[2](High) - Lowest[2](Low))
    Value21 = (Value2 + Value2[1] - Value1 - Value1[1]) / (Highest[2](High) - Lowest[2](Low))
    Value22 = Value13 / (Highest[2](High) - Lowest[2](Low))
        
    IF 0 = 0 THEN
    Condition1 = Value3 = Lowest[20](Value3)
    Condition2 = Value4 = Highest[20](Value4) AND Close > Open
    Condition3 = Value5 = Highest[20](Value5) AND Close > Open
    Condition4 = Value6 = Highest[20](Value6) AND Close < Open
    Condition5 = Value7 = Highest[20](Value7) AND Close < Open
    Condition6 = Value8 = Lowest[20](Value8) AND Close < Open
    Condition7 = Value9 = Lowest[20](Value9) AND Close < Open
    Condition8 = Value10 = Lowest[20](Value10) AND Close > Open
    Condition9 = Value11 = Lowest[20](Value11) AND Close > Open
    Condition10 = Value12 = Highest[20](Value12)
    ELSIF 1 = 1 THEN
    Condition11 = Value13 = Lowest[20](Value13)
    Condition12 = Value14 = Highest[20](Value14) AND Close > Open AND Close[1] > Open[1]
    Condition13 = Value15 = Highest[20](Value15) AND Close > Open AND Close[1] > Open[1]
    Condition14 = Value16 = Highest[20](Value16) AND Close < Open AND Close[1] < Open[1]
    Condition15 = Value17 = Highest[20](Value17) AND Close < Open AND Close[1] < Open[1]
    Condition16 = Value18 = Lowest[20](Value18) AND Close < Open AND Close[1] < Open[1]
    Condition17 = Value19 = Lowest[20](Value19) AND Close < Open AND Close[1] < Open[1]
    Condition18 = Value20 = Lowest[20](Value20) AND Close > Open AND Close[1] > Open[1]
    Condition19 = Value21 = Lowest[20](Value21) AND Close > Open AND Close[1] > Open[1]
    Condition20 = Value22 = Highest[20](Value22)
    ENDIF
        
    // *********************************************************************************************
        
    IF (Condition1 or Condition11) THEN    // Yellow Candlestick
    LowVol = LowVolValue
    DRAWCANDLE(Open,High,Low,Close) COLOURED (255,255,0)
    ELSE
    LowVol = 0
    
    
    ENDIF
        
    IF (Condition2 or Condition3 or Condition8 or Condition9 or Condition12 or Condition13 or Condition18 or Condition19) THEN        // Red Candlestick
    ClimaxUp = ClimaxUpValue
    DRAWCANDLE(Open,High,Low,Close)COLOURED (255,0,0)
    IF LowVol <> 0 THEN
    ClimaxUp = ClimaxUpValue / 2
    ENDIF
    ELSE
    ClimaxUp = 0
    ENDIF
        
    IF (Condition4 or Condition5 or Condition6 or Condition7 or Condition14 or Condition15 or Condition16 or Condition17) THEN        // White Candlestick
    ClimaxDown = ClimaxDownValue
    DRAWCANDLE(Open,High,Low,Close)COLOURED (255,255,255)
    IF LowVol <> 0 OR ClimaxUp <> 0 THEN
    ClimaxDown = ClimaxDownValue
    ENDIF
    ELSE
    ClimaxDown = 0
    ENDIF
        
    IF (Condition10 or Condition20) THEN    // Green Candlestick
    Churn = ChurnValue
    DRAWCANDLE(Open,High,Low,Close)COLOURED (0,128,0)
    IF LowVol <> 0 OR ClimaxUp <> 0 OR ClimaxDown <> 0 THEN
    Churn = ChurnValue / 2
    ENDIF
    ELSE
    Churn = 0
    ENDIF
        
    //IF (Condition10 or Condition20) AND (Condition2 or Condition3 or Condition4 or Condition5 or Condition6 or Condition7 or Condition8 or Condition9 or Condition12 or Condition13 or Condition14 or Condition15 or Condition16 or Condition17 or Condition18 or Condition19) THEN
    IF Churn <> 0 AND (ClimaxUp <> 0 OR ClimaxDown <> 0) THEN        // Magenta Candelstick
    ClimaxChurn = ClimaxChurnValue
    DRAWCANDLE(Open,High,Low,Close)COLOURED (255,0,255)
    ELSE
    ClimaxChurn = 0
    ENDIF
        
    //StopVolume
    LocalClosingPosition = 1 - (High - Close) / (High - Low)
    IF Volume > Volume[1] AND Range < Range[1] AND ((High > High[1] AND LocalClosingPosition < 0.4) OR (Low < Low[1] AND LocalClosingPosition > 0.6)) THEN
    StopVol = StopVolValue    * 1 / 3     // HigherVolume & LowerRange @ HigherHigh or LowerLow - DBlue
    DRAWCANDLE(Open,High,Low,Close)COLOURED (205,92,92)
    ELSE
    StopVol = 0
    ENDIF
        
    //Trampoline
    FOR i = 1 TO 2        // Close together
    IF ((ClimaxChurn[i] > 0 OR ClimaxUp[i] > 0) AND (ClimaxChurn > 0 OR ClimaxUp > 0)) AND ((Close[i] > Open[i] AND Close < Open) OR (Close[i] < Open[i] AND Close > Open)) THEN
    Trampoline = TrampolineValue * 1 / 4
    BREAK
    DRAWCANDLE(Open,High,Low,Close)COLOURED (127,255,212)
    ELSE
    Trampoline = 0
    ENDIF
    NEXT
        
    ENDIF
    
    RETURN Volume COLOURED (0, 200, 200) AS "Volume (LBlue)", LowVol COLOURED (255, 255, 0) AS "LowVol (Yellow Histo): Bottom & Top & UpTrend Cont",ClimaxUp COLOURED (255, 0, 0) AS "Climax Up (Red Histo): Start UpTrend & Top & DownTrend Cont", ClimaxDown COLOURED (255, 255, 255) AS "ClimaxDown (White Histo): Bottom & UpTrend Cont & Start Down Trend" , Churn  COLOURED (0, 155, 50) AS "Churn = HighVol@LowRange (Green Histo): Bottom & Top & Down Trend Cont",ClimaxChurn COLOURED (255, 0, 255) AS "ClimaxChurn (Magenta Histo): Top & DownTrend Cont: Brearish", Trampoline COLOURED (0, 0, 255) AS "Trampoline (DBlue Histo): Reversal", StopVol COLOURED (0, 0, 0) AS "StopVol (Black Histo): Profit Taking", AVVolume COLOURED (255, 0, 0) AS "AVVolume (Red Line)"
    VBetter-1.jpg VBetter-1.jpg VBetter-2.jpg VBetter-2.jpg
    #57557 quote
    Alai-n
    Participant
    Veteran
    PB2 : Résolu…Je viens d’avoir un déclic:) (DRAWBARCHART) Ça peu paraître stupide quand on maîtrise son sujet, je le reconnais!!!   Persiste PB1, avec un peu de chance j’aurai un autre déclic avant la fin du week-end…
    #57559 quote
    Alai-n
    Participant
    Veteran
    Code Volume Better mis au propre au cas où cela intéresserait quelqu’un !
    // Better Volume Indicator for BarChart
    // Original idea by emini-watch.com
    
    // Better Volume Indicator - Summary
    // ClimaxUp (Red) : Top, Start Up Trend, Down Trend Continue
    // ClimaxDown (White): Bottom, Up Trend Continue, Start Down Trend
    // LowVolume (Yellow): Bottom, Top, Up Trend Continue
    // Churn (Green): Bottom, Top, Down Trend Continue
    // ClimaxChurn (Magenta): Top, Down Trend Continue
    
    // Parameter: History = Boolean
    // Parameter: Use2Bars = Boolean
    // Parameter: Lookback = 20(Default)
    
    Lookback = 20
    
    ONCE Condition1  = 0
    ONCE Condition2  = 0
    ONCE Condition3  = 0
    ONCE Condition4  = 0
    ONCE Condition5  = 0
    ONCE Condition6  = 0
    ONCE Condition7  = 0
    ONCE Condition8  = 0
    ONCE Condition9  = 0
    ONCE Condition10 = 0
    ONCE Condition11 = 0
    ONCE Condition12 = 0
    ONCE Condition13 = 0
    ONCE Condition14 = 0
    ONCE Condition15 = 0
    ONCE Condition16 = 0
    ONCE Condition17 = 0
    ONCE Condition18 = 0
    ONCE Condition19 = 0
    ONCE Condition20 = 0
    
    VolValue         = Volume
    LowVolValue      = VolValue
    ClimaxUpValue    = VolValue
    ClimaxDownValue  = VolValue
    ChurnValue       = VolValue
    ClimaxChurnValue = VolValue
    StopVolValue     = VolValue
    TrampolineValue  = VolValue
    
    AVVolume = Average[Lookback*2](VolValue)//Average[Lookback*2](VolValue)
    
    IF 0 = 0 THEN
    BI = 400
    ELSIF 1 = 1 THEN
    BI = Lookback //BI=Lookback
    ENDIF
    
    IF BARINDEX > BI AND Volume <> 0 THEN
            
    IF Close > Open THEN
    Value1 = Volume * (Range / (2 * Range + Open - Close))
    ELSIF Close < Open THEN
    Value1= Volume * ((Range + Close - Open) / (2 * Range + Close - Open))
    ENDIF
    IF Close = Open THEN
    Value1 = 0.5 * Volume
    ENDIF
    Value2 = Volume  - Value1
        
    Value3 = Value1 + Value2
    Value4 = Value1 * Range
    Value5 = (Value1 - Value2) * Range
    Value6 = Value2 * Range
    Value7 = (Value2 - Value1) * Range
    IF Range <> 0 THEN
    Value8 = Value1 / Range
    Value9 = (Value1 - Value2) / Range
    Value10 = Value2 / Range
    Value11 = (Value2 - Value1) / Range
    Value12 = Value3 / Range
    ENDIF
        
    Value13 =  Value3  + Value3[1]
    Value14 = (Value1 + Value1[1]) * (Highest[2](High)    - Lowest[2](Low))
    Value15 = (Value1 + Value1[1]  -  Value2 - Value2[1]) * (Highest[2](High) - Lowest[2](Low))
    Value16 = (Value2 + Value2[1]) * (Highest[2](High)    - Lowest[2](Low))
    Value17 = (Value2 + Value2[1]  -  Value1 - Value1[1]) * (Highest[2](High) - Lowest[2](Low))
    IF Highest[2](High) <> Lowest[2](Low) THEN
    Value18 = (Value1 + Value1[1]) / (Highest[2](High) - Lowest[2](Low))
    ENDIF
    Value19 = (Value1 + Value1[1]  - Value2 - Value2[1]) / (Highest[2](High) - Lowest[2](Low))
    Value20 = (Value2 + Value2[1]) / (Highest[2](High)   - Lowest[2](Low))
    Value21 = (Value2 + Value2[1]  - Value1 - Value1[1]) / (Highest[2](High) - Lowest[2](Low))
    Value22 =  Value13 / (Highest[2](High) - Lowest[2](Low))
        
    IF 0 = 0 THEN
    Condition1  = Value3  = Lowest [Lookback](Value3)
    Condition2  = Value4  = Highest[Lookback](Value4)  AND Close > Open
    Condition3  = Value5  = Highest[Lookback](Value5)  AND Close > Open
    Condition4  = Value6  = Highest[Lookback](Value6)  AND Close < Open
    Condition5  = Value7  = Highest[Lookback](Value7)  AND Close < Open
    Condition6  = Value8  = Lowest [Lookback](Value8)  AND Close < Open
    Condition7  = Value9  = Lowest [Lookback](Value9)  AND Close < Open
    Condition8  = Value10 = Lowest [Lookback](Value10) AND Close > Open
    Condition9  = Value11 = Lowest [Lookback](Value11) AND Close > Open
    Condition10 = Value12 = Highest[Lookback](Value12)
    ELSIF 1 = 1 THEN
    Condition11 = Value13 = Lowest [Lookback](Value13)
    Condition12 = Value14 = Highest[Lookback](Value14) AND Close > Open AND Close[1] > Open[1]
    Condition13 = Value15 = Highest[Lookback](Value15) AND Close > Open AND Close[1] > Open[1]
    Condition14 = Value16 = Highest[Lookback](Value16) AND Close < Open AND Close[1] < Open[1]
    Condition15 = Value17 = Highest[Lookback](Value17) AND Close < Open AND Close[1] < Open[1]
    Condition16 = Value18 = Lowest [Lookback](Value18) AND Close < Open AND Close[1] < Open[1]
    Condition17 = Value19 = Lowest [Lookback](Value19) AND Close < Open AND Close[1] < Open[1]
    Condition18 = Value20 = Lowest [Lookback](Value20) AND Close > Open AND Close[1] > Open[1]
    Condition19 = Value21 = Lowest [Lookback](Value21) AND Close > Open AND Close[1] > Open[1]
    Condition20 = Value22 = Highest[Lookback](Value22)
    ENDIF
        
    // *********************************************************************************************
        
    // Yellow BarChart
    IF (Condition1 or Condition11) THEN
    LowVol = LowVolValue
    DRAWBARCHART(Open,High,Low,Close) COLOURED (255,255,0)
    ELSE
    LowVol = 0
    ENDIF
        
    // Red Barchart
    IF (Condition2 or Condition3 or Condition8 or Condition9 or Condition12 or Condition13 or Condition18 or Condition19) THEN
    ClimaxUp = ClimaxUpValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,0,0)
    IF LowVol <> 0 THEN
    ClimaxUp = ClimaxUpValue / 2
    ENDIF
    ELSE
    ClimaxUp = 0
    ENDIF
        
    // White Barchart
    IF (Condition4 or Condition5 or Condition6 or Condition7 or Condition14 or Condition15 or Condition16 or Condition17) THEN
    ClimaxDown = ClimaxDownValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,255,255)
    IF LowVol <> 0 OR ClimaxUp <> 0 THEN
    ClimaxDown = ClimaxDownValue
    ENDIF
    ELSE
    ClimaxDown = 0
    ENDIF
        
    // Green BarChart
    IF (Condition10 or Condition20) THEN
    Churn = ChurnValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (0,128,0)
    IF LowVol <> 0 OR ClimaxUp <> 0 OR ClimaxDown <> 0 THEN
    Churn = ChurnValue / 2
    ENDIF
    ELSE
    Churn = 0
    ENDIF
        
    //IF (Condition10 or Condition20) AND (Condition2 or Condition3 or Condition4 or Condition5 or Condition6 or Condition7 or Condition8 or Condition9 or Condition12 or Condition13 or Condition14 or Condition15 or Condition16 or Condition17 or Condition18 or Condition19) THEN
    
    // Magenta BarChart
    IF Churn <> 0 AND (ClimaxUp <> 0 OR ClimaxDown <> 0) THEN
    ClimaxChurn = ClimaxChurnValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,0,255)
    ELSE
    ClimaxChurn = 0
    ENDIF
        
    //StopVolume Orangered BarChart
    LocalClosingPosition = 1 - (High - Close) / (High - Low)
    IF Volume > Volume[1] AND Range < Range[1] AND ((High > High[1] AND LocalClosingPosition < 0.4) OR (Low < Low[1] AND LocalClosingPosition > 0.6)) THEN
    StopVol = StopVolValue    * 1 / 3     // HigherVolume & LowerRange @ HigherHigh or LowerLow - DBlue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,69,0)
    ELSE
    StopVol = 0
    ENDIF
        
    //Trampoline Blue BarChart
    FOR i = 1 TO 2        // Close together
    IF ((ClimaxChurn[i] > 0 OR ClimaxUp[i] > 0) AND (ClimaxChurn > 0 OR ClimaxUp > 0)) AND ((Close[i] > Open[i] AND Close < Open) OR (Close[i] < Open[i] AND Close > Open)) THEN
    Trampoline = TrampolineValue * 1 / 4
    BREAK
    DRAWBARCHART(Open,High,Low,Close)COLOURED (0,0,255)
    ELSE
    Trampoline = 0
    ENDIF
    NEXT
        
    ENDIF
    
    RETURN Volume COLOURED (0, 200, 200) AS "Volume (LBlue)", LowVol COLOURED (255, 255, 0) AS "LowVol (Yellow Histo): Bottom & Top & UpTrend Cont",ClimaxUp COLOURED (255, 0, 0) AS "Climax Up (Red Histo): Start UpTrend & Top & DownTrend Cont", ClimaxDown COLOURED (255, 255, 255) AS "ClimaxDown (White Histo): Bottom & UpTrend Cont & Start Down Trend" , Churn  COLOURED (0, 155, 50) AS "Churn = HighVol@LowRange (Green Histo): Bottom & Top & Down Trend Cont",ClimaxChurn COLOURED (255, 0, 255) AS "ClimaxChurn (Magenta Histo): Top & DownTrend Cont: Brearish", Trampoline COLOURED (0, 0, 255) AS "Trampoline (DBlue Histo): Reversal", StopVol COLOURED (255, 69, 0) AS "StopVol (Orangered Histo): Profit Taking", AVVolume COLOURED (255, 0, 0) AS "AVVolume (Red Line)"
    
    #57777 quote
    Nicolas
    Keymaster
    Master
    Bravo et Merci pour le retour @A-lain, cet indicateur sera sans nulle doute utile pour d’autres. Il pourrait également être ajouté à notre “library” ! Pour cela tu peux utiliser le formulaire de ce lien: https://www.prorealcode.com/itm-settings/
    #57782 quote
    Alai-n
    Participant
    Veteran
    Bonjour Nicolas,   Le code n’est pas tout à fait propre et correct… Il serait bien que tu y jettes un coup d’œil pour rectifier ce qui dysfonctionne! Un Exemple : en UT 1 heure il y a des barres verticales qui apparaissent au milieu de l’écran. Ce sont les barres de volumes qui sont en fond! Et alors là, quoi faire je l’ignore!!!
    bolsatrilera thanked this post
    #57785 quote
    Nicolas
    Keymaster
    Master
    C’est normal puisque tu retournes certaines valeurs dans RETURN, et puisque tu appliques l’indicateur sur le graphique du prix, ces anciens histogrammes de la version originale s’affichent toujours ! Voilà la version corrigée :
    // Better Volume Indicator for BarChart
    // Original idea by emini-watch.com
    
    // Better Volume Indicator - Summary
    // ClimaxUp (Red) : Top, Start Up Trend, Down Trend Continue
    // ClimaxDown (White): Bottom, Up Trend Continue, Start Down Trend
    // LowVolume (Yellow): Bottom, Top, Up Trend Continue
    // Churn (Green): Bottom, Top, Down Trend Continue
    // ClimaxChurn (Magenta): Top, Down Trend Continue
    
    // Parameter: History = Boolean
    // Parameter: Use2Bars = Boolean
    // Parameter: Lookback = 20(Default)
    
    Lookback = 20
    
    ONCE Condition1  = 0
    ONCE Condition2  = 0
    ONCE Condition3  = 0
    ONCE Condition4  = 0
    ONCE Condition5  = 0
    ONCE Condition6  = 0
    ONCE Condition7  = 0
    ONCE Condition8  = 0
    ONCE Condition9  = 0
    ONCE Condition10 = 0
    ONCE Condition11 = 0
    ONCE Condition12 = 0
    ONCE Condition13 = 0
    ONCE Condition14 = 0
    ONCE Condition15 = 0
    ONCE Condition16 = 0
    ONCE Condition17 = 0
    ONCE Condition18 = 0
    ONCE Condition19 = 0
    ONCE Condition20 = 0
    
    VolValue         = Volume
    LowVolValue      = VolValue
    ClimaxUpValue    = VolValue
    ClimaxDownValue  = VolValue
    ChurnValue       = VolValue
    ClimaxChurnValue = VolValue
    //StopVolValue     = VolValue
    //TrampolineValue  = VolValue
    
    //AVVolume = Average[Lookback*2](VolValue)//Average[Lookback*2](VolValue)
    
    IF 0 = 0 THEN
    BI = 400
    ELSIF 1 = 1 THEN
    BI = Lookback //BI=Lookback
    ENDIF
    
    IF BARINDEX > BI AND Volume <> 0 THEN
            
    IF Close > Open THEN
    Value1 = Volume * (Range / (2 * Range + Open - Close))
    ELSIF Close < Open THEN
    Value1= Volume * ((Range + Close - Open) / (2 * Range + Close - Open))
    ENDIF
    IF Close = Open THEN
    Value1 = 0.5 * Volume
    ENDIF
    Value2 = Volume  - Value1
        
    Value3 = Value1 + Value2
    Value4 = Value1 * Range
    Value5 = (Value1 - Value2) * Range
    Value6 = Value2 * Range
    Value7 = (Value2 - Value1) * Range
    IF Range <> 0 THEN
    Value8 = Value1 / Range
    Value9 = (Value1 - Value2) / Range
    Value10 = Value2 / Range
    Value11 = (Value2 - Value1) / Range
    Value12 = Value3 / Range
    ENDIF
        
    Value13 =  Value3  + Value3[1]
    Value14 = (Value1 + Value1[1]) * (Highest[2](High)    - Lowest[2](Low))
    Value15 = (Value1 + Value1[1]  -  Value2 - Value2[1]) * (Highest[2](High) - Lowest[2](Low))
    Value16 = (Value2 + Value2[1]) * (Highest[2](High)    - Lowest[2](Low))
    Value17 = (Value2 + Value2[1]  -  Value1 - Value1[1]) * (Highest[2](High) - Lowest[2](Low))
    IF Highest[2](High) <> Lowest[2](Low) THEN
    Value18 = (Value1 + Value1[1]) / (Highest[2](High) - Lowest[2](Low))
    ENDIF
    Value19 = (Value1 + Value1[1]  - Value2 - Value2[1]) / (Highest[2](High) - Lowest[2](Low))
    Value20 = (Value2 + Value2[1]) / (Highest[2](High)   - Lowest[2](Low))
    Value21 = (Value2 + Value2[1]  - Value1 - Value1[1]) / (Highest[2](High) - Lowest[2](Low))
    Value22 =  Value13 / (Highest[2](High) - Lowest[2](Low))
        
    IF 0 = 0 THEN
    Condition1  = Value3  = Lowest [Lookback](Value3)
    Condition2  = Value4  = Highest[Lookback](Value4)  AND Close > Open
    Condition3  = Value5  = Highest[Lookback](Value5)  AND Close > Open
    Condition4  = Value6  = Highest[Lookback](Value6)  AND Close < Open
    Condition5  = Value7  = Highest[Lookback](Value7)  AND Close < Open
    Condition6  = Value8  = Lowest [Lookback](Value8)  AND Close < Open
    Condition7  = Value9  = Lowest [Lookback](Value9)  AND Close < Open
    Condition8  = Value10 = Lowest [Lookback](Value10) AND Close > Open
    Condition9  = Value11 = Lowest [Lookback](Value11) AND Close > Open
    Condition10 = Value12 = Highest[Lookback](Value12)
    ELSIF 1 = 1 THEN
    Condition11 = Value13 = Lowest [Lookback](Value13)
    Condition12 = Value14 = Highest[Lookback](Value14) AND Close > Open AND Close[1] > Open[1]
    Condition13 = Value15 = Highest[Lookback](Value15) AND Close > Open AND Close[1] > Open[1]
    Condition14 = Value16 = Highest[Lookback](Value16) AND Close < Open AND Close[1] < Open[1]
    Condition15 = Value17 = Highest[Lookback](Value17) AND Close < Open AND Close[1] < Open[1]
    Condition16 = Value18 = Lowest [Lookback](Value18) AND Close < Open AND Close[1] < Open[1]
    Condition17 = Value19 = Lowest [Lookback](Value19) AND Close < Open AND Close[1] < Open[1]
    Condition18 = Value20 = Lowest [Lookback](Value20) AND Close > Open AND Close[1] > Open[1]
    Condition19 = Value21 = Lowest [Lookback](Value21) AND Close > Open AND Close[1] > Open[1]
    Condition20 = Value22 = Highest[Lookback](Value22)
    ENDIF
        
    // *********************************************************************************************
        
    // Yellow BarChart
    IF (Condition1 or Condition11) THEN
    LowVol = LowVolValue
    DRAWBARCHART(Open,High,Low,Close) COLOURED (255,255,0)
    ELSE
    LowVol = 0
    ENDIF
        
    // Red Barchart
    IF (Condition2 or Condition3 or Condition8 or Condition9 or Condition12 or Condition13 or Condition18 or Condition19) THEN
    ClimaxUp = ClimaxUpValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,0,0)
    IF LowVol <> 0 THEN
    ClimaxUp = ClimaxUpValue / 2
    ENDIF
    ELSE
    ClimaxUp = 0
    ENDIF
        
    // White Barchart
    IF (Condition4 or Condition5 or Condition6 or Condition7 or Condition14 or Condition15 or Condition16 or Condition17) THEN
    ClimaxDown = ClimaxDownValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,255,255)
    IF LowVol <> 0 OR ClimaxUp <> 0 THEN
    ClimaxDown = ClimaxDownValue
    ENDIF
    ELSE
    ClimaxDown = 0
    ENDIF
        
    // Green BarChart
    IF (Condition10 or Condition20) THEN
    Churn = ChurnValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (0,128,0)
    IF LowVol <> 0 OR ClimaxUp <> 0 OR ClimaxDown <> 0 THEN
    Churn = ChurnValue / 2
    ENDIF
    ELSE
    Churn = 0
    ENDIF
        
    //IF (Condition10 or Condition20) AND (Condition2 or Condition3 or Condition4 or Condition5 or Condition6 or Condition7 or Condition8 or Condition9 or Condition12 or Condition13 or Condition14 or Condition15 or Condition16 or Condition17 or Condition18 or Condition19) THEN
    
    // Magenta BarChart
    IF Churn <> 0 AND (ClimaxUp <> 0 OR ClimaxDown <> 0) THEN
    ClimaxChurn = ClimaxChurnValue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,0,255)
    ELSE
    ClimaxChurn = 0
    ENDIF
        
    //StopVolume Orangered BarChart
    LocalClosingPosition = 1 - (High - Close) / (High - Low)
    IF Volume > Volume[1] AND Range < Range[1] AND ((High > High[1] AND LocalClosingPosition < 0.4) OR (Low < Low[1] AND LocalClosingPosition > 0.6)) THEN
    //StopVol = StopVolValue    * 1 / 3     // HigherVolume & LowerRange @ HigherHigh or LowerLow - DBlue
    DRAWBARCHART(Open,High,Low,Close)COLOURED (255,69,0)
    ELSE
    //StopVol = 0
    ENDIF
        
    //Trampoline Blue BarChart
    FOR i = 1 TO 2        // Close together
    IF ((ClimaxChurn[i] > 0 OR ClimaxUp[i] > 0) AND (ClimaxChurn > 0 OR ClimaxUp > 0)) AND ((Close[i] > Open[i] AND Close < Open) OR (Close[i] < Open[i] AND Close > Open)) THEN
    //Trampoline = TrampolineValue * 1 / 4
    BREAK
    DRAWBARCHART(Open,High,Low,Close)COLOURED (0,0,255)
    ELSE
    //Trampoline = 0
    ENDIF
    NEXT
        
    ENDIF
    
    RETURN
    #57791 quote
    Alai-n
    Participant
    Veteran
    En effet c’est mieux comme ça!!! 😉   Super Merci
Viewing 13 posts - 1 through 13 (of 13 total)
  • You must be logged in to reply to this topic.

Volume Better(Evolution)


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Alai-n @alai-n Participant
Summary

This topic contains 12 replies,
has 2 voices, and was last updated by Alai-n
8 years, 1 month ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 12/08/2017
Status: Active
Attachments: 3 files
Logo Logo
Loading...