Indicatore SMC institutional order blocks in ProRealTime

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #259349 quote
    Ciccarelli Franco
    Participant
    Senior

    Ivan buona sera,

    vorrei una tua valutazione tra l’indicatore “Smart Money Concepts” che normalmente uso con uno trovato su Tradinview (allego il link),

    questo ultimo mi piace perchè è più pulito e chiaro e forse più performante. Se ritieni queste mie valutazioni valide, traducilo per cortesia in PRT.


    Grazie


    https://it.tradingview.com/script/hg0Ko1ib-ALEKSDU-SMC-Pure-Liquidity-Engine-Institutional-Order-Blocks/

    #259367 quote
    Iván González
    Moderator
    Legend

    Ciao. Me ne occuperò subito.

    Per future richieste di traduzione, vi prego di utilizzare questo gruppo, creato appositamente per questo scopo.

    #259385 quote
    Iván González
    Moderator
    Legend

    ecco qui:

    //---------------------------------------------------------------//
    // PRC_Clean Liquidity Heatmap [SMC]
    // Adapted from PineScript (ALEKSDU) to ProBuilder
    // version = 0
    // Date: 24.03.2026
    // Iván González @ www.prorealcode.com
    // Sharing ProRealTime knowledge
    //---------------------------------------------------------------//
    defparam drawonlastbaronly = true
    //---------------------------------------------------------------//
    // --- Settings ---
    //---------------------------------------------------------------//
    maxZones = 5 // Max active zones per type BUY/SELL (1 to 5)
    hideOld = 1 // 1 = gray out broken zones, 0 = hide them completely
    volMultiplier = 1.3 // Anomalous volume multiplier
    showsig = 0 // show signals (true / false)
    //---------------------------------------------------------------//
    // --- Volume Logic ---
    //---------------------------------------------------------------//
    avgVol = average[20](volume)
    IF volume > avgVol * volMultiplier THEN
       isHighVol = 1
    ELSE
       isHighVol = 0
    ENDIF
    //---------------------------------------------------------------//
    // --- OB Detection ---
    //---------------------------------------------------------------//
    IF low[1] < low[2] AND close > high[1] AND isHighVol THEN
       isBullOB = 1
    ELSE
       isBullOB = 0
    ENDIF
    
    IF high[1] > high[2] AND close < low[1] AND isHighVol THEN
       isBearOB = 1
    ELSE
       isBearOB = 0
    ENDIF
    
    // ============================================================
    // SIGNAL STORAGE ($arrays as read buffer)
    // ============================================================
    once bullSigCount = 0
    once bearSigCount = 0
    
    IF isBullOB THEN
       $bullSigBar[bullSigCount] = barindex
       $bullSigPrice[bullSigCount] = low - averagetruerange[14] * 0.3
       bullSigCount = bullSigCount + 1
    ENDIF
    
    IF isBearOB THEN
       $bearSigBar[bearSigCount] = barindex
       $bearSigPrice[bearSigCount] = high + averagetruerange[14] * 0.3
       bearSigCount = bearSigCount + 1
    ENDIF
    
    // ============================================================
    // FIFO BULLISH ZONES (5 slots)
    // Fields: Bar, Top, Bot, Active (1/0), BrokenBar
    // ============================================================
    once bullBar0 = 0
    once bullTop0 = 0
    once bullBot0 = 0
    once bullActive0 = 0
    once bullBrkBar0 = 0
    
    once bullBar1 = 0
    once bullTop1 = 0
    once bullBot1 = 0
    once bullActive1 = 0
    once bullBrkBar1 = 0
    
    once bullBar2 = 0
    once bullTop2 = 0
    once bullBot2 = 0
    once bullActive2 = 0
    once bullBrkBar2 = 0
    
    once bullBar3 = 0
    once bullTop3 = 0
    once bullBot3 = 0
    once bullActive3 = 0
    once bullBrkBar3 = 0
    
    once bullBar4 = 0
    once bullTop4 = 0
    once bullBot4 = 0
    once bullActive4 = 0
    once bullBrkBar4 = 0
    
    once bullCount = 0
    
    // ============================================================
    // FIFO BEARISH ZONES (5 slots)
    // ============================================================
    once bearBar0 = 0
    once bearTop0 = 0
    once bearBot0 = 0
    once bearActive0 = 0
    once bearBrkBar0 = 0
    
    once bearBar1 = 0
    once bearTop1 = 0
    once bearBot1 = 0
    once bearActive1 = 0
    once bearBrkBar1 = 0
    
    once bearBar2 = 0
    once bearTop2 = 0
    once bearBot2 = 0
    once bearActive2 = 0
    once bearBrkBar2 = 0
    
    once bearBar3 = 0
    once bearTop3 = 0
    once bearBot3 = 0
    once bearActive3 = 0
    once bearBrkBar3 = 0
    
    once bearBar4 = 0
    once bearTop4 = 0
    once bearBot4 = 0
    once bearActive4 = 0
    once bearBrkBar4 = 0
    
    once bearCount = 0
    
    // ============================================================
    // REGISTER NEW BULLISH OB
    // ============================================================
    IF isBullOB THEN
       IF bullCount >= maxZones THEN
          // FIFO shift
          bullBar0 = bullBar1
          bullTop0 = bullTop1
          bullBot0 = bullBot1
          bullActive0 = bullActive1
          bullBrkBar0 = bullBrkBar1
          
          bullBar1 = bullBar2
          bullTop1 = bullTop2
          bullBot1 = bullBot2
          bullActive1 = bullActive2
          bullBrkBar1 = bullBrkBar2
          
          bullBar2 = bullBar3
          bullTop2 = bullTop3
          bullBot2 = bullBot3
          bullActive2 = bullActive3
          bullBrkBar2 = bullBrkBar3
          
          bullBar3 = bullBar4
          bullTop3 = bullTop4
          bullBot3 = bullBot4
          bullActive3 = bullActive4
          bullBrkBar3 = bullBrkBar4
          
          IF maxZones = 1 THEN
             bullBar0 = barindex[1]
             bullTop0 = high[1]
             bullBot0 = low[1]
             bullActive0 = 1
             bullBrkBar0 = 0
          ELSIF maxZones = 2 THEN
             bullBar1 = barindex[1]
             bullTop1 = high[1]
             bullBot1 = low[1]
             bullActive1 = 1
             bullBrkBar1 = 0
          ELSIF maxZones = 3 THEN
             bullBar2 = barindex[1]
             bullTop2 = high[1]
             bullBot2 = low[1]
             bullActive2 = 1
             bullBrkBar2 = 0
          ELSIF maxZones = 4 THEN
             bullBar3 = barindex[1]
             bullTop3 = high[1]
             bullBot3 = low[1]
             bullActive3 = 1
             bullBrkBar3 = 0
          ELSIF maxZones = 5 THEN
             bullBar4 = barindex[1]
             bullTop4 = high[1]
             bullBot4 = low[1]
             bullActive4 = 1
             bullBrkBar4 = 0
          ENDIF
       ELSE
          IF bullCount = 0 THEN
             bullBar0 = barindex[1]
             bullTop0 = high[1]
             bullBot0 = low[1]
             bullActive0 = 1
             bullBrkBar0 = 0
          ELSIF bullCount = 1 THEN
             bullBar1 = barindex[1]
             bullTop1 = high[1]
             bullBot1 = low[1]
             bullActive1 = 1
             bullBrkBar1 = 0
          ELSIF bullCount = 2 THEN
             bullBar2 = barindex[1]
             bullTop2 = high[1]
             bullBot2 = low[1]
             bullActive2 = 1
             bullBrkBar2 = 0
          ELSIF bullCount = 3 THEN
             bullBar3 = barindex[1]
             bullTop3 = high[1]
             bullBot3 = low[1]
             bullActive3 = 1
             bullBrkBar3 = 0
          ELSIF bullCount = 4 THEN
             bullBar4 = barindex[1]
             bullTop4 = high[1]
             bullBot4 = low[1]
             bullActive4 = 1
             bullBrkBar4 = 0
          ENDIF
          bullCount = bullCount + 1
       ENDIF
    ENDIF
    
    // ============================================================
    // REGISTER NEW BEARISH OB
    // ============================================================
    IF isBearOB THEN
       IF bearCount >= maxZones THEN
          // FIFO shift
          bearBar0 = bearBar1
          bearTop0 = bearTop1
          bearBot0 = bearBot1
          bearActive0 = bearActive1
          bearBrkBar0 = bearBrkBar1
          
          bearBar1 = bearBar2
          bearTop1 = bearTop2
          bearBot1 = bearBot2
          bearActive1 = bearActive2
          bearBrkBar1 = bearBrkBar2
          
          bearBar2 = bearBar3
          bearTop2 = bearTop3
          bearBot2 = bearBot3
          bearActive2 = bearActive3
          bearBrkBar2 = bearBrkBar3
          
          bearBar3 = bearBar4
          bearTop3 = bearTop4
          bearBot3 = bearBot4
          bearActive3 = bearActive4
          bearBrkBar3 = bearBrkBar4
          
          IF maxZones = 1 THEN
             bearBar0 = barindex[1]
             bearTop0 = high[1]
             bearBot0 = low[1]
             bearActive0 = 1
             bearBrkBar0 = 0
          ELSIF maxZones = 2 THEN
             bearBar1 = barindex[1]
             bearTop1 = high[1]
             bearBot1 = low[1]
             bearActive1 = 1
             bearBrkBar1 = 0
          ELSIF maxZones = 3 THEN
             bearBar2 = barindex[1]
             bearTop2 = high[1]
             bearBot2 = low[1]
             bearActive2 = 1
             bearBrkBar2 = 0
          ELSIF maxZones = 4 THEN
             bearBar3 = barindex[1]
             bearTop3 = high[1]
             bearBot3 = low[1]
             bearActive3 = 1
             bearBrkBar3 = 0
          ELSIF maxZones = 5 THEN
             bearBar4 = barindex[1]
             bearTop4 = high[1]
             bearBot4 = low[1]
             bearActive4 = 1
             bearBrkBar4 = 0
          ENDIF
       ELSE
          IF bearCount = 0 THEN
             bearBar0 = barindex[1]
             bearTop0 = high[1]
             bearBot0 = low[1]
             bearActive0 = 1
             bearBrkBar0 = 0
          ELSIF bearCount = 1 THEN
             bearBar1 = barindex[1]
             bearTop1 = high[1]
             bearBot1 = low[1]
             bearActive1 = 1
             bearBrkBar1 = 0
          ELSIF bearCount = 2 THEN
             bearBar2 = barindex[1]
             bearTop2 = high[1]
             bearBot2 = low[1]
             bearActive2 = 1
             bearBrkBar2 = 0
          ELSIF bearCount = 3 THEN
             bearBar3 = barindex[1]
             bearTop3 = high[1]
             bearBot3 = low[1]
             bearActive3 = 1
             bearBrkBar3 = 0
          ELSIF bearCount = 4 THEN
             bearBar4 = barindex[1]
             bearTop4 = high[1]
             bearBot4 = low[1]
             bearActive4 = 1
             bearBrkBar4 = 0
          ENDIF
          bearCount = bearCount + 1
       ENDIF
    ENDIF
    
    // ============================================================
    // CHECK BROKEN ZONES (every bar)
    // ============================================================
    IF bullActive0 = 1 AND close < bullBot0 THEN
       bullActive0 = 0
       bullBrkBar0 = barindex
    ENDIF
    IF bullActive1 = 1 AND close < bullBot1 THEN
       bullActive1 = 0
       bullBrkBar1 = barindex
    ENDIF
    IF bullActive2 = 1 AND close < bullBot2 THEN
       bullActive2 = 0
       bullBrkBar2 = barindex
    ENDIF
    IF bullActive3 = 1 AND close < bullBot3 THEN
       bullActive3 = 0
       bullBrkBar3 = barindex
    ENDIF
    IF bullActive4 = 1 AND close < bullBot4 THEN
       bullActive4 = 0
       bullBrkBar4 = barindex
    ENDIF
    
    IF bearActive0 = 1 AND close > bearTop0 THEN
       bearActive0 = 0
       bearBrkBar0 = barindex
    ENDIF
    IF bearActive1 = 1 AND close > bearTop1 THEN
       bearActive1 = 0
       bearBrkBar1 = barindex
    ENDIF
    IF bearActive2 = 1 AND close > bearTop2 THEN
       bearActive2 = 0
       bearBrkBar2 = barindex
    ENDIF
    IF bearActive3 = 1 AND close > bearTop3 THEN
       bearActive3 = 0
       bearBrkBar3 = barindex
    ENDIF
    IF bearActive4 = 1 AND close > bearTop4 THEN
       bearActive4 = 0
       bearBrkBar4 = barindex
    ENDIF
    
    // ============================================================
    // DRAW EVERYTHING (only on last bar update)
    // ============================================================
    IF islastbarupdate THEN
       
       // --- SIGNAL ARROWS (from $arrays) ---
       IF bullSigCount > 0 and showsig THEN
          FOR i = 0 TO bullSigCount - 1
             drawarrowup($bullSigBar[i], $bullSigPrice[i]) coloured(0,128,128)
          NEXT
       ENDIF
       
       IF bearSigCount > 0 and showsig THEN
          FOR i = 0 TO bearSigCount - 1
             drawarrowdown($bearSigBar[i], $bearSigPrice[i]) coloured(255,0,0)
          NEXT
       ENDIF
       
       // --- BULLISH ZONES (teal active / gray broken) ---
       IF bullBar0 > 0 THEN
          IF bullActive0 = 1 THEN
             drawrectangle(bullBar0, bullTop0, barindex, bullBot0) coloured(0,128,128,180) bordercolor(0,128,128,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bullBar0, bullTop0, bullBrkBar0, bullBot0) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bullBar1 > 0 THEN
          IF bullActive1 = 1 THEN
             drawrectangle(bullBar1, bullTop1, barindex, bullBot1) coloured(0,128,128,180) bordercolor(0,128,128,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bullBar1, bullTop1, bullBrkBar1, bullBot1) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bullBar2 > 0 THEN
          IF bullActive2 = 1 THEN
             drawrectangle(bullBar2, bullTop2, barindex, bullBot2) coloured(0,128,128,180) bordercolor(0,128,128,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bullBar2, bullTop2, bullBrkBar2, bullBot2) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bullBar3 > 0 THEN
          IF bullActive3 = 1 THEN
             drawrectangle(bullBar3, bullTop3, barindex, bullBot3) coloured(0,128,128,180) bordercolor(0,128,128,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bullBar3, bullTop3, bullBrkBar3, bullBot3) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bullBar4 > 0 THEN
          IF bullActive4 = 1 THEN
             drawrectangle(bullBar4, bullTop4, barindex, bullBot4) coloured(0,128,128,180) bordercolor(0,128,128,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bullBar4, bullTop4, bullBrkBar4, bullBot4) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       // --- BEARISH ZONES (red active / gray broken) ---
       IF bearBar0 > 0 THEN
          IF bearActive0 = 1 THEN
             drawrectangle(bearBar0, bearTop0, barindex, bearBot0) coloured(255,0,0,180) bordercolor(255,0,0,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bearBar0, bearTop0, bearBrkBar0, bearBot0) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bearBar1 > 0 THEN
          IF bearActive1 = 1 THEN
             drawrectangle(bearBar1, bearTop1, barindex, bearBot1) coloured(255,0,0,180) bordercolor(255,0,0,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bearBar1, bearTop1, bearBrkBar1, bearBot1) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bearBar2 > 0 THEN
          IF bearActive2 = 1 THEN
             drawrectangle(bearBar2, bearTop2, barindex, bearBot2) coloured(255,0,0,180) bordercolor(255,0,0,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bearBar2, bearTop2, bearBrkBar2, bearBot2) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bearBar3 > 0 THEN
          IF bearActive3 = 1 THEN
             drawrectangle(bearBar3, bearTop3, barindex, bearBot3) coloured(255,0,0,180) bordercolor(255,0,0,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bearBar3, bearTop3, bearBrkBar3, bearBot3) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
       IF bearBar4 > 0 THEN
          IF bearActive4 = 1 THEN
             drawrectangle(bearBar4, bearTop4, barindex, bearBot4) coloured(255,0,0,180) bordercolor(255,0,0,0)
          ELSIF hideOld = 1 THEN
             drawrectangle(bearBar4, bearTop4, bearBrkBar4, bearBot4) coloured(128,128,128,30) bordercolor(128,128,128,0)
          ENDIF
       ENDIF
       
    ENDIF
    //---------------------------------------------------------------//
    RETURN
    


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

TradingView to ProRealTime Translation Center

New Reply
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by Iván González
2 months ago.

Topic Details
Forum: TradingView to ProRealTime Translation Center Forum
Started: 03/23/2026
Status: Active
Attachments: No files
Logo Logo
Loading...