Indicatore VOB volume order block: evidenziare candela origine rettangoli

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #258464 quote
    Msport71Msport71
    Participant
    Senior

    Buongiorno,

    volevo chiedere cortese modifica dell’indicatore in oggetto in modo che possa evidenziare con un colore (ad esempio giallo) la candela ( frequentemente con spike pronunciati o doji) dalla quale iniziano a propagarsi i rettangoli che identificano le aree viola e azzurre di Order block sul grafico.


    Grazie del cortese aiuto.


    Volume Order Blocks (VOB)



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

    Qualcosa del genere

    //----------------------------------
    // PRC_Volume Order Blocks by BigBeluga
    //----------------------------------
    DEFPARAM DRAWONLASTBARONLY = TRUE
    //DEFPARAM CALCULATEONLASTBARS = 500
    
    //----------------------------------
    // INPUTS
    //----------------------------------
    length1 = 5
    length2 = length1 + 13
    midL = 1 // 1=true, 0=false.
    trendShadow = 1 // 1=true, 0=false.
    showLastN = 100
    showbroken = 1 // 1=true, 0=false.
    
    // highlight origin candle
    highlightCandle = 1 // 1=true, 0=false.
    hlColorR = 255
    hlColorG = 255
    hlColorB = 0
    
    // shadow color
    col1R = 38
    col1G = 186
    col1B = 159
    col2R = 102
    col2G = 38
    col2B = 186
    
    // block color
    bullColorR = 38
    bullColorG = 186
    bullColorB = 159
    bearColorR = 102
    bearColorG = 38
    bearColorB = 186
    
    //----------------------------------
    // EMA CALCULATION
    //----------------------------------
    ema1 = exponentialaverage[length1](close)
    ema2 = exponentialaverage[length2](close)
    
    crossUp = (ema1 crosses over ema2)
    crossDn = (ema1 crosses under ema2)
    
    //----------------------------------
    // Shadow
    //----------------------------------
    difff = ema2 - ema1
    IF difff > 0 THEN
       colorShadowR = col2R
       colorShadowG = col2G
       colorShadowB = col2B
    ELSE
       colorShadowR = col1R
       colorShadowG = col1G
       colorShadowB = col1B
    ENDIF
    
    IF trendShadow THEN
       colorbetween(ema1, ema2, colorShadowR, colorShadowG, colorShadowB, 30)
    ENDIF
    
    //----------------------------------
    // ATR calculation
    //----------------------------------
    atrPeriod = 200
    myAtr = averagetruerange[atrPeriod](close)
    atr = myAtr * 3
    atr1 = myAtr * 2
    
    //----------------------------------
    //--- Bullish blocks detection
    //----------------------------------
    ONCE b = 0
    IF crossUp THEN
       myLowest = lowest[length2](low)
       myLowestIndex = 0
       vol = 0
       src = 0
       
       i = 0
       FOR i = 1 TO length2 DO
          IF low[i] = myLowest THEN
             myLowestIndex = barindex[i]
             src = min(open[i], close[i])
             // Store origin candle High and Low for highlight
             $bullOriginHigh[b] = high[i]
             $bullOriginLow[b] = low[i]
             $bullOriginOpen[b] = open[i]
             $bullOriginClose[b] = close[i]
             BREAK
          ENDIF
       NEXT
       
       IF myLowestIndex > 0 THEN
          FOR k = 0 TO myLowestIndex DO
             vol = vol + volume[k]
          NEXT
          
          // ATR
          IF (src - myLowest) < (atr1 * 0.5) THEN
             src = myLowest + atr1 * 0.5
          ENDIF
          
          // store block
          $bullIndex[b] = myLowestIndex
          $bullUpper[b] = src
          $bullLower[b] = myLowest
          $bullMid[b] = (src + myLowest) / 2
          $bullVol[b] = vol
          $bullIsActive[b] = 1
          $bullValid[b] = 1
          b = b + 1
       ENDIF
    ENDIF
    
    //----------------------------------
    //--- Bearish blocks detection
    //----------------------------------
    ONCE z = 0
    IF crossDn THEN
       myHighest = highest[length2](high)
       myHighestIndex = 0
       vol = 0
       src = 0
       
       i = 0
       FOR i = length2 DOWNTO 1 DO
          IF high[i] = myHighest THEN
             myHighestIndex = barindex[i]
             src = max(open[i], close[i])
             // Store origin candle High and Low for highlight
             $bearOriginHigh[z] = high[i]
             $bearOriginLow[z] = low[i]
             BREAK
          ENDIF
       NEXT
       
       FOR k = 0 TO myHighestIndex DO
          vol = vol + volume[k]
       NEXT
       
       // ATR
       IF (myHighest - src)  0 THEN
          FOR i = 0 TO b - 1 DO
             IF $bullIsActive[i] = 1 THEN
                FOR j = barindex - $bullIndex[i] DOWNTO 0 DO
                   // A. Crossunder
                   IF close[j]  0 AND $bullIsActive[max(0,i-1)] = 1 THEN
                      dist = abs($bullMid[i] - $bullMid[i-1])
                      IF dist  0 THEN
          FOR i = 0 TO z - 1 DO
             IF $bearIsActive[i] = 1 THEN
                FOR j = barindex - $bearIndex[i] DOWNTO 0 DO
                   // A. Crossover
                   IF close[j] > $bearUpper[i] THEN
                      $bearIsActive[i] = 0
                      $bearIndexEnd[i] = barindex[j]
                      BREAK
                   ENDIF
                   
                   // B. Overlap
                   IF i > 0 AND $bearIsActive[max(0,i-1)] = 1 THEN
                      dist = abs($bearMid[i] - $bearMid[i-1])
                      IF dist  0 THEN
          startIndex = max(0, b - showLastN)
          FOR i = startIndex TO b - 1 DO
             IF $bullIsActive[i] = 1 THEN
                
                IF highlightCandle = 1 THEN
                   DRAWSEGMENT($bullIndex[i], $bullOriginHigh[i], $bullIndex[i], $bullOriginLow[i]) COLOURED(hlColorR, hlColorG, hlColorB, 255) STYLE(LINE, 5)
                ENDIF
                
                DRAWRECTANGLE($bullIndex[i], $bullLower[i], barindex, $bullUpper[i]) COLOURED(bullColorR, bullColorG, bullColorB) FILLCOLOR(bullColorR, bullColorG, bullColorB, 80)
                
                IF midL THEN
                   DRAWSEGMENT($bullIndex[i], $bullMid[i], barindex, $bullMid[i]) COLOURED(bullColorR, bullColorG, bullColorB) STYLE(dottedline)
                ENDIF
                
                bullvol = $bullVol[i]
                DRAWTEXT("#bullvol#", barindex + 5, $bullMid[i])
                
             ELSIF $bullValid[i] = 1 AND showbroken THEN
                IF highlightCandle = 1 THEN
                   DRAWSEGMENT($bullIndex[i], $bullOriginHigh[i], $bullIndex[i], $bullOriginLow[i]) COLOURED(hlColorR, hlColorG, hlColorB, 255) STYLE(LINE, 5)
                ENDIF
                DRAWRECTANGLE($bullIndex[i], $bullLower[i], $bullIndexEnd[i], $bullUpper[i]) COLOURED(bullColorR, bullColorG, bullColorB, 80) FILLCOLOR(bullColorR, bullColorG, bullColorB, 40)
                
             ENDIF
          NEXT
       ENDIF
       
       // --- 4. BEARISH BLOCKS ---
       IF z > 0 THEN
          startIndex = max(0, z - showLastN)
          FOR i = startIndex TO z - 1 DO
             IF $bearIsActive[i] = 1 THEN
                
                IF highlightCandle = 1 THEN
                   DRAWSEGMENT($bearIndex[i], $bearOriginHigh[i], $bearIndex[i], $bearOriginLow[i]) COLOURED(hlColorR, hlColorG, hlColorB, 255) STYLE(LINE, 5)
                ENDIF
                
                DRAWRECTANGLE($bearIndex[i], $bearLower[i], barindex, $bearUpper[i]) COLOURED(bearColorR, bearColorG, bearColorB) FILLCOLOR(bearColorR, bearColorG, bearColorB, 80)
                
                IF midL THEN
                   DRAWSEGMENT($bearIndex[i], $bearMid[i], barindex, $bearMid[i]) COLOURED(bearColorR, bearColorG, bearColorB) STYLE(dottedline)
                ENDIF
                
                bearvol = $bearVol[i]
                DRAWTEXT("#bearvol#", barindex + 5, $bearMid[i])
                
             ELSIF $bearValid[i] = 1 AND showbroken THEN
                IF highlightCandle = 1 THEN
                   DRAWSEGMENT($bearIndex[i], $bearOriginHigh[i], $bearIndex[i], $bearOriginLow[i]) COLOURED(hlColorR, hlColorG, hlColorB, 255) STYLE(LINE, 5)
                ENDIF
                DRAWRECTANGLE($bearIndex[i], $bearLower[i], $bearIndexEnd[i], $bearUpper[i]) COLOURED(bearColorR, bearColorG, bearColorB, 80) FILLCOLOR(bearColorR, bearColorG, bearColorB, 40)
             ENDIF
          NEXT
       ENDIF
       
    ENDIF
    
    //----------------------------------
    RETURN ema1 AS "EMA fast", ema2 AS "EMA slow"
    


    Msport71 and robertogozzi thanked this post
    #258495 quote
    Msport71Msport71
    Participant
    Senior

    Perfetto, grazie.


    Una domanda, guardando lo script non mi è chiaro quali sono i periodi delle due EMA ( fast e slow) , che se non ho capito male sono correlate a lenght1 e lenght2.

    Trovo scritto :

    • lenght 1 valore 5
    • lenght 2 : Ema 1+13 quindi dovrebbe essere 14.


    Ho provato a mettere due Ema sul grafico e non mi sembra combacino.


    Grazie




    #258499 quote
    robertogozzirobertogozzi
    Moderator
    Legend


    Msport71 wrote: length2 = length1 + 13

    5 + 13 = 18, la somma di length1 + 13.



    #258503 quote
    Msport71Msport71
    Participant
    Senior

    E’ vero, grazie ho interpretato male


    robertogozzi thanked this post
Viewing 5 posts - 1 through 5 (of 5 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

Indicatore VOB volume order block: evidenziare candela origine rettangoli


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
Msport71 @carlo-pasca Participant
Summary

This topic contains 4 replies,
has 3 voices, and was last updated by Msport71Msport71
6 months, 3 weeks ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 02/25/2026
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...