Hi everyone,
I’m trying to build a ProScreener that identifies stocks which are currently touching a previous demand zone, based on the last 50 candles.
My requirements are:
-
Price below $20
-
Average volume > 1,000,000
-
Current price touching or very close to a previous demand zone
– Ideally the screener should detect the most recent demand area, swing low or support
Thank you.
My screening requirements:
-
Price < $20
-
Average volume (50-period) > 1,000,000
-
Current price has returned to a previous demand zone, defined as either:
Scenario 1 — Classic demand zone (swing-low base):
A cluster of equal or similar lows forms a base, followed by a strong bullish move.
I’d like the screener to detect when price later comes back down into that base area.
Scenario 2 — Breakout-retest zone:
Price breaks above a recent consolidation / mini-range, then later pulls back to retest the top of that range.
I’d like this retest area to also be treated as a demand zone.
I am happy for the screener to detect either scenario.
If ProRealTime cannot code a full “zone,” I’m happy with an approximation such as:
-
the most recent swing-low level (within the last 50 candles),
-
and price currently touching / within a small tolerance of that level.
Here you have a example of screener:
// ------------------------------------
// INPUTS
// ------------------------------------
// Price and Volume constraints
priceCap = 20
volCap = 1000000
volLength = 20 // Moving average period for volume
// Lookback period for the demand zone (Support)
lookback = 50
// Tolerance to define "touching" or "very close" (0.02 = 2%)
tolerance = 0.02
// ------------------------------------
// FILTERS CALCULATION
// ------------------------------------
// Calculate Average Volume
avgVol = Average[volLength](Volume)
// Conditions for Price and Volume
c1 = Close < priceCap
c2 = avgVol > volCap
// ------------------------------------
// DEMAND ZONE IDENTIFICATION
// ------------------------------------
supportLevel = Lowest[lookback](Low)[1]
// ------------------------------------
// PROXIMITY LOGIC
// ------------------------------------
// Upper limit and lower limit
zoneTop = supportLevel * (1 + tolerance)
zoneBot = supportLevel * (1 - tolerance)
c3 = Low <= zoneTop AND Close >= zoneBot
// ------------------------------------
SCREENER[c1 AND c2 AND c3] ((Close - supportLevel) / supportLevel * 100 AS "% Dist to Supp")
….maybe
the most recent swing-low / base area.
Thanks