Atlas Candle Volume Engine Atlas Candle Volume Engine
Read the candle. Measure the participation. Understand the move.
The Atlas Candle Volume Engine is a multi-timeframe candle and volume analysis tool designed to answer one fundamental question:
Is price moving with meaningful participation — or is it moving on weak volume?
Instead of treating every bullish or bearish candle equally, Atlas breaks the candle down into its individual components and compares them across Chart, 1H, 15M and 5M.
The result is a compact market diagnostic table that lets you see direction, candle strength, rejection, volume participation, volatility and volume efficiency at a glance.
How to read the table
🟢 Direction
Shows whether the candle is currently BULL or BEAR.
Don't use Direction by itself.
A bearish candle on extremely low volume is very different from a bearish candle accompanied by a major volume expansion.
Think:
Direction tells you what price did.
The other rows help explain why it may have happened.
📊 Body %
Measures how much of the candle's range is real body.
Example:
80% Body
Price travelled decisively in one direction.
20% Body
Most of the candle's movement was wick.
Reading it:
High Body % + high volume = stronger directional candle
Low Body % + high volume = potential conflict/rejection
📍 Close %
Shows where the candle finished within its high-low range.
Close near 90–100%
Buyers controlled most of the candle.
Close near 0–10%
Sellers controlled most of the candle.
Close around 50%
Neither side clearly controlled the final outcome.
Example
A bullish candle with:
Body 85% Close 95% Volume 2.2×
is much more convincing than:
Body 25% Close 52% Volume 2.2×
The volume is identical, but the result of that volume is completely different.
Wick % — rejection
Upper Wick
A large upper wick means price traded higher but failed to hold those levels.
Lower Wick
A large lower wick means price traded lower but recovered.
Example — potential selling rejection
Bear/Bull candle Upper Wick 45% Volume 2.5×
This tells you there was substantial activity at higher prices, but price couldn't maintain the high.
Example — potential buying rejection
Lower Wick 50% Volume 2.5×
Price was pushed lower but recovered strongly.
Wicks become much more meaningful when accompanied by elevated volume.
🔥 Volume Ratio
This is one of the most important numbers.
It compares current volume with its normal volume.
Example
0.50×
Volume is roughly half normal.
1.00×
Normal participation.
1.50×
50% above normal.
2.00×
Twice normal volume.
3.00×
Extreme participation.
The key rule:
High volume does NOT automatically mean bullish.
It means:
Something significant is happening.
We then look at the candle to determine what price actually did with that participation.
📈 Volume Percentile
This answers a slightly different question:
How unusual is this volume compared with previous candles?
For example:
95% percentile
means current volume is unusually high compared with its historical distribution.
10% percentile
means volume is relatively quiet.
Example
Price suddenly falls with:
Volume Ratio: 2.4× Volume Percentile: 97%
That's a major participation event.
Now look at:
Body + Close + Wicks + Efficiency
to determine what that participation accomplished.
🚀 Volume Acceleration
This tells you whether participation is increasing or decreasing.
Example
0.8×
1.0×
1.3×
1.7×
2.1×
Volume is accelerating.
If price is simultaneously moving upward with strong candles, that can indicate expanding participation behind the move.
Conversely:
2.4×
2.0×
1.6×
1.2×
0.8×
Volume is fading.
If price continues moving but participation keeps disappearing, the move may be losing strength.
⚡ Range / ATR
This tells you how large the candle is compared with normal volatility.
Example
0.40
Small movement.
1.00
Normal movement.
2.00
The candle is approximately twice the normal ATR range.
A large range combined with high volume is much more significant than a tiny candle occurring on the same volume.
💥 Body / ATR
This focuses specifically on directional displacement.
A candle could have a large range because of huge wicks.
Body/ATR helps determine whether price actually travelled directionally.
Example A
Range/ATR = 2.0 Body/ATR = 0.3
Huge candle, but most of it was wick.
Example B
Range/ATR = 1.5 Body/ATR = 1.2
Most of the movement was genuine directional displacement.
That distinction is extremely important.
⚙️ Efficiency
Efficiency brings several of these ideas together.
It asks:
How effectively is the current volume producing price movement?
HIGH efficiency
Volume is producing substantial directional displacement.
MED efficiency
Some movement is occurring, but the signal is less decisive.
LOW efficiency
A lot of activity is producing relatively little directional movement.
Real-world examples
Example 1 — Strong bullish expansion
Direction BULL
Body % 85%
Close % 94%
Upper Wick 5%
Lower Wick 11%
Vol Ratio 2.3×
Vol Percentile 96%
Vol Accel UP
Range/ATR 1.7
Body/ATR 1.4
Efficiency HIGH
Reading:
Bullish direction + strong body + close near high + high volume + increasing participation + strong displacement.
This is a high-quality bullish expansion profile.
Example 2 — Weak bearish move
Direction BEAR
Body % 72%
Close % 67%
Vol Ratio 0.35×
Vol Percentile 8%
Vol Accel DOWN
Range/ATR 0.55
Body/ATR 0.40
Efficiency MED
Price is falling.
But participation is weak.
Reading:
Bearish price action, but little evidence of expanding participation behind the move.
This doesn't automatically mean bullish — it means the bearish move isn't strongly confirmed by volume.
Example 3 — High-volume rejection
Direction BULL
Body % 25%
Close % 58%
Upper Wick 62%
Vol Ratio 2.8×
Vol Percentile 98%
Vol Accel UP
Range/ATR 1.9
Body/ATR 0.35
Efficiency LOW
This is very interesting.
Huge volume.
Huge range.
But very little body.
And a massive upper wick.
Reading:
A lot of activity occurred, but price failed to maintain the move higher.
That is a very different market condition from a clean bullish expansion.
Example 4 — Quiet accumulation/absorption type behaviour
Direction BULL
Body % 30%
Close % 72%
Lower Wick 48%
Vol Ratio 2.2×
Vol Percentile 94%
Vol Accel UP
Range/ATR 1.4
Body/ATR 0.30
Efficiency MED
Price was pushed down, but recovered.
Volume is elevated.
The lower wick is large.
Reading:
Significant activity occurred at lower prices, but sellers failed to maintain control.
This is the sort of pattern where the relationship between volume + wick + close becomes much more informative than candle colour alone.
The golden rule of the table
Never read one row in isolation.
Instead, read it in layers:
1️⃣ Direction
Which way did price move?
↓
2️⃣ Body + Close
How decisively did it move?
↓
3️⃣ Wicks
Was there rejection?
↓
4️⃣ Volume Ratio + Percentile
Was there meaningful participation?
↓
5️⃣ Volume Acceleration
Is participation increasing or fading?
↓
6️⃣ Range/ATR + Body/ATR
How significant was the actual displacement?
↓
7️⃣ Efficiency
Did the volume actually accomplish much?
Multi-timeframe example
This is where the table becomes particularly powerful.
Imagine:
1H 15M 5M
Direction BULL BULL BEAR
Body % 82% 74% 65%
Vol Ratio 1.8× 2.1× 0.5×
Vol Accel UP UP DOWN
Efficiency HIGH HIGH MED
The 1H and 15M are showing strong bullish participation, while the 5M is currently pulling back on weak volume.
That tells a very different story from:
1H 15M 5M
Direction BEAR BEAR BEAR
Vol Ratio 2.1× 2.4× 2.7×
Vol Accel UP UP UP
Efficiency HIGH HIGH HIGH
Here, all three time frames are showing expanding bearish participation.
That's the real purpose of the table:
Don't just look at the colour of the candle. Look at what the market had to do to produce it.
Atlas Candle Volume Engine
Price tells you what happened. Volume tells you how much participation was involved. Candle structure tells you how that participation affected price. Efficiency tells you how much the market actually accomplished.
That combination is what makes the table useful as a standalone market-reading tool. Indicator

Volume Liquidity Trend [ChartPrime]Volume Liquidity Trend
🔶 OVERVIEW
Standard trend indicators track price direction but completely ignore the volume profile structural footprints left behind during the trend's development. The Volume Liquidity Trend indicator solves this by combining advanced mathematical smoothing with a dynamic, trend-isolated Volume Node Mapping Engine .
This script filters price streams through a stabilization algorithm to establish a core trend, tracks the exact duration of that trend lifecycle, and continuously projects significant historical volume anchors into the future as active liquidity levels until price completely invalidates or "mitigates" them.
🔶 HOW IT WORKS
The indicator executes its calculations through a multi-tiered pipeline:
Kalman-Based Trend Filter: The indicator filters a user-defined price source using an adaptive stabilization equation. It calculates volatility bands relative to this smoothed average (using a 2 x ATR boundary). A close above the upper band establishes a Bullish Trend , while a close below the lower band triggers a Bearish Trend .
Trend-Isolated Volume Mapping: When a trend changes, a clean data sweep resets the history array. The script tracks every single candle inside the active trend and identifies the absolute highest transaction point (the 100% Peak Volume Anchor).
Normalized Liquidity Vectors: Every candle within the trend has its volume calculated relative to that peak volume anchor (0% to 100%). If a historical level passes your volume cutoff threshold, the script maps a horizontal liquidity line from that candle's average price (HLC3) out into the future margin space.
Automated Mitigation Tracking: The script continuously tests these horizontal volume tracks against historical price action. If subsequent candle bodies cross through an established volume line, that line is marked as "mitigated" (crossed) and automatically stripped from the screen to keep your chart uncluttered.
🔶 KEY FEATURES
Adaptive Vector Widths & Gradients: Unmitigated volume lines feature a dynamic visual profile. Lines are automatically thicker and more heavily saturated based on their relative volume strength. Furthermore, lines dynamically shift color depending on whether price is trading above (Bullish Support) or below (Bearish Resistance) the volume node.
Anomalous 100% Peak Tracker: Includes a specialized alert line that forces the historical 100% transaction anchor to remain visible as a bright dashed line only after price has broken through it, signaling a breached institutional base.
Real-Time Trend Analytics Panel: A sleek UI dashboard positioned at the top right tracking:
• Current Trend Status: Active market direction matching the volatility bands.
• Trend Duration: Exact bar runtime age since the initial structural breakout.
• 100% Vol Level: The exact price coordinate where the heaviest volume anomaly occurred during the current sequence.
🔶 TRADING APPLICATIONS
High-Volume Pullback Entries: During a strong trend, look for pullback entries directly into unmitigated lines that have high volume percentages (75% - 95%). These thick vector nodes represent massive resting buy/sell block clusters where institutions are likely to defend their positions.
Breakout Confirmation Diamonds: The trend reversal points are highlighted on your chart with sharp diamond markers. A breakout accompanied by an immediate generation of high-percentage liquidity trails suggests an institutional backed expansion.
Support & Resistance Confluence Trim: When multiple volume lines cluster closely together at a specific price zone, it builds a structural wall of institutional liquidity, marking a prime zone for target take-profits or reversal entries.
🔶 SETTINGS
Stabilization Coefficient: Controls the responsiveness of the underlying filtering mechanism. Lower values yield exceptionally smooth lines that are highly tolerant of short-term volatility spikes.
Volume Cutoff Threshold: The sensitivity slider for plotting liquidity vectors (0.0 to 1.0). A higher setting like 0.50 filters out quiet trading periods and only draws lines for bars with significant volume footprints.
Extend Lines Into Future: Determines the number of bars to project active unmitigated volume tracks into the right-hand margin blank space.
🔶 CONCLUSION
The Volume Liquidity Trend indicator offers an institutional perspective by integrating volume data directly into a trailing trend model. By isolating volume profile nodes specifically to the lifetime of the current trend and introducing adaptive coloring based on price positioning, it ensures your support and resistance targets perfectly match real-time market participant behavior. Indicator

Indicator

Liquidity + Order Blocks Liquidity & Order Blocks [Pine Script
📌 Overview
Liquidity & Order Blocks is a price-action and Smart Money Concepts (SMC) style indicator designed to help traders visually identify important liquidity areas, liquidity sweeps, and potential order-block zones directly on the chart.
The indicator is designed primarily as a market-structure and price-action analysis tool. It does not guarantee profitable trades and should not be used as a standalone trading system.
---
🔹 What Does This Indicator Show?
1. Buy-Side Liquidity (BSL)
Buy-side liquidity is generally found above previous swing highs.
The indicator identifies swing highs and projects liquidity levels from them.
When price moves above a previous swing high and then closes back below that level, the indicator can identify it as a:
BSL Sweep — Buy-Side Liquidity Sweep
This can be useful when studying potential bearish reactions after liquidity has been taken.
---
2. Sell-Side Liquidity (SSL)
Sell-side liquidity is generally found below previous swing lows.
The indicator identifies swing lows and projects liquidity levels from them.
When price moves below a previous swing low and then closes back above that level, the indicator can identify it as:
SSL Sweep — Sell-Side Liquidity Sweep
This can be useful when studying potential bullish reactions after liquidity has been taken.
---
🔹 Order Blocks
The indicator automatically searches for potential order blocks following liquidity sweeps.
🟢 Bullish Order Block
A bullish order block is identified after a sell-side liquidity sweep when bullish price action appears.
The indicator searches backward for the most recent bearish candle and uses that candle's high/low as the potential bullish order-block zone.
🔴 Bearish Order Block
A bearish order block is identified after a buy-side liquidity sweep when bearish price action appears.
The indicator searches backward for the most recent bullish candle and uses that candle's high/low as the potential bearish order-block zone.
---
📚 How To Use It
A simple workflow is:
Step 1 — Identify the Market Structure
Start by looking at the overall trend and recent swing highs/lows.
Ask yourself:
- Is price making higher highs and higher lows?
- Is price making lower highs and lower lows?
- Where are the obvious swing points?
- Where might liquidity be resting?
Do not immediately enter a trade just because an order block appears.
---
Step 2 — Find Liquidity
Look for obvious:
Buy-side liquidity
- Previous swing highs
- Equal/near-equal highs
- Areas where traders may have placed stop orders
Sell-side liquidity
- Previous swing lows
- Equal/near-equal lows
- Areas where traders may have placed stop orders
---
Step 3 — Wait for the Sweep
Instead of chasing price into liquidity, watch how price reacts when the liquidity level is taken.
For example:
Price moves below a previous low → takes sell-side liquidity → closes back above the level.
This can indicate that the liquidity below the low has been taken.
The indicator marks this as an SSL Sweep.
---
Step 4 — Look for the Order Block
After a liquidity sweep, look for the corresponding order-block zone.
For a potential bullish setup:
SSL Sweep → Bullish reaction → Bullish Order Block
For a potential bearish setup:
BSL Sweep → Bearish reaction → Bearish Order Block
The order block should be treated as an area of interest, not an automatic entry.
---
Step 5 — Wait for Confirmation
Before entering a trade, consider additional confirmation such as:
- Market Structure Shift
- Break of Structure (BOS)
- Change of Character (CHoCH)
- Strong displacement
- Fair Value Gap (FVG)
- Retest of the order block
- Higher-timeframe direction
- Risk/reward conditions
The more confluence you have, the more selective your setup can become.
---
🎯 Example Bullish Setup
A simplified bullish sequence can look like:
Sell-Side Liquidity → SSL Sweep → Bullish Displacement → Bullish Order Block → Retest → Confirmation
Instead of buying immediately after the sweep, study whether price actually produces a meaningful bullish reaction.
---
🎯 Example Bearish Setup
A simplified bearish sequence can look like:
Buy-Side Liquidity → BSL Sweep → Bearish Displacement → Bearish Order Block → Retest → Confirmation
Again, the indicator is intended to help identify the area for further analysis rather than automatically telling you to sell.
---
⚙️ Important Settings
Swing Length
Controls how sensitive swing-high and swing-low detection is.
Lower value
- More swing points
- More liquidity levels
- More signals
- More noise
Higher value
- Fewer swing points
- Larger structural levels
- Less noise
- More selective analysis
Start with a moderate value and adjust it according to the market and timeframe.
---
Order Block Search Bars
Controls how far back the indicator searches for the candle used to create the potential order block.
A larger value allows the indicator to search farther back, but may also produce zones that are less relevant to the immediate price action.
---
Order Block Extension
Controls how far the order-block zone extends into the future.
---
Maximum Order Blocks
Controls the number of historical order-block zones displayed on the chart.
---
Remove Broken Order Blocks
When enabled, an order block can be removed after price invalidates it according to the indicator's rules.
---
📖 How To Learn Liquidity & Order Blocks
If you are new to this concept, don't try to memorize dozens of SMC terms at once.
Learn in this order:
1️⃣ Market Structure
Learn:
- Swing High
- Swing Low
- Higher High (HH)
- Higher Low (HL)
- Lower High (LH)
- Lower Low (LL)
2️⃣ Liquidity
Learn why liquidity can form around:
- Previous highs
- Previous lows
- Equal highs
- Equal lows
- Obvious support/resistance
3️⃣ Liquidity Sweeps
Study what happens when price trades beyond an obvious high/low and then reverses.
4️⃣ Displacement
Learn to recognize strong directional price movement following a liquidity event.
5️⃣ Order Blocks
Study the relationship between the final opposing candle, displacement, and subsequent price reaction.
6️⃣ Confluence
Finally, combine liquidity and order blocks with market structure, FVGs, higher-timeframe bias, and risk management.
⭐ Recommended Workflow
For a simple approach:
Higher-Timeframe Bias
↓
Identify Liquidity
↓
Wait for Liquidity Sweep
↓
Look for Displacement
↓
Identify Order Block
↓
Wait for Retest
↓
Look for Confirmation
↓
Manage Risk
The goal is not to take every signal.
The goal is to use the indicator to help you understand where liquidity may be located, what price does when that liquidity is taken, and where potential order-block zones may exist.
---
🔔 Alerts
The indicator includes alert conditions for:
- Buy-Side Liquidity Sweep
- Sell-Side Liquidity Sweep
- Bullish Order Block
- Bearish Order Block
You can create PulseWire alerts from these conditions and use them as notifications for further analysis.
---
Trade smart. Study the chart. Manage your risk. Indicator

Support & Resistance Zones [HexaTrades]
This indicator automatically finds the price levels where the market has turned around before the places where buyers stepped in (support) and where sellers took over (resistance) and draws them as clean rectangular zones on your chart.
Instead of a thin line, each level is drawn as a zone with real thickness, because support and resistance are never one exact price; they are areas where price reacts. The zones update live, extend forward as long as they are valid, and turn into light "ghost" boxes once price finally breaks through them, so you always keep the full picture of the market's history.
Bitcoin 4h: the indicator marking support and resistance zones
How it works
- Finds swing points. A swing high is a candle whose high is higher than the 10 candles on each side of it (the "Swing Length" setting). A swing low is the same idea upside down. These are the exact spots where the market turned.
- Builds a zone from the candle. The zone covers the candle's wick from the extreme tip to the candle body. That wick is where orders actually pushed price back, so it becomes the zone.
- Keeps zone size sensible. Very small wicks get padded to a minimum height, and no zone can grow taller than a maximum height (both measured in ATR, so they adapt automatically to each market's volatility).
- Merges duplicate levels. If a new swing forms at a level that already has a zone, the two are combined into one box instead of stacking clutter on your chart.
- Watches for breaks. When a candle closes beyond a zone, the zone is "broken." what happens next is up to you (see below).
What happens after a zone breaks?
The indicator provides three different zone-management options.
Keep As Past Zone: The broken zone stops extending and remains visible as a faded historical zone. This makes it easier to review how price behaved around previous levels.
Flip Support/Resistance: A broken resistance zone becomes support, while a broken support zone becomes resistance.
This is useful for studying the common market concept of role reversal, where old resistance may act as new support and old support may act as new resistance.
Delete Zone: The zone is completely removed after it breaks. This option is useful for traders who prefer a cleaner chart showing only active zones.
Optional volume filter:
Volume-Confirmed Zones Only can be enabled to filter out lower-volume swing points.
When enabled, the volume of the swing candle must be higher than: Average Volume × Volume Multiplier
For example, with a Volume Multiplier of 1.2, the swing candle’s volume must be greater than 120% of its average volume.
The volume filter is automatically ignored when volume data is unavailable. Volume quality can vary between markets, exchanges and brokers.
Indicator settings
- Swing Length: Controls how significant a swing must be. Lower values create more zones, while higher values create fewer but potentially more significant zones.
- Maximum Zones: Limits the number of active zones displayed. When the limit is exceeded, the oldest active zone is removed.
- ATR Length: Sets the calculation period used to measure volatility.
- Minimum Zone Height: Sets the minimum zone thickness as a multiple of ATR.
- Maximum Zone Height: Prevents zones from becoming excessively wide.
- Merge Overlapping Zones: Combines overlapping or nearby active zones.
- Merge Distance: Controls the ATR-based distance used when deciding whether zones should be merged.
- Maximum Past Zones: Limits how many broken historical zones remain on the chart.
- Past Zone Transparency: Controls how clearly broken zones are displayed.
Alerts
- Built-in alerts
- Zone Touched — price entered a support or resistance zone.
- Resistance Broken — a candle broke above a resistance zone.
- Support Broken — a candle broke a support zone below.
- Set them up from PulseWire's alert dialog: Create Alert → Condition → S/R Zones.
How to use it in trading
🔶Bounce trades: when price falls into a support zone and prints a rejection candle, that's a long setup with a stop just below the zone.
A blue support zone represents an area where buyers previously entered the market.
When price returns to support:
- Wait for price to enter or test the zone.
- Look for evidence that buyers are responding.
- Consider an entry only after confirmation.
- Place the stop beyond the opposite side of the zone, with an appropriate buffer.
- Use the next resistance zone as a possible target.
Possible bullish confirmation includes:
- A candle rejecting the lower part of the zone.
- A long lower wick followed by a bullish close.
- A bullish engulfing candle.
- Price closing back above the support zone.
- Increasing volume during the reaction.
- A higher low forming near the zone.
A support touch by itself is not a long signal. Price can move directly through the zone, especially during a strong downtrend.
Example image below:
🔶Rejection from resistance
A pink resistance zone represents an area where sellers previously entered the market.
When price reaches resistance:
- Wait for price to test the zone.
- Look for signs of selling pressure.
- Consider an entry only after bearish confirmation.
- Place the stop beyond the upper edge of the zone, with a suitable buffer.
- Use the next support zone below as a possible target.
Possible bearish confirmation includes:
- A long upper wick inside the resistance zone.
- A bearish engulfing candle.
- Price entering the zone and closing back below it.
- A lower high forming near resistance.
- Increasing selling volume during the rejection.
A resistance touch alone is not a short signal. Strong bullish momentum can break through resistance without producing a meaningful reversal.
Example image:
🔶Trading a breakout
A breakout occurs when price moves beyond an active zone.
- A break above resistance may indicate increasing bullish strength.
- A break below support may indicate increasing bearish strength.
For more conservative confirmation, select Close under Break Confirmation. In this mode, a resistance zone breaks only after a candle closes above it, while a support zone breaks only after a candle closes below it.
The Wick option reacts as soon as price trades beyond the zone. It responds faster but is more sensitive to temporary spikes and false breakouts.
Before considering a breakout trade, traders may look for:
- A strong candle closing beyond the zone.
- A candle body that closes clearly outside the zone.
- Higher-than-average volume.
- Momentum in the breakout direction.
- Alignment with the broader market trend.
- A successful retest of the broken zone.
🔶Trading a role reversal
Support and resistance can sometimes exchange roles after a breakout.
-Broken resistance may later act as support.
- Broken support may later act as resistance.
Select Flip Support/Resistance under the When Broken setting to display this behaviour automatically.
For example, after price closes above a pink resistance zone, the indicator converts that area into a blue support zone. If price later returns to it, traders can watch for a bullish reaction.
Similarly, when price breaks below blue support, the indicator converts the zone into pink resistance. A later retest may provide an area to watch for bearish confirmation.
Role reversal is a commonly observed price-action concept, but it does not occur successfully after every breakout. Wait for confirmation instead of entering only because price has returned to a flipped zone.
🔶Using zones for targets and stops
Zones can also help organise trade management.
For a long setup:
- A stop may be placed below the support zone.
- The next resistance zone may be used as an initial target.
- A higher resistance zone may be considered as a secondary target if momentum remains strong.
For a short setup:
- A stop may be placed above the resistance zone.
- The next support zone may be used as an initial target.
- A lower support zone may be considered as a secondary target.
Avoid placing the stop exactly on the edge of a zone. Price may briefly move beyond the boundary before reacting. The appropriate buffer depends on the symbol, timeframe, volatility and the trader’s risk plan.
Always calculate the potential risk and reward before entering a trade. A visible zone does not automatically make a setup worth taking.
🔶 Using multiple timeframes
Higher-timeframe zones can provide broader market context, while lower timeframes can help refine entries.
A simple process is:
- Identify important support and resistance on a higher timeframe.
- Determine whether the broader structure is bullish, bearish or ranging.
- Move to the preferred trading timeframe.
- Wait for price to reach a relevant zone.
- Use candle structure, volume or momentum for confirmation.
Higher timeframes generally produce fewer but more widely watched zones. Lower timeframes produce more zones and may contain more market noise.
Support and Resistance Zones help traders identify and manage important price areas with less chart clutter. Its volatility-based sizing, zone merging, break confirmation, role reversal, and alerts make it suitable for different markets and timeframes. Use the zones as areas to watch—not automatic trade signals and always combine them with price confirmation, broader market structure and proper risk management.
We would love to hear your suggestions. If you have ideas for new features, indicators, analytics, or improvements, please share your feedback. Your input helps guide future updates and improve the indicator for all traders.
Wedge pattern detector indicator is for educational and analytical purposes only. It is not financial advice. Trading involves risk. Always use proper risk management and combine this indicator with your own analysis before taking any trade.
Indicator

BB Squeeze Histogram
BB Squeeze Histogram (BBSH) — User Manual
Companion indicator to Bollinger-Bands.Multi_Choice (BBMC). Plots the width of the Bollinger envelope as a MACD-style histogram, signed by which side of the basis MA price is on.
1. What It Shows
Two things are encoded into one histogram:
Above / below the neutral line — whether price is currently above or below the basis moving average. The neutral line is 0 in raw mode, 50 in normalized mode.
Bar length from the neutral line — how wide the Bollinger envelope currently is (the distance between the upper and lower band, at your chosen standard-deviation multiple). Long bars = wide bands = high volatility. Short bars hugging the neutral line = tight bands = low volatility / squeeze.
Put together, a bar answers two questions at once: which side of trend is price on, and how stretched or compressed is the market right now.
2. Reading the Colors
Bars use a 4-color scheme, same idea as a standard MACD histogram:
Color
Meaning
Bright teal
Above neutral, band width expanding vs. the prior bar
Pale teal
Above neutral, band width contracting vs. the prior bar
Bright red
Below neutral, band width expanding vs. the prior bar
Pale red/pink
Below neutral, band width contracting vs. the prior bar
Bright bars mean volatility is actively growing on that side of the trend. Pale bars mean the move is losing steam or the range is tightening — often the first sign a squeeze is building.
3. Extra Plots on the Panel
Neutral line — gray line at 0 (raw mode) or 50 (normalized mode). Crossings mark price crossing the basis MA.
Red line (Avg Positive Column) — the running average width of only the positive (above-neutral) bars, over the "Column average lookback" period. Shows what a "normal" bullish-side expansion looks like recently. Bars poking well above this line are expanding harder than usual.
Green line (Avg Negative Column) — same idea, mirrored for the negative (below-neutral) bars.
Yellow dots on the neutral line — squeeze markers. Appear when the current band width is the tightest reading over the "Squeeze lookback" period — i.e., the bands are as compressed as they've been in a while. These tend to precede expansion moves.
4. Inputs
Input
Default
What it does
Source
ohlc4
Price series used for the basis MA and standard deviation calc
Length
20
Lookback for both the basis MA and the standard deviation
Band SD (± this value)
3.0
The standard-deviation multiple defining the band edges (matches your BBMC R3/S3 by default)
ALMA offset
0.89
Only used if MA Type = ALMA
ALMA sigma
5
Only used if MA Type = ALMA
Normalize to 0-100 scale
off
See Section 5
Normalize rank lookback
200
Bars of width history the 0-100 rank is measured against (normalized mode only)
Squeeze lookback
100
Bars used to detect the "tightest width" for the yellow squeeze dots
Column average lookback
100
Bars used to compute the red/green average-column lines
MA Type
VWMA
Basis moving average type — SMA, EMA, RMA, WMA, VWMA, VWAP, HMA, SWMA, or ALMA
5. Normalize Toggle — Important
Off (default): the histogram plots raw dollar-width — literally (upper band − lower band). Values are in the same units as price, so a reading of "8,000" on BTC/USD means the envelope is $8,000 wide. The neutral line sits at 0.
On: the histogram is rescaled to a bounded 0–100 oscillator with 50 as the neutral level. The current band width is percentile-ranked against its own history over the "Normalize rank lookback" period (default 200 bars), producing a 0–100 rank. That rank is halved to a 0–50 magnitude and then measured out from 50 — upward when price is above the basis MA, downward when below.
Reading the normalized scale:
Reading
Meaning
Near 100
Price above the basis MA, band width at the widest end of its recent history
~75
Price above basis, width around the middle of its historical range
Near 50
Squeeze — width at the tightest end of its history, regardless of side
~25
Price below basis, width around the middle of its historical range
Near 0
Price below the basis MA, band width at the widest end of its recent history
Note that the distance from 50 is the volatility read and the side of 50 is the trend read — they are independent. A reading of 52 and a reading of 48 both describe a tightly squeezed market; they just differ on which side of the MA price closed.
Because the value is a percentile rank, it is self-scaling: readings are directly comparable across assets, timeframes, and price regimes without retuning. The trade-off is that it tells you where width sits relative to its own recent history, not its absolute size — a 95 reading in a quiet chop regime may be a smaller dollar-width than a 60 reading during a volatile stretch. Shortening the rank lookback makes the oscillator more reactive to recent regime; lengthening it gives a more stable long-run reference.
Match your basis MA type/length here to your BBMC settings if you want the neutral-line crossings on this panel to line up exactly with the white basis line's color flips on your main BBMC chart.
6. Suggested Ways to Use It
Trend confirmation: treat neutral-line position the same way you'd treat price vs. the BBMC basis line — histogram above neutral supports a long bias, below neutral supports a short bias.
Squeeze setups: watch for yellow dots (tight width) followed by a color shift from pale to bright — that transition often marks the start of a breakout move out of consolidation.
Exhaustion reads: when bars run well past the red or green average line, the current expansion is unusually large relative to its own recent history — often a point where trend continuation odds start to fade and mean-reversion becomes more likely.
Divergence: if price makes a new high/low but the histogram's peak height is smaller than the prior swing's, the expansion behind the move is weaker than last time — a classic momentum-divergence tell, same logic as reading MACD histogram divergence against price.
7. Notes / Limitations
This is a volatility/width indicator, not a standalone directional signal — it's meant to be read alongside price structure or your BBMC chart, not in isolation.
The squeeze marker and average-column lines both depend on their lookback inputs; shortening them makes the indicator more reactive to recent bars, lengthening them smooths it out but reacts slower to regime changes.
Normalize should generally stay consistent once you've picked it — the raw and normalized histograms are not on comparable scales, and the red/green average lines are computed from whichever mode is active. The squeeze dots are always derived from raw band width, so they mark the same bars in either mode. Indicator

Indicator

Indicator

Indicator

XAUUSD V3.2 - H1 Trend + M15 RSI Pullback//@version=6
indicator("XAUUSD V3.2 - H1 Trend + M15 RSI Pullback", overlay=true, max_labels_count=500)
// =====================================================
// INPUTS
// =====================================================
// M15 EMA
emaFastLength = input.int(50, "M15 EMA Fast")
emaSlowLength = input.int(200, "M15 EMA Slow")
// RSI
rsiLength = input.int(14, "RSI Length")
rsiLevel = input.float(50.0, "RSI Signal Level")
// H1 filter
higherTimeframe = input.timeframe("60", "Higher Timeframe")
higherEmaLength = input.int(200, "H1 EMA Length")
// SL / TP
stopPips = input.float(20.0, "Stop Loss (pips)")
targetPips = input.float(30.0, "Take Profit (pips)")
// Price distance per pip
pipSize = input.float(0.01, "XAUUSD Price Distance Per Pip")
// Debug mode
showDebug = input.bool(false, "Show Debug Information")
// =====================================================
// M15 INDICATORS
// =====================================================
ema50 = ta.ema(close, emaFastLength)
ema200 = ta.ema(close, emaSlowLength)
rsi = ta.rsi(close, rsiLength)
// =====================================================
// H1 TREND
// LAST CONFIRMED H1 CANDLE
// =====================================================
h1Close = request.security(
syminfo.tickerid,
higherTimeframe,
close ,
lookahead=barmerge.lookahead_on)
h1Ema200 = request.security(
syminfo.tickerid,
higherTimeframe,
ta.ema(close, higherEmaLength) ,
lookahead=barmerge.lookahead_on)
// =====================================================
// H1 CONDITIONS
// =====================================================
h1Bullish = h1Close > h1Ema200
h1Bearish = h1Close < h1Ema200
// =====================================================
// M15 CONDITIONS
// =====================================================
m15Bullish = ema50 > ema200
m15Bearish = ema50 < ema200
priceAboveEMA50 = close > ema50
priceBelowEMA50 = close < ema50
// =====================================================
// PULLBACK STATE
// =====================================================
var bool buyPullback = false
var bool sellPullback = false
// =====================================================
// BUY PULLBACK
// =====================================================
// In bullish conditions, RSI touching 50 or below
// creates a BUY pullback.
if h1Bullish and m15Bullish and rsi <= rsiLevel
buyPullback := true
// =====================================================
// SELL PULLBACK
// =====================================================
// In bearish conditions, RSI touching 50 or above
// creates a SELL pullback.
if h1Bearish and m15Bearish and rsi >= rsiLevel
sellPullback := true
// =====================================================
// TREND REVERSAL RESET
// =====================================================
// If bullish trend disappears, cancel pending BUY.
if not h1Bullish or not m15Bullish
buyPullback := false
// If bearish trend disappears, cancel pending SELL.
if not h1Bearish or not m15Bearish
sellPullback := false
// =====================================================
// RSI RECOVERY
// =====================================================
rsiCrossUp = ta.crossover(rsi, rsiLevel)
rsiCrossDown = ta.crossunder(rsi, rsiLevel)
// =====================================================
// CANDLE CONFIRMATION
// =====================================================
bullishCandle = close > open
bearishCandle = close < open
// =====================================================
// BUY SIGNAL
// =====================================================
buySignal =
buyPullback and
h1Bullish and
m15Bullish and
priceAboveEMA50 and
rsiCrossUp and
bullishCandle and
barstate.isconfirmed
// =====================================================
// SELL SIGNAL
// =====================================================
sellSignal =
sellPullback and
h1Bearish and
m15Bearish and
priceBelowEMA50 and
rsiCrossDown and
bearishCandle and
barstate.isconfirmed
// =====================================================
// RESET AFTER SIGNAL
// =====================================================
if buySignal
buyPullback := false
if sellSignal
sellPullback := false
// =====================================================
// EMA PLOTS
// =====================================================
plot(
ema50,
title="M15 EMA 50",
color=color.blue,
linewidth=2)
plot(
ema200,
title="M15 EMA 200",
color=color.orange,
linewidth=2)
// =====================================================
// SL / TP CALCULATIONS
// =====================================================
buyEntry = close
buySL = buyEntry - stopPips * pipSize
buyTP = buyEntry + targetPips * pipSize
sellEntry = close
sellSL = sellEntry + stopPips * pipSize
sellTP = sellEntry - targetPips * pipSize
// =====================================================
// BUY LABEL
// =====================================================
if buySignal
label.new(
bar_index,
low,
"BUY " +
"Entry: " + str.tostring(buyEntry, format.mintick) +
" SL: " + str.tostring(buySL, format.mintick) +
" TP: " + str.tostring(buyTP, format.mintick),
style=label.style_label_up,
color=color.green,
textcolor=color.white,
size=size.small)
// =====================================================
// SELL LABEL
// =====================================================
if sellSignal
label.new(
bar_index,
high,
"SELL " +
"Entry: " + str.tostring(sellEntry, format.mintick) +
" SL: " + str.tostring(sellSL, format.mintick) +
" TP: " + str.tostring(sellTP, format.mintick),
style=label.style_label_down,
color=color.red,
textcolor=color.white,
size=size.small)
// =====================================================
// SIGNAL MARKERS
// =====================================================
plotshape(
buySignal,
title="BUY Marker",
style=shape.triangleup,
location=location.belowbar,
color=color.green,
size=size.small)
plotshape(
sellSignal,
title="SELL Marker",
style=shape.triangledown,
location=location.abovebar,
color=color.red,
size=size.small)
// =====================================================
// ALERTS
// =====================================================
alertcondition(
buySignal,
title="XAUUSD BUY V3.2",
message="XAUUSD BUY V3.2: H1 bullish + M15 bullish + RSI pullback + RSI recovery.")
alertcondition(
sellSignal,
title="XAUUSD SELL V3.2",
message="XAUUSD SELL V3.2: H1 bearish + M15 bearish + RSI pullback + RSI recovery.")
// =====================================================
// DEBUG INFORMATION
// =====================================================
var table debugTable = table.new(
position.top_right,
2,
8,
border_width=1)
if barstate.islast and showDebug
table.cell(debugTable, 0, 0, "Condition")
table.cell(debugTable, 1, 0, "Status")
table.cell(debugTable, 0, 1, "H1 Bullish")
table.cell(debugTable, 1, 1, h1Bullish ? "YES" : "NO")
table.cell(debugTable, 0, 2, "H1 Bearish")
table.cell(debugTable, 1, 2, h1Bearish ? "YES" : "NO")
table.cell(debugTable, 0, 3, "M15 Bullish")
table.cell(debugTable, 1, 3, m15Bullish ? "YES" : "NO")
table.cell(debugTable, 0, 4, "M15 Bearish")
table.cell(debugTable, 1, 4, m15Bearish ? "YES" : "NO")
table.cell(debugTable, 0, 5, "BUY Pullback")
table.cell(debugTable, 1, 5, buyPullback ? "READY" : "WAIT")
table.cell(debugTable, 0, 6, "SELL Pullback")
table.cell(debugTable, 1, 6, sellPullback ? "READY" : "WAIT")
table.cell(debugTable, 0, 7, "RSI")
table.cell(debugTable, 1, 7, str.tostring(rsi, "#.##")) Indicator

TDVW Liquidity PulseTDVW Liquidity Pulse — Composite Momentum and Volatility Scanner
A single-score liquidity indicator that combines four established technical concepts into one 0-100 reading, built for spotting momentum shifts on any timeframe.
Relative Volume: current volume vs its recent average
VWAP Deviation: how far price has stretched from session VWAP
Volume Acceleration: short-term vs long-term volume trend, catching momentum before it peaks
Volatility Squeeze: Bollinger Bands compressing inside Keltner Channels, then releasing with volume confirmation
When all four align, the background highlights and a Setup Zone marker appears with ATR-based reference levels: stop-loss, Target 1, and Target 2, useful for structuring risk on a potential move.
How to read it:
Green background means a strong composite reading of 75 or above.
Yellow background means a moderate reading between 50 and 74.
A triangle marks a volatility squeeze breakout.
The SETUP label appears when all conditions align simultaneously.
Every component is fully adjustable in settings: RelVol window, VWAP threshold, squeeze length, and ATR multipliers, to fit different timeframes and instruments.
Disclaimer: This is an educational and informational tool, not a trading signal or financial advice. The Setup Zone and levels shown are calculated reference points based on historical volatility and do not predict future price movement or guarantee any outcome. Always do your own research and manage risk according to your own trading plan. Indicator

Indicator

SMC Liquidity Sweep Swing High/Low [JPT]🔷 OVERVIEW
Liquidity Sweep Reversal Engine is a price-action indicator designed to identify potential reversal setups after price sweeps confirmed swing highs or swing lows and rejects the liquidity level.
The indicator combines swing structure, liquidity sweep detection, rejection candles, trend confirmation, displacement, and optional volume analysis to filter potential LONG and SHORT setups.
After a confirmed signal, the indicator automatically provides a trade plan with:
• Entry level
• Stop Loss
• TP1 / TP2 / TP3
• Risk-Reward levels
• Signal score
🔷 CONCEPTS
Liquidity Sweep Detection
The indicator tracks confirmed swing highs and lows as potential liquidity areas.
• Buy-side liquidity sweep → price takes a previous swing high and rejects below it → SHORT bias.
• Sell-side liquidity sweep → price takes a previous swing low and rejects above it → LONG bias.
Rejection Confirmation
A sweep can be filtered using:
• Close back through the liquidity level
• Rejection wick
• Minimum wick percentage
• Candle direction
Trend Confirmation
An optional EMA filter helps align signals with the current market direction.
Displacement
The indicator can require a minimum candle-body size relative to ATR to help filter weak price movements.
Volume Filter
Optional relative-volume confirmation can be enabled to identify sweeps occurring with increased market participation.
🔷 FEATURES
1. Swing Liquidity Detection
• Automatic swing high/low detection
• Buy-side and sell-side liquidity levels
2. Liquidity Sweeps
• High sweep detection
• Low sweep detection
• Rejection confirmation
3. Signal Filtering
• EMA trend filter
• Displacement filter
• Optional volume filter
• Signal score from 1–5
4. Trade Management
• Automatic Entry
• ATR-based Stop Loss
• TP1 / TP2 / TP3
• Custom Risk-Reward ratios
5. Visuals
• Liquidity lines
• Swing labels
• LONG / SHORT labels
• Entry / SL / TP levels
6. Alerts
• LONG signal
• SHORT signal
• TP1 / TP2 / TP3
• Stop Loss
🔷 APPLICATIONS
1. Liquidity Sweep Reversals
Identify potential reversal opportunities after price takes liquidity above a swing high or below a swing low.
2. Market Structure Mapping
Use confirmed swing levels to visualize important liquidity areas and potential reaction zones.
3. Signal Filtering
The optional trend, displacement, volume, and score filters can help reduce weaker setups.
4. Trade Planning
The built-in Entry, Stop Loss, and multiple Take Profit levels provide a structured framework for evaluating trades.
🔷 NOTES
• Lower pivot settings generate more signals and may produce more noise.
• Higher pivot settings identify larger structural liquidity levels.
• Liquidity sweeps do not guarantee reversals.
• Signal confirmation occurs on the closed candle.
• Always evaluate signals within the broader market structure and apply appropriate risk management. Indicator

Multi-Period VWAP (7D / 30D / 90D)This indicator plots three rolling Volume-Weighted Average Price (VWAP) lines calculated over trailing 7-day, 30-day, and 90-day windows, giving you a read on where price sits relative to volume-weighted "fair value" across short, medium, and long-term horizons.
Unlike a standard anchored VWAP that resets to zero at a fixed point (session, week, month), these lines are true rolling averages — they continuously reflect the most recent N days of trading and shift smoothly bar to bar, making them useful for spotting mean-reversion zones, confluence with order blocks/key levels, and gauging trend strength when the shorter VWAP is stacked above or below the longer ones.
Features:
- Adjustable lookback lengths for all three periods (defaults: 7 / 30 / 90 days)
- Toggle each VWAP on/off independently
- Customizable colors per line
- Choice of price source (HLC3, Close, or OHLC4)
- Optional "confirmed bars only" mode to prevent the lines from repainting as the current day's volume accumulates
- Live value labels on the last bar for each active VWAP
Built with crypto's 24/7 markets in mind, so the daily boundaries used for the rolling calculation aren't disrupted by traditional session gaps. Indicator

Supply & Demand Zones - Zone Forge [AFD]
Two zones on your chart. One came from a four-bar coil that price left in a single decisive candle. The other took twenty bars to go nowhere and slid out the bottom. Your indicator drew them identically.
That difference is measurable at the moment each zone forms - how tight the base was, how hard price left it - and it is measurable from the same two numbers the tool already had to compute in order to find the zone at all. Almost every zone tool computes them on the way past and throws them away.
Zone Forge keeps them. Every zone is scored on how it was constructed, and the score is painted rather than printed: a well-built zone carries more glow and deeper fill, a marginal one recedes into the background. No letter, no number, nothing to decode. The chart sorts itself.
Why it matters
A supply or demand zone is a fussy construction pretending to be a simple one. It needs a short, tight cluster of bars - the base - that price then left decisively in one direction. Both halves are measurable, and the ratio between them separates a coil that broke from a range that drifted. This describes how an area formed, and says nothing about what price does next.
At a glance
Four patterns, each switchable - rally-base-drop and drop-base-drop become supply; drop-base-rally and rally-base-rally become demand. Turn off the ones you do not trade.
A grade on every zone - built from two ratios the engine already computes, tiered Strong, Standard and Weak, and shown as vividness rather than as a label.
A one-way lifecycle - Fresh, Tested, Broken. A broken zone never returns to fresh, and a tested zone steps further back with each additional test.
Detection in one click - Scalp, Intraday or Swing set base length, tightness and departure strength together. Custom exposes all three.
Measured against your chart's own volatility - base height and departure distance are both in ATR(14) units, so one setting means the same thing on a $4 stock and a $400 one.
Nine colour themes - Signature, Neon, Muted, Mono, Terminal, Midnight, Ocean, Ember, and Paper for light charts, plus Custom. Three appearance presets over the top - Signature, Clean and Minimal - plus a Custom that leaves every control acting on its own.
Four alert conditions - new demand zone, new supply zone, zone tested, zone broken, as four separate entries in the alert dialog rather than one.
Three Data Window values for screening - distance to the nearest demand zone, distance to the nearest supply zone, and whether price is inside one.
How a zone is built
A base is a run of bars whose whole height fits inside Base tightness x ATR(14). A departure is a bar that CLOSES beyond that base by at least Departure strength x ATR(14) - the close, never the high or the low, so a spike that closes back inside draws nothing.
Both halves must be complete. A zone is created from a finished base and a finished departure, and appears on the bar that closes the departure, not before.
Two rules that change what you see:
A tight run LONGER than Base max length is rejected as a range. It is not trimmed to its last few bars and admitted anyway.
The departure is measured against the PREVIOUS bar's ATR, so the departure bar's own range cannot inflate the threshold it has to clear.
The grade, stated plainly
grade score = (departure distance / required distance) / max(base height / height limit, 0.50)
A zone that cleared the departure requirement by 3x off a base using half its allowed height scores well above one that cleared it by 1.1x off a base that used all of it. Only just qualifying on both counts scores 1.0x.
Weak, Standard and Strong are fixed thresholds on that score, and the tier is decided on the bar that creates the zone.
The score is computed once and is never recomputed. A zone already on your chart does not restyle itself later.
Grade emphasis sets how far apart the three tiers LOOK, from nearly identical to a wide visual split. It changes appearance only, never which tier a zone is in.
The tiers describe construction. They are not a ranking of what is likely to happen at a zone, and no tier is presented as the one to trade.
The lifecycle
Fresh - price has not come back yet. Brightest.
Tested - price traded into the zone and it held. The fill and glow step back, and each further test steps them back again up to a fixed limit, so an area that has been worked repeatedly recedes on its own rather than vanishing.
Broken - price closed through it. Hidden by default, because showing them roughly triples what is on the chart.
You choose what counts as each. Break rule is close-through or wick-through; Test rule is wick-touch or close-inside. Break beats test on the same bar, and the lifecycle only ever runs one way - a broken zone never becomes fresh again.
Flip broken zones, off by default, draws a fresh zone of the OPPOSITE type at the same levels when a zone breaks. The broken zone stays broken - this creates a new zone rather than reversing an old one, so nothing already on your chart changes what it claims to be. One generation only.
How it differs from a standard zone tool
The grade is a consequence of the construction, not a bolt-on - a swing-pivot band inflated by a fixed ATR width has no tightness to measure, and a fair-value gap has no base at all. Only something that finds a consolidation and THEN measures the move away from it has the two numbers to divide.
Strength is the visual language - the ranking is carried by glow and fill depth, so the chart is read at a glance instead of decoded. No letter appears on the box unless you ask for one.
The chart is kept bounded on purpose - a cap per side, a maximum age, broken zones hidden, and an overlap rule that will not admit a new zone sitting on top of a live one.
A theme system, not a colour picker - nine curated palettes, one of them built for a light chart, and three appearance presets over the top.
Nothing about the grade is hidden - the score is one division, the two thresholds it divides are the same ones detection already applied, and every constant is a named value in source you can read. A trust signal, not the pitch: what you are here for is the zones.
The visuals
Layered glow, not a flat rectangle - concentric halo boxes off a single Glow intensity control, with a floor so no layer is ever invisible. Glow spread sets how far the halo reaches.
Fill, border and edges are independent - each carries its own colour, width and style, and each can be switched off. Border off leaves the fill and the glow; fill off leaves an outline.
Emphasise nearest zone - thickens the border of the zone closest to price on each side.
50% line - the midpoint mitigation level, off by default, with its own colour and style.
Labels - Type, Type + age, Type + grade, Type + touches or Age; four positions, four sizes, a bar offset; worded Supply/Demand, the full pattern name or the trade shorthand. Every label carries a hover breakdown: pattern, span, state, age and grade.
Zone count table - a small optional panel counting what is on the chart.
Master opacity - fades every colour together in one control, without touching any individual setting.
Alerts
New demand zone
New supply zone
Zone tested
Zone broken
Create these from PulseWire's alert dialog. How often an alert re-fires while its condition holds is set in that dialog, not in the script. A running alert keeps the inputs, symbol and timeframe it was created with - recreate it after changing any of them.
How to use it
Pick a detection style first - Scalp, Intraday or Swing. It is the only setting that changes WHAT gets found; everything else changes how what was found looks.
Works best on a 5-minute chart or lower - a zone needs a completed base and a completed departure to print, and that pattern completes far more often per session on a fast chart than a slow one, so a 5-minute-or-lower timeframe gives you more zones to read.
Read the fresh zones first - they are the brightest, and they are the areas price has not returned to.
Read the grade as build quality - a Strong zone came from a tight base and a decisive departure, a Weak one only just cleared both tests. Both are drawn, because knowing which is which is the point.
Watch a zone dim - each test steps it further back. A zone tested three times looks like what it is.
Set the look once - Preset gives you the vivid default, a clean one and a minimal one in a click, or Custom to set everything yourself; Colour theme gives nine palettes; Master opacity fades the lot. Then leave it alone.
Hover anything unclear - all 63 inputs carry a tooltip, and every zone label carries a breakdown.
What it deliberately does not do
It reads the open, high, low, close and volume of the chart you have open, and nothing else. There are no request.security() calls, no other symbol, no higher-timeframe import, and no options or order-book data of any kind.
So it does not know about order flow, dealer positioning, or where anyone's orders actually are. Supply and demand here name where a price move ORIGINATED. They do not name a measured book, and the words that would imply otherwise are kept out of every string this script ships.
It draws no entries, exits, targets or arrows, and makes no accuracy, reliability, profitability, probability or future-result claim of any kind. The grade describes an area built from bars that have already printed: a construction score establishes neither future direction nor the quality of any trade. Educational chart context only - not financial advice.
Data, timeframes and what to check yourself
Zones are created from confirmed bars only - a completed base and a completed departure. Once created, a zone's geometry does not move: its top, bottom and left edge are fixed, and only its lifecycle state changes, one way, on closed bars. Confirm it with the bar-replay tool on your own symbol and timeframe before relying on it - a description of mechanism is not that check, and nothing here claims to be.
The three Data Window values read the live close - the two distances and the inside-zone flag. They create, test, break and prune nothing.
The zone count is bounded by Pine's drawing limits - the source declares budgets of 500 boxes, 500 lines and 100 labels, and every glow layer, edge line and label spends from them. Max zones per side and Max zone age are the controls that keep you inside.
Standard time-based candles - on Heikin Ashi, Renko or Range the engine measures those synthetic values rather than traded prices, so the bases it finds are not the bases on your price chart.
Base tightness is not a strictness dial - the zone count peaks in the middle of its range and falls away at both ends, which is why the range stops where it does. Loosening it past the peak draws FEWER zones, not more.
Detection needs history - ATR(14) must exist before anything can be measured against it, so the opening bars of a chart produce nothing.
Originality and credit
Supply and demand zones are old ground. What is new is that the construction is measured, and the measurement is what you see: base tightness and departure distance resolved into one score, that score frozen on the bar that creates the zone, and the ranking expressed as glow and fill depth rather than as a label to decode.
Open source under the Mozilla Public License 2.0. (c) Auction Foundry.
Indicator

Fusstrade zones Zones is a multi-market PulseWire indicator that displays manually defined supply, demand, and gap zones for stocks, ETFs, indices, futures, commodities, and major technology symbols. It also includes key market levels such as previous highs/lows, weekly and monthly opens, VWAP, EMA cloud, and TRAMA for additional trend and price-action analysis. Indicator

Indicator

KF_AIKF-AI™ is a deterministic Pine Script v6 library providing a constitutional foundation for AI-oriented services.
The library is organized into ten modules covering identity, constants, enumerations, runtime contracts, utility functions, manifest governance, AI standards, health monitoring, diagnostics, and operational summaries.
KF-AI™ currently provides deterministic contracts, validation, state management, utilities, health classification, diagnostics, and summary services. It does not perform machine-learning inference, prediction, scoring, automated trading, or trade execution.
The architecture is designed as a reusable foundation for future AI-oriented Pine Script services while maintaining explicit separation between identity, runtime contracts, governance, health, diagnostics, and summary layers.
Version: 1.0.0
Build: 0001
Modules: AI-0001 through AI-0010
Constitution: Constitution v1.0 Library

Indicator

Indicator
