Find stocks touching a previous demand zone

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #254293 quote
    MrMagicMrMagic
    Participant
    Average

    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:

    1. Price below $20

    2. Average volume > 1,000,000

    3. 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.
    Screenshot-2025-12-05-at-15.37.07.png Screenshot-2025-12-05-at-15.37.07.png Screenshot-2025-12-05-at-15.38.37.png Screenshot-2025-12-05-at-15.38.37.png
    #254297 quote
    MrMagicMrMagic
    Participant
    Average

    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.

    #254346 quote
    Iván GonzálezIván González
    Moderator
    Legend
    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")
    
    MrMagic and robertogozzi thanked this post
    #254883 quote
    MrMagicMrMagic
    Participant
    Average
    Hi Iván, thank you for sharing the example screener.
    • I’ve tested it and noticed that a stock which visually meets the criteria did not appear in the results. In particular, AEHL (attached) did not appear, even though the price has clearly returned to a prior base/consolidation demand zone on the chart.
    • I understand that the screener currently defines the demand zone as the single lowest low of the lookback period. In this case, the demand area is a cluster/base of equal lows followed by an impulsive move, rather than the absolute lowest wick, which may explain why AEHL was missed.
    • Is there a way in ProScreener to approximate a demand zone based on a base or cluster of lows followed by an impulsive move, rather than only the lowest low? If not, what would be the closest practical workaround?
    Screenshot-2025-12-30-at-17.27.06.png Screenshot-2025-12-30-at-17.27.06.png
    #254885 quote
    MrMagicMrMagic
    Participant
    Average
    ….maybe

    the most recent swing-low / base area. 

    Thanks
    #260119 quote
    MrMagicMrMagic
    Participant
    Average

    Hi Ivan


    Thanks again for the previous screener.


    I realised the current code defines support as the lowest low of the lookback period:

    supportLevel = Lowest[lookback](Low)[1]


    However, what I actually want is price returning to a previous demand zone, not just the absolute lowest low.


    In other words:


    • price forms a demand zone
    • price moves away
    • price returns to that same zone


    Additional filters:


    • Stock price < $20
    • Average volume > 1,000,000


    Does anyone know how to modify the screener so it detects a return to a previous demand zone or consolidation area, rather than simply the lowest price in the lookback?


    Thanks very much.

    KR

    Screenshot-2026-04-11-at-09.17.28.png Screenshot-2026-04-11-at-09.17.28.png Screenshot-2026-04-11-at-09.18.12.png Screenshot-2026-04-11-at-09.18.12.png Screenshot-2026-04-11-at-09.18.20.png Screenshot-2026-04-11-at-09.18.20.png
Viewing 6 posts - 1 through 6 (of 6 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

Find stocks touching a previous demand zone


ProScreener: Market Scanners & Detection

New Reply
Author
author-avatar
MrMagic @mrmagic Participant
Summary

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

Topic Details
Forum: ProScreener: Market Scanners & Detection
Language: English
Started: 12/05/2025
Status: Active
Attachments: 6 files
ProRealCode ProRealCode
Loading...