Screener combinado Supply-Demand y Wick Pressure en PRT

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #260091 quote
    NicoGB67
    Participant
    Veteran

    Hola, tengo dos screeners combinados ambos dobles, se podrían agrupar para no tener que estar ejecutando uno y luego el otro y así tenerlos en uno solo:

    Este es uno:

    // Screener combinado: zonas de alerta
    // Dispara cuando Supply-Demand-CVD-Flow o Wick Pressure Zones
    // forman una zona nueva en el momento actual
    
    
    // === 1. Supply-Demand-CVD-Flow (ChartPrime) ===
    atrLen = 14
    momMult = 1.0
    myATR = averagetruerange[atrLen](close)
    
    brkBody = abs(close[1] - open[1])
    isDemand = 0
    isSupply = 0
    if barindex > 2 then
       if (close[2] < open[2]) and (close[1] > open[1]) and brkBody >= momMult * myATR[1] then
          isDemand = 1
       endif
       if (close[2] > open[2]) and (close[1] < open[1]) and brkBody >= momMult * myATR[1] then
          isSupply = 1
       endif
    endif
    
    // === 2. Wick Pressure Zones (BigBeluga) ===
    lookback = 200
    threshold = 80
    extendBars = 20
    rsiLen = 14
    
    bodyTop = max(open, close)
    bodyBot = min(open, close)
    denUp = max(bodyTop, 0.0000001)
    denLo = max(low, 0.0000001)
    upperWick = (high - bodyTop) / denUp
    lowerWick = (bodyBot - low) / denLo
    
    maxUpper = highest[lookback](upperWick)
    maxLower = highest[lookback](lowerWick)
    
    sizeUpWick = 0
    sizeLoWick = 0
    if maxUpper > 0 then
       sizeUpWick = floor((upperWick / maxUpper) * 100)
    endif
    if maxLower > 0 then
       sizeLoWick = floor((lowerWick / maxLower) * 100)
    endif
    
    myrsi = rsi[rsiLen](close)
    
    once startidx = -100000
    
    newUpper = 0
    newLower = 0
    if sizeUpWick >= threshold and sizeLoWick < threshold and myrsi > 50 and (barindex - startidx > extendBars) then
       newUpper = 1
       startidx = barindex
    endif
    if sizeLoWick >= threshold and sizeUpWick < threshold and myrsi < 50 and (barindex - startidx > extendBars) then
       newLower = 1
       startidx = barindex
    endif
    
    // === 3. Condicion combinada ===
    zoneFormed = isDemand or isSupply or newUpper or newLower
    
    // === 4. Tipo de zona detectada ===
    sType = 0
    if isDemand then
       sType = 1
    endif
    if isSupply then
       sType = -1
    endif
    if newLower then
       sType = 2
    endif
    if newUpper then
       sType = -2
    endif
    
    SCREENER[zoneFormed] (sType as "Zone Type")
    




    Y el otro:


    //———————————————————-//
    //PRC_Combined Screener: Double Top/Bottom + Elliott Wave Impulse
    //version = 0
    //25.03.2026
    //Iván González @ http://www.prorealcode.com
    //Sharing ProRealTime knowledge
    //———————————————————-//
    
    // ============================================
    // PART 1: DOUBLE TOP / DOUBLE BOTTOM
    // ============================================
    dtPrd = 5
    dtTol = 15
    
    ph = high = highest[dtPrd](high)
    pl = low = lowest[dtPrd](low)
    
    IF ph AND pl = 0 THEN
       zzDir = 1
    ELSIF pl AND ph = 0 THEN
       zzDir = -1
    ELSE
       zzDir = zzDir
    ENDIF
    
    zzDirChanged = zzDir <> zzDir[1]
    Box = 0
    
    IF ph OR pl THEN
       IF zzDirChanged THEN
          IF zzDir = 1 THEN
             $zigzag[zzT+1] = highest[dtPrd](high)
             zzT = zzT + 1
          ELSIF zzDir = -1 THEN
             $zigzag[zzT+1] = lowest[dtPrd](low)
             zzT = zzT + 1
          ENDIF
       ELSE
          IF zzDir = 1 AND highest[dtPrd](high) > $zigzag[zzT] THEN
             $zigzag[zzT] = highest[dtPrd](high)
          ELSIF zzDir = -1 AND lowest[dtPrd](low) < $zigzag[zzT] THEN
             $zigzag[zzT] = lowest[dtPrd](low)
          ENDIF
       ENDIF
    ENDIF
    
    IF zzT > 4 THEN
       //—-Double Top pattern—-//
       htop = ($zigzag[zzT-3] + $zigzag[zzT-1]) / 2 - $zigzag[zzT-2]
       TopHigh = $zigzag[zzT-3] + htop * dtTol / 100
       BotHigh = $zigzag[zzT-3] - htop * dtTol / 100
       DoubleTop = ($zigzag[zzT-1] >= BotHigh AND $zigzag[zzT-1] <= TopHigh) AND ($zigzag[zzT-3] > dtY1 AND $zigzag[zzT-3] > $zigzag[zzT-2] AND $zigzag[zzT-1] > $zigzag[zzT-2])
       IF DoubleTop AND NOT DoubleTop[1] THEN
          dtY1 = $zigzag[zzT-4]
          Box = 2
       ENDIF
       
       //—-Double Bottom pattern—-//
       hbot = $zigzag[zzT-2] - ($zigzag[zzT-3] + $zigzag[zzT-1]) / 2
       topLow = $zigzag[zzT-3] + hbot * dtTol / 100
       botLow = $zigzag[zzT-3] - hbot * dtTol / 100
       DoubleBot = ($zigzag[zzT-1] >= botLow AND $zigzag[zzT-1] <= topLow) AND ($zigzag[zzT-3] < $zigzag[zzT-4] AND $zigzag[zzT-3] < $zigzag[zzT-2] AND $zigzag[zzT-1] < $zigzag[zzT-2])
       IF DoubleBot AND NOT DoubleBot[1] THEN
          Box = 1
       ENDIF
    ENDIF
    
    // ============================================
    // PART 2: ELLIOTT WAVE IMPULSE
    // ============================================
    ewLength = 15
    ewError = 5
    
    ewErrMin = (100 - ewError) / 100
    ewErrMax = (100 + ewError) / 100
    
    waveFound = 0
    ewWdir = 0
    
    IF barindex >= ewLength THEN
       
       hb = highestbars[ewLength](high)
       lb = lowestbars[ewLength](low)
       
       IF hb = 0 AND lb <> 0 THEN
          ewPHigh = high
          ewPLow = undefined
          ewDir = 1
       ELSIF lb = 0 AND hb <> 0 THEN
          ewPHigh = undefined
          ewPLow = low
          ewDir = -1
       ELSIF hb = 0 AND lb = 0 THEN
          ewPHigh = high
          ewPLow = low
          ewDir = ewPrevDir
       ELSE
          ewPHigh = undefined
          ewPLow = undefined
          ewDir = ewPrevDir
       ENDIF
       
       ewHasPivot = 0
       IF ewPHigh <> undefined OR ewPLow <> undefined THEN
          ewHasPivot = 1
       ENDIF
       
       IF ewHasPivot THEN
          IF ewDir = 1 THEN
             ewNewVal = high
          ELSE
             ewNewVal = low
          ENDIF
          ewNewPDir = ewDir
          
          ewDirChanged = 0
          IF ewDir <> ewPrevDir AND ewPrevDir <> 0 THEN
             ewDirChanged = 1
          ENDIF
          
          // Same direction: replace pvt0 if more extreme
          IF ewDirChanged = 0 AND ewPCount >= 1 THEN
             IF ewDir = 1 THEN
                IF ewNewVal < ewPvt0 THEN
                   ewNewVal = ewPvt0
                ENDIF
             ELSE
                IF ewNewVal > ewPvt0 THEN
                   ewNewVal = ewPvt0
                ENDIF
             ENDIF
             
             IF ewPCount >= 3 THEN
                IF ewDir = 1 AND ewNewVal > ewPvt2 THEN
                   ewNewPDir = 2
                ELSIF ewDir = -1 AND ewNewVal < ewPvt2 THEN
                   ewNewPDir = -2
                ENDIF
             ENDIF
             
             ewPvt0 = ewNewVal
             ewPd0 = ewNewPDir
          ELSE
             // Direction change: FIFO shift + insert
             IF ewPCount >= 2 THEN
                IF ewDir = 1 AND ewNewVal > ewPvt1 THEN
                   ewNewPDir = 2
                ELSIF ewDir = -1 AND ewNewVal < ewPvt1 THEN
                   ewNewPDir = -2
                ENDIF
             ENDIF
             
             ewPvt3 = ewPvt2
             ewPvt2 = ewPvt1
             ewPd2 = ewPd1
             ewPvt1 = ewPvt0
             ewPd1 = ewPd0
             
             ewPvt0 = ewNewVal
             ewPd0 = ewNewPDir
             IF ewPCount < 6 THEN
                ewPCount = ewPCount + 1
             ENDIF
          ENDIF
          
          ewPrevDir = ewDir
       ENDIF
       
       // Wave detection
       IF ewPCount >= 4 THEN
          ewP2 = ewPvt1
          ewP2dir = ewPd1
          ewP1 = ewPvt2
          ewP1dir = ewPd2
          ewP0 = ewPvt3
          
          ewW1Len = abs(ewP1 - ewP0)
          ewW2Len = abs(ewP2 - ewP1)
          
          IF ewW1Len > 0 THEN
             ewIR2 = ewW2Len / ewW1Len
          ELSE
             ewIR2 = 0
          ENDIF
          
          ewIgnore = 0
          IF ewOldP0 = ewP0 AND ewOldP1 = ewP1 AND ewOldP2 = ewP2 THEN
             ewIgnore = 1
          ENDIF
          
          ewPatternOK = 0
          IF ewIR2 > 0.50 * ewErrMin AND ewIR2 < 0.50 * ewErrMax THEN
             ewPatternOK = 1
          ENDIF
          IF ewIR2 > 0.618 * ewErrMin AND ewIR2 < 0.618 * ewErrMax THEN
             ewPatternOK = 1
          ENDIF
          IF ewIR2 > 0.764 * ewErrMin AND ewIR2 < 0.764 * ewErrMax THEN
             ewPatternOK = 1
          ENDIF
          IF ewIR2 > 0.854 * ewErrMin AND ewIR2 < 0.854 * ewErrMax THEN
             ewPatternOK = 1
          ENDIF
          
          ewDirOK = 0
          IF (ewP1dir = 2 AND ewP2dir = -1) OR (ewP1dir = -2 AND ewP2dir = 1) THEN
             ewDirOK = 1
          ENDIF
          
          IF ewIgnore = 0 AND ewPatternOK = 1 AND ewDirOK = 1 THEN
             IF ewP0 > ewP1 THEN
                ewWdir = -1
             ELSE
                ewWdir = 1
             ENDIF
             
             waveFound = 1
             
             ewOldP0 = ewP0
             ewOldP1 = ewP1
             ewOldP2 = ewP2
          ENDIF
       ENDIF
       
    ENDIF
    
    // ============================================
    // COMBINED OUTPUT
    // ============================================
    // Signal: 1=Double Bottom, 2=Double Top, 3=Elliott Bull, 4=Elliott Bear
    IF Box = 1 THEN
       signal = 1
    ELSIF Box = 2 THEN
       signal = 2
    ELSIF waveFound = 1 AND ewWdir = 1 THEN
       signal = 3
    ELSIF waveFound = 1 AND ewWdir = -1 THEN
       signal = 4
    ELSE
       signal = 0
    ENDIF
    
    SCREENER[signal > 0](signal AS"1=DBot 2=DTop 3=EWBull 4=EWBear")
    



    #260111 quote
    robertogozzi
    Moderator
    Legend

    Este es el screener donde se fusionaron los dos screener separados.


    No comprobé si los nombres de las variables eran idénticos en ambos screener ; de ser así, se asumirá el del segundo screener tro, ya que lo añadí al final del primero. Si hay nombres idénticos, cámbielos, aunque solo sea añadiendo una X al principio o al final.


    Este screener devuelve los siguientes valores:

    10 = anteriormente 1 (screener 1)

    20 = anteriormente 2 (screener 1)

    91 = anteriormente -1 (screener 1)

    92 = anteriormente -2 (screener 1)


    30 = anteriormente 1 (segundo screener )

    40 = anteriormente 2 (segundo screener )

    50 = anteriormente 3 (segundo screener )

    60 = anteriormente 4 (segundo screener )

    Añadí la condición:

    AND (close > 500)
    

    a la última línea para evitar que encuentre demasiados datos. Puedes eliminar o modificar 500 como quieras:

    // Screener combinado: zonas de alerta
    // Dispara cuando Supply-Demand-CVD-Flow o Wick Pressure Zones
    // forman una zona nueva en el momento actual
    //
    // returns:
    //
    //    10 = formerly 1  (screener 1)
    //    20 = formerly 2  (screener 1)
    //    91 = formerly -1 (screener 1)
    //    92 = formerly -2 (screener 1)
    //
    //    30 = formerly 1  (2nd screener)
    //    40 = formerly 2  (2nd screener)
    //    50 = formerly 3  (2nd screener)
    //    60 = formerly 4  (2nd screener)
    //
    //---------------------------------------------------------
    //   screener 1
    //
    //---------------------------------------------------------
    // === 1. Supply-Demand-CVD-Flow (ChartPrime) ===
    atrLen = 14
    momMult = 1.0
    myATR = averagetruerange[atrLen](close)
    
    brkBody = abs(close[1] - open[1])
    isDemand = 0
    isSupply = 0
    if barindex > 2 then
    if (close[2] < open[2]) and (close[1] > open[1]) and brkBody >= momMult * myATR[1] then
    isDemand = 1
    endif
    if (close[2] > open[2]) and (close[1] < open[1]) and brkBody >= momMult * myATR[1] then
    isSupply = 1
    endif
    endif
    
    // === 2. Wick Pressure Zones (BigBeluga) ===
    lookback = 200
    threshold = 80
    extendBars = 20
    rsiLen = 14
    
    bodyTop = max(open, close)
    bodyBot = min(open, close)
    denUp = max(bodyTop, 0.0000001)
    denLo = max(low, 0.0000001)
    upperWick = (high - bodyTop) / denUp
    lowerWick = (bodyBot - low) / denLo
    
    maxUpper = highest[lookback](upperWick)
    maxLower = highest[lookback](lowerWick)
    
    sizeUpWick = 0
    sizeLoWick = 0
    if maxUpper > 0 then
    sizeUpWick = floor((upperWick / maxUpper) * 100)
    endif
    if maxLower > 0 then
    sizeLoWick = floor((lowerWick / maxLower) * 100)
    endif
    
    myrsi = rsi[rsiLen](close)
    
    once startidx = -100000
    
    newUpper = 0
    newLower = 0
    if sizeUpWick >= threshold and sizeLoWick < threshold and myrsi > 50 and (barindex - startidx > extendBars) then
    newUpper = 1
    startidx = barindex
    endif
    if sizeLoWick >= threshold and sizeUpWick < threshold and myrsi < 50 and (barindex - startidx > extendBars) then
    newLower = 1
    startidx = barindex
    endif
    
    // === 3. Condicion combinada ===
    zoneFormed = isDemand or isSupply or newUpper or newLower
    
    // === 4. Tipo de zona detectada ===
    sType = 0
    if isDemand then
    sType = 10
    endif
    if isSupply then
    sType = 91
    endif
    if newLower then
    sType = 20
    endif
    if newUpper then
    sType = 92
    endif
    //---------------------------------------------------------
    //    screener 2
    //
    //———————————————————-//
    //PRC_Combined Screener: Double Top/Bottom + Elliott Wave Impulse
    //version = 0
    //25.03.2026
    //Iván González @ http://www.prorealcode.com
    //Sharing ProRealTime knowledge
    //———————————————————-//
    
    // ============================================
    // PART 1: DOUBLE TOP / DOUBLE BOTTOM
    // ============================================
    dtPrd = 5
    dtTol = 15
    
    ph = high = highest[dtPrd](high)
    pl = low = lowest[dtPrd](low)
    
    IF ph AND pl = 0 THEN
    zzDir = 1
    ELSIF pl AND ph = 0 THEN
    zzDir = -1
    ELSE
    zzDir = zzDir
    ENDIF
    
    zzDirChanged = zzDir <> zzDir[1]
    Box = 0
    
    IF ph OR pl THEN
    IF zzDirChanged THEN
    IF zzDir = 1 THEN
    $zigzag[zzT+1] = highest[dtPrd](high)
    zzT = zzT + 1
    ELSIF zzDir = -1 THEN
    $zigzag[zzT+1] = lowest[dtPrd](low)
    zzT = zzT + 1
    ENDIF
    ELSE
    IF zzDir = 1 AND highest[dtPrd](high) > $zigzag[zzT] THEN
    $zigzag[zzT] = highest[dtPrd](high)
    ELSIF zzDir = -1 AND lowest[dtPrd](low) < $zigzag[zzT] THEN
    $zigzag[zzT] = lowest[dtPrd](low)
    ENDIF
    ENDIF
    ENDIF
    
    IF zzT > 4 THEN
    //—-Double Top pattern—-//
    htop = ($zigzag[zzT-3] + $zigzag[zzT-1]) / 2 - $zigzag[zzT-2]
    TopHigh = $zigzag[zzT-3] + htop * dtTol / 100
    BotHigh = $zigzag[zzT-3] - htop * dtTol / 100
    DoubleTop = ($zigzag[zzT-1] >= BotHigh AND $zigzag[zzT-1] <= TopHigh) AND ($zigzag[zzT-3] > dtY1 AND $zigzag[zzT-3] > $zigzag[zzT-2] AND $zigzag[zzT-1] > $zigzag[zzT-2])
    IF DoubleTop AND NOT DoubleTop[1] THEN
    dtY1 = $zigzag[zzT-4]
    Box = 2
    ENDIF
       
    //—-Double Bottom pattern—-//
    hbot = $zigzag[zzT-2] - ($zigzag[zzT-3] + $zigzag[zzT-1]) / 2
    topLow = $zigzag[zzT-3] + hbot * dtTol / 100
    botLow = $zigzag[zzT-3] - hbot * dtTol / 100
    DoubleBot = ($zigzag[zzT-1] >= botLow AND $zigzag[zzT-1] <= topLow) AND ($zigzag[zzT-3] < $zigzag[zzT-4] AND $zigzag[zzT-3] < $zigzag[zzT-2] AND $zigzag[zzT-1] < $zigzag[zzT-2])
    IF DoubleBot AND NOT DoubleBot[1] THEN
    Box = 1
    ENDIF
    ENDIF
    
    // ============================================
    // PART 2: ELLIOTT WAVE IMPULSE
    // ============================================
    ewLength = 15
    ewError = 5
    
    ewErrMin = (100 - ewError) / 100
    ewErrMax = (100 + ewError) / 100
    
    waveFound = 0
    ewWdir = 0
    
    IF barindex >= ewLength THEN
       
    hb = highestbars[ewLength](high)
    lb = lowestbars[ewLength](low)
       
    IF hb = 0 AND lb <> 0 THEN
    ewPHigh = high
    ewPLow = undefined
    ewDir = 1
    ELSIF lb = 0 AND hb <> 0 THEN
    ewPHigh = undefined
    ewPLow = low
    ewDir = -1
    ELSIF hb = 0 AND lb = 0 THEN
    ewPHigh = high
    ewPLow = low
    ewDir = ewPrevDir
    ELSE
    ewPHigh = undefined
    ewPLow = undefined
    ewDir = ewPrevDir
    ENDIF
       
    ewHasPivot = 0
    IF ewPHigh <> undefined OR ewPLow <> undefined THEN
    ewHasPivot = 1
    ENDIF
       
    IF ewHasPivot THEN
    IF ewDir = 1 THEN
    ewNewVal = high
    ELSE
    ewNewVal = low
    ENDIF
    ewNewPDir = ewDir
          
    ewDirChanged = 0
    IF ewDir <> ewPrevDir AND ewPrevDir <> 0 THEN
    ewDirChanged = 1
    ENDIF
          
    // Same direction: replace pvt0 if more extreme
    IF ewDirChanged = 0 AND ewPCount >= 1 THEN
    IF ewDir = 1 THEN
    IF ewNewVal < ewPvt0 THEN
    ewNewVal = ewPvt0
    ENDIF
    ELSE
    IF ewNewVal > ewPvt0 THEN
    ewNewVal = ewPvt0
    ENDIF
    ENDIF
             
    IF ewPCount >= 3 THEN
    IF ewDir = 1 AND ewNewVal > ewPvt2 THEN
    ewNewPDir = 2
    ELSIF ewDir = -1 AND ewNewVal < ewPvt2 THEN
    ewNewPDir = -2
    ENDIF
    ENDIF
             
    ewPvt0 = ewNewVal
    ewPd0 = ewNewPDir
    ELSE
    // Direction change: FIFO shift + insert
    IF ewPCount >= 2 THEN
    IF ewDir = 1 AND ewNewVal > ewPvt1 THEN
    ewNewPDir = 2
    ELSIF ewDir = -1 AND ewNewVal < ewPvt1 THEN
    ewNewPDir = -2
    ENDIF
    ENDIF
             
    ewPvt3 = ewPvt2
    ewPvt2 = ewPvt1
    ewPd2 = ewPd1
    ewPvt1 = ewPvt0
    ewPd1 = ewPd0
             
    ewPvt0 = ewNewVal
    ewPd0 = ewNewPDir
    IF ewPCount < 6 THEN
    ewPCount = ewPCount + 1
    ENDIF
    ENDIF
          
    ewPrevDir = ewDir
    ENDIF
       
    // Wave detection
    IF ewPCount >= 4 THEN
    ewP2 = ewPvt1
    ewP2dir = ewPd1
    ewP1 = ewPvt2
    ewP1dir = ewPd2
    ewP0 = ewPvt3
          
    ewW1Len = abs(ewP1 - ewP0)
    ewW2Len = abs(ewP2 - ewP1)
          
    IF ewW1Len > 0 THEN
    ewIR2 = ewW2Len / ewW1Len
    ELSE
    ewIR2 = 0
    ENDIF
          
    ewIgnore = 0
    IF ewOldP0 = ewP0 AND ewOldP1 = ewP1 AND ewOldP2 = ewP2 THEN
    ewIgnore = 1
    ENDIF
          
    ewPatternOK = 0
    IF ewIR2 > 0.50 * ewErrMin AND ewIR2 < 0.50 * ewErrMax THEN
    ewPatternOK = 1
    ENDIF
    IF ewIR2 > 0.618 * ewErrMin AND ewIR2 < 0.618 * ewErrMax THEN
    ewPatternOK = 1
    ENDIF
    IF ewIR2 > 0.764 * ewErrMin AND ewIR2 < 0.764 * ewErrMax THEN
    ewPatternOK = 1
    ENDIF
    IF ewIR2 > 0.854 * ewErrMin AND ewIR2 < 0.854 * ewErrMax THEN
    ewPatternOK = 1
    ENDIF
          
    ewDirOK = 0
    IF (ewP1dir = 2 AND ewP2dir = -1) OR (ewP1dir = -2 AND ewP2dir = 1) THEN
    ewDirOK = 1
    ENDIF
          
    IF ewIgnore = 0 AND ewPatternOK = 1 AND ewDirOK = 1 THEN
    IF ewP0 > ewP1 THEN
    ewWdir = -1
    ELSE
    ewWdir = 1
    ENDIF
             
    waveFound = 1
             
    ewOldP0 = ewP0
    ewOldP1 = ewP1
    ewOldP2 = ewP2
    ENDIF
    ENDIF
       
    ENDIF
    
    // ============================================
    // COMBINED OUTPUT
    // ============================================
    // Signal: 1=Double Bottom, 2=Double Top, 3=Elliott Bull, 4=Elliott Bear
    IF Box = 1 THEN
    sType  = 30
    ELSIF Box = 2 THEN
    sType  = 40
    ELSIF waveFound = 1 AND ewWdir = 1 THEN
    sType  = 50
    ELSIF waveFound = 1 AND ewWdir = -1 THEN
    sType  = 60
    ENDIF
    //---------------------------------------------------------
    CombinedSignal = zoneFormed OR Box OR waveFound OR ewWdir
    SCREENER[CombinedSignal AND (close > 500)] (sType as "10/20/91/92=Zone Type,30=DBot,40=DTop,50=EWBull,60=EWBear")
    





    NicoGB67 thanked this post
    #260113 quote
    robertogozzi
    Moderator
    Legend

    Este es el archivo ITF.


    NicoGB67 thanked this post
    CombinedScreener.itf
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

Screener combinado Supply-Demand y Wick Pressure en PRT


ProScreener: Buscadores de Mercado y Rastreo

New Reply
Author
author-avatar
NicoGB67 @nicogb67 Participant
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by robertogozzi
5 months ago.

Topic Details
Forum: ProScreener: Buscadores de Mercado y Rastreo
Language: Spanish
Started: 04/10/2026
Status: Active
Attachments: 1 files
Logo Logo
Loading...