MSL Crypto BreadthWHAT IT DOES
Your chart shows one coin at a time. This indicator watches a basket of 20 coins at once and answers the question a single chart cannot: out of those 20, how many are actually taking part in the move you are looking at right now.
That answer changes what the same candle means. If Bitcoin gains five percent and 17 of the 20 coins gain with it, the whole market is moving and the move has something under it. If Bitcoin gains the same five percent while only 3 coins follow, one name is carrying everything and the rest of the market has already turned away. On a price chart those two days look identical. Here they do not, and that difference is the entire product.
Two lines do the work. The first is participation: how many coins of the basket are trading above their own moving average, drawn as a percentage from 0 to 100. Fifty means half the market is holding up, ten means almost nothing is. The second is pressure: on every bar it counts how many coins closed up against how many closed down and adds that difference up over time, so it reacts far sooner than the first line, often weeks sooner.
The indicator then watches Bitcoin and participation together. While they move the same way, nothing is drawn. When they split and go opposite ways, the stretch of time between them is shaded red or green and stays shaded until they come back together. Red means price is being pulled up while fewer and fewer coins follow it. Green means price is falling while more and more coins are quietly recovering underneath it.
One example from the daily chart of Bitcoin: the reference gained 2.5 percent across the comparison window while participation fell 15 points, which is two coins out of twenty losing their average. Both numbers are printed in the table on the chart, so every shaded stretch states its own reason instead of leaving you to guess it.
None of this tells you where to buy. It tells you whether the trade your own system just found deserves full size, half size, or nothing at all.
HOW TO USE IT
Participation above 50 and rising
Means: the market is broad, most of the basket holds its average.
Do: take your signals at full size. The only state where adding makes sense.
Participation between 30 and 50
Means: the move is carried by a few names.
Do: half size, closer targets.
Participation below 30
Means: breakouts in the basket mostly fail.
Do: stand aside, or trade the reference symbol alone.
Participation above 80
Means: everybody is already in, advances are crowded.
Do: not a place to open. Reduce and tighten the stop.
A red band opens
Means: the reference is being carried while participation leaks away.
Do: stop adding, protect what is open. A warning, not an exit, and it can run for weeks.
A green band opens while participation is below 20
Means: the reference is falling while more members repair underneath it.
Do: prepare, do not enter yet. This stage can last weeks.
Participation then crosses 50 upward
Means: the repair is confirmed by the state, not only by pressure.
Do: the entry window of the reversal sequence. Late by design, verified by design.
A band closes
Means: the pair moved the same way again, the disagreement is resolved.
Do: the warning is lifted.
Participation crosses 50 downward
Means: most of the basket has lost its average.
Do: the last and bluntest exit reason.
Five alerts cover this without watching the screen: participation crossing above and below half, the two divergence conditions, and the bar an open disagreement closes.
A WORKED EXAMPLE, THE DAY THIS WAS PUBLISHED
In the middle of May a green stretch opened on the daily chart of Bitcoin. The reference had lost 4.4 percent across the comparison window while participation rose 10 points against it, which is two coins out of twenty regaining their average while price was falling. Both numbers sit in the Event Gap row of the table.
Price then kept sliding into June and spent the next two months going sideways near its lows. The shading stayed on the entire time, because the two measurements never pointed the same way again. That is the length doing its job: this was not a three bar flicker, it was a repair that took a quarter to play out underneath a price chart that looked dead.
On the day of this publication the stretch ended. Bitcoin closed 4.7 percent higher and participation rose with it, so the pair agreed again, the band closed on that bar and the table switched to closed.
Now read the states above against this exact picture. Participation is 45 percent, nine coins of twenty above their average. That is the half size row, not the full size one. The reversal sequence has completed two of its three steps, the washed out low and the repair, and the third one, participation crossing 50 from below, has not happened yet.
That is the entire use of the tool in one screen. It does not say what the next bar does. It says the move that just printed a large green candle is still not broad, and it says so with a count anyone can check.
A bearish disagreement on the daily chart of Bitcoin, October 2025. Price makes its high while the share of the basket above its own average falls away underneath it.
THE TWO LINES
Participation is a state. It moves only when a member crosses its average, which is a large event, so the line is slow and honest.
Pressure reacts on every bar and needs no threshold, so it turns while participation is still standing still. It counts members, not money: a coin up a tenth of a percent and a coin up twelve percent cast one vote each. There is no volume in it and no order flow. That is a limitation worth stating plainly, and it is also why one large member cannot distort it.
The gap between them is the point. Participation on the floor while pressure climbs is a market being bought before it looks bought. Participation high while pressure rolls over is a rally already finished. Neither statement can be made from one line.
THE DIVERGENCE
One window, two measurements, no pivots. The reference symbol, Bitcoin by default, must travel at least the configured percentage across the window while participation moves the other way by at least the configured number of points.
The event is measured on participation alone. The pressure line takes no part in it: hide it and not one band, glyph or alert changes. Participation sits on a fixed scale where ten points has a stated meaning, two members out of twenty changing sides, while pressure is normalised against its own recent range, where ten points would mean nothing statable. Thresholds that cannot be explained in plain language have no business triggering anything. Read together, a band with pressure agreeing is a warning confirmed twice, a band against it is the narrow kind that more often dissolves.
A disagreement is a stretch, not a moment. A vertical line marks the bar it opened and a band runs until the pair comes back together, which happens when both measurements point the same way again. The length is the part worth reading: one that closes after three bars was noise, one that holds for two months is the story of that market.
Agreement produces nothing at all. Both sides moving up together, or both down, is what a healthy market looks like, and it is exactly what closes an open band. A move too small to clear either threshold does nothing either, so an open band is never cancelled by noise.
Nothing is drawn against a candle and nothing sits at a price level. A shape placed on a bar is read as an entry whatever the description says, and this indicator produces no entries.
READING THE PANE
Horizontal is a level and is drawn in neutral grey: dotted lines at 80 and 20, dashed at the halfway mark, soft shading in the two extreme regions. Vertical is an event in time and owns the colour, so a coloured column always means the same thing.
HOW IT IS BUILT
Each member is requested on the selected timeframe with lookahead disabled, and its moving average is computed inside its own context, on its own data. Both readings a member contributes come back as one tuple, so the basket costs one request per symbol rather than two.
Three details decide whether a breadth reading is honest or decorative. A member that has not returned data contributes nothing: it leaves both sides of the division rather than being counted as a coin below its average, because counting silence as weakness is the usual way these readings drift toward zero for reasons unrelated to the market. No share is published at all until a minimum number of members have answered, since a percentage built on three coins is noise wearing the clothes of a statistic. And the cumulative count is detrended before it is drawn, because stretching a raw cumulative line between the extremes of a window pins it against one edge and flattens the recent swing into a thread.
THE SETTINGS
Core. Basket Timeframe, empty follows the chart and higher keeps a slow reading on a fast chart. MA Length, 200 for a long term reading and 50 for a swing one. MA Type across SMA, EMA, WMA and RMA. Coins Counted, how many of the twenty slots take part. Minimum Live Feeds, the smallest sample that may be published at all.
Basket. Twenty symbol slots. Any symbol your plan can open works and the basket does not have to be crypto, so the same engine measures a sector, an index or a watchlist.
Divergence. Reference Symbol, Comparison Window, Reference Move percent and Breadth Gap Points, the two thresholds that define an event.
Visuals. The second line and its swing window; how events are drawn, as line and band, band only, line only or glyph only; the arrow on the edge; on chart explanations and how many are kept; whether events show in the pane, on the chart or both; four colours.
Dashboard. Table on or off, its corner out of eight, and the text size.
THE TABLE, ROW BY ROW
Above MA. The share, with the regime named: broad, healthy, narrow or washed out. Reads warming up while the sample is too small.
Coins. How many members are above their average out of how many actually answered.
Advancing. Up against down on the last bar, the input to the cumulative line.
Cum A/D. The untouched cumulative count, since the plotted line is normalised and says nothing about level.
Reference. What the reference symbol did on the last bar.
Divergence. Direction of the last event, how many bars ago, and whether it is still open.
Event Gap. The two measurements that produced it, for example ref plus 2.5 percent against breadth minus 15 points.
Feeds. How many slots answered and on what timeframe. Turns red when a slot is silent.
The same engine on Ethereum, four hours. The basket does not change with the chart, so the reading is about the market rather than the instrument in front of you.
TIMEFRAMES AND LIMITS
H1 and above. On H1 the lines work but divergences almost never fire, because a genuine disagreement between a whole basket and Bitcoin inside a day is rare. Divergence is a 4h and daily tool.
Members are read through the chart, so their history begins where the chart history begins. A 200 length average needs 200 chart bars before the first reading exists; scroll left to load more or shorten the length.
TradingView allows 40 unique data requests per script and 127 tuple elements. This script spends 21 requests and 42 elements. All 20 slots are requested whatever the counted number is, because requests are fixed at compile time, so lowering it changes the statistic and not the load.
WHAT IT IS NOT
Breadth describes the crowd, not the next bar. A thin market can stay thin for weeks while price grinds higher on two names, and a disagreement can run far longer than a position survives. Low participation is not a reason to short on its own.
Advance decline counting and participation measures are classic market internals from the stock market and belong to nobody. The implementation here is original: the per member context calculation, the exclusion rules, the minimum sample gate, the detrended cumulative and the paired open and close events are what the code actually is. Nothing was reused from another script.
Gösterge

OBV Attention Consensus Ribbon [FibonacciFlux]An experiment in reading On-Balance Volume across four timeframes at once. Published with what the measurement actually found, including the part that says the previous default could not work.
WHAT IT DOES
Inside each of four timeframes (15m, 1H, 4H, 1D by default) it builds OBV, takes the per-bar slope as the difference of two linear regressions, and standardizes that slope by the rolling standard deviation of OBV over the same timeframe. The result is a z sensor per timeframe. OBV is cumulative, so its level depends on where the chart's history begins - the slope difference and the standard deviation are both invariant to that origin, which is what makes the four timeframes comparable at all.
The white line is the weighted mean of the four z sensors. The ribbon is the weighted dispersion around that mean, so it narrows when the timeframes agree and widens when they do not. Its colour is a geometric mean of three terms: concentration (how tight the dispersion is), side agreement (how much weight sits on one sign), and acceleration agreement (how much weight is moving further in that direction). An audit table prints every sensor's z, its one-bar change, its weight, the consensus, the dispersion, the concentration, both strengths and the current state.
WHAT THE MEASUREMENT FOUND
Two things, both on 6,000 bars of BINANCE:BTCUSDT 15m (5,949 bars after warm-up, 2026-06-17 01:15Z to 2026-08-18 13:00Z), repeated identically on ETHUSDT.
First: the previous default threshold could never be reached. The strength is a geometric mean of three fractions, and the acceleration term keeps it small. Measured over the whole window, the strength peaks at 34.5 on BTCUSDT and 36.0 on ETHUSDT, with a median of 20.1 and a 99th percentile of 31.0. The shipped threshold was 60. So the coloured ribbon never appeared on a single bar, both alerts fired zero times, and the branch that paints the ribbon was unreachable code. That is a calibration error, not a conservative setting, and it is fixed here: the default is now 30, where the coloured state covers 137 of 5,949 bars on BTCUSDT and 173 of 5,949 on ETHUSDT - roughly one bar in forty.
Second: the whole scale is far smaller than the script's own furniture suggested. The consensus never leaves ±0.141 and the dispersion never exceeds 0.132, while the sensor clips at ±3 and the pane drew guide lines at ±1.5. The clip has never once bound. The guides are now at ±0.10, just above the 99th percentile of |consensus| (0.114 on BTCUSDT, 0.116 on ETHUSDT), so they mark something the series actually reaches.
Neither of those is a claim about returns. There is none here: no forward-return figure, no hit rate, no edge. What the indicator offers is a picture of whether four OBV slopes are pointing the same way and how tightly, and the honest reading of the numbers above is that the picture is a low-amplitude one.
HOW THE NUMBERS WERE CHECKED
The whole computation was reimplemented outside Pine and cross-checked against this chart's Data Window: eight quantities on ten bars, with the individual sensors switched on so nothing was left as na. All 80 values round-trip to the exact three decimals TradingView printed. The worst raw disagreement is 4.9e-4, which is the rounding floor of indicator(precision = 3) rather than a modelling error.
That check discriminates. Near-miss variants a careless port would land on fail loudly against the same 80 values: reading the higher timeframes in developing rather than confirmed mode misses 79 of 80, a slope length of 21 instead of 20 misses 73 of 80, and a flipped regression orientation is off by two orders of magnitude more than the tolerance.
SETTINGS
The HTF data mode is the one that changes the meaning rather than the tuning. Confirmed only reads the last closed bar of each requested timeframe, which is why the higher-timeframe sensors are step functions that hold their value across the chart bars inside one higher-timeframe bar. Developing HTF reacts earlier and changes until that bar closes.
The four attention weights are normalized onto a simplex, so only their ratios matter, and an all-zero entry falls back to 0.10 / 0.20 / 0.40 / 0.30.
WHAT CHANGED IN THIS VERSION
The threshold and the guide lines were recalibrated against the measured output range, as described above. The audit table that the settings already promised did not exist in the code - the helper functions for it were written and left unused - and it is now implemented. An MPL header and a leftover compile sentinel plot were added and removed respectively. No computation was changed: every plotted series is identical to the version the 80-value cross-check was run against, which is why the figures above still apply.
Open source under MPL 2.0. Nothing here is a forecast, a signal service, or a claim of profitability. Gösterge

Triple RSI Stochastic Hybrid MTF Smooth# Triple RSI + Stochastic Hybrid MTF — Smooth
## Overview
Triple RSI + Stochastic Hybrid MTF — Smooth is a multi-timeframe momentum oscillator designed to combine RSI and Stochastic information into a single adaptive Hybrid line.
The indicator displays up to three independent Hybrid oscillators:
* Hybrid 1 — Chart timeframe
* Hybrid 2 — Higher timeframe x5
* Hybrid 3 — Higher timeframe x15
Each Hybrid combines RSI and Stochastic momentum into one normalized 0–100 oscillator. Each Hybrid has its own independently configurable RSI length, Stochastic length, %K smoothing, RSI weighting, signal length, signal smoothing, signal method, timeframe, and MTF smoothing settings.
The goal is to make short-term momentum and higher-timeframe momentum visible in the same oscillator pane.
---
## What Does the Indicator Show?
The indicator displays three possible Hybrid momentum lines.
### Hybrid 1 — Chart Timeframe
Hybrid 1 is calculated on the selected chart timeframe.
It combines:
* RSI
* Stochastic price position
* Stochastic %K smoothing
* Adjustable RSI/Stochastic weighting
The default configuration is:
* RSI Length: 9
* Stochastic Length: 9
* %K Smoothing: 3
* RSI Weight: 50%
This means the Hybrid is initially composed of approximately 50% RSI and 50% Stochastic information.
The timeframe can be set independently through the Hybrid 1 timeframe input.
---
### Hybrid 2 — Higher Timeframe
Hybrid 2 retrieves the Hybrid calculation from a selectable higher timeframe using TradingView's `request.security()` mechanism.
The default timeframe is 5 minutes.
The resulting higher-timeframe Hybrid is then smoothed using the configurable MTF smoothing settings.
Default:
* Timeframe: 5 minutes
* RSI Length: 9
* Stochastic Length: 9
* %K Smoothing: 3
* RSI Weight: 50%
* MTF Smooth: 5
* MTF Smooth Method: EMA
This provides a higher-timeframe momentum reference without requiring a separate oscillator pane.
---
### Hybrid 3 — Higher Timeframe
Hybrid 3 works in the same way as Hybrid 2 but uses a higher timeframe.
The default timeframe is 15 minutes.
Default:
* Timeframe: 15 minutes
* RSI Length: 9
* Stochastic Length: 9
* %K Smoothing: 3
* RSI Weight: 50%
* MTF Smooth: 8
* MTF Smooth Method: EMA
Hybrid 3 is intended to provide a slower and broader momentum reference.
---
# How the Hybrid Is Calculated
The Hybrid is not a simple RSI and not a standard Stochastic.
First, an RSI value is calculated:
RSI = Relative Strength Index of the selected source.
A Stochastic component is then calculated from the selected source relative to the highest high and lowest low over the selected Stochastic length.
The Stochastic component is smoothed using the selected %K smoothing length.
The final Hybrid value is a weighted combination of the two:
Hybrid = RSI × RSI Weight + Stochastic × (1 − RSI Weight)
The RSI Weight input determines the balance between the two components.
For example:
* 100% RSI = RSI-dominant Hybrid
* 75% RSI = mostly RSI
* 50% RSI = balanced RSI/Stochastic Hybrid
* 25% RSI = mostly Stochastic
* 0% RSI = Stochastic-dominant Hybrid
This allows the oscillator to be adapted from a more RSI-oriented momentum tool to a more Stochastic-oriented momentum tool.
---
# Signal Lines
Each Hybrid has its own Signal line.
The Signal line is calculated from the corresponding Hybrid and can use:
* EMA
* SMA
* WMA
* RMA
Signal length and additional Signal smoothing can be adjusted independently for each Hybrid.
The Signal line acts as a momentum reference for the corresponding Hybrid.
A faster Signal setting produces more responsive crosses.
A slower Signal setting produces fewer but generally smoother crossings.
---
# Cross Dots
The colored dots identify crossings between a Hybrid line and its corresponding Signal line.
### Green / Bullish Dot
A bullish dot appears when the Hybrid moves from below or equal to the Signal line to above it.
This indicates that momentum has crossed upward relative to its Signal line.
### Red / Bearish Dot
A bearish dot appears when the Hybrid moves from above or equal to the Signal line to below it.
This indicates that momentum has crossed downward relative to its Signal line.
The cross detection is based directly on the difference between the Hybrid and Signal series:
Hybrid − Signal
A bullish cross occurs when this difference changes from zero/negative to positive.
A bearish cross occurs when the difference changes from zero/positive to negative.
The dots therefore respond directly to the current Hybrid and Signal settings.
---
# Momentum Levels
The oscillator uses a normalized 0–100 scale.
The default levels are:
* 0 — Extreme lower boundary
* 10 — Lower reference
* 30 — Oversold reference
* 50 — Midline / neutral reference
* 70 — Overbought reference
* 90 — Upper reference
* 100 — Extreme upper boundary
All levels are independently adjustable.
The 50 level can be used as the primary momentum balance line.
Above 50 generally means that the Hybrid is showing positive momentum.
Below 50 generally means that the Hybrid is showing negative momentum.
The 30 and 70 levels can be used as traditional oversold/overbought references.
The 10 and 90 levels provide additional extreme-zone information.
---
# How to Read the Three Hybrids Together
The main purpose of the three Hybrid lines is to compare momentum across different timeframes.
A simple interpretation is:
### Bullish Momentum Alignment
When:
* Hybrid 1 is above its Signal
* Hybrid 2 is above its Signal
* Hybrid 3 is above its Signal
momentum is aligned positively across the three selected timeframes.
This can be used as confirmation for long setups.
### Bearish Momentum Alignment
When:
* Hybrid 1 is below its Signal
* Hybrid 2 is below its Signal
* Hybrid 3 is below its Signal
momentum is aligned negatively across the three selected timeframes.
This can be used as confirmation for short setups.
### Pullback Environment
A common use is to wait for the higher-timeframe Hybrids to maintain their direction while the lower-timeframe Hybrid temporarily moves against them.
For example:
Higher timeframes remain bullish:
* Hybrid 3 > Signal 3
* Hybrid 2 > Signal 2
while Hybrid 1 temporarily falls below Signal 1.
If Hybrid 1 then crosses back above Signal 1, the cross can be interpreted as a potential momentum re-entry trigger in the direction of the higher-timeframe momentum.
The opposite logic can be applied for short setups.
---
# Example Long Setup
One possible momentum-based workflow:
1. Check Hybrid 3 for the broader momentum direction.
2. Check Hybrid 2 for intermediate momentum confirmation.
3. Prefer long setups when both higher-timeframe Hybrids are above their Signals.
4. Wait for Hybrid 1 to pull back.
5. Look for Hybrid 1 to cross back above Signal 1.
6. A green Hybrid 1 cross dot marks the momentum crossover.
7. Additional confirmation can come from the 50 level or from price structure.
8. The actual trade entry, stop loss and position size should be determined using the trader's own risk-management rules.
The indicator itself does not place trades.
---
# Example Short Setup
The inverse workflow can be used for short setups:
1. Check Hybrid 3 for broader bearish momentum.
2. Check Hybrid 2 for intermediate bearish momentum.
3. Prefer short setups when both higher-timeframe Hybrids are below their Signals.
4. Wait for Hybrid 1 to rally against the higher-timeframe direction.
5. Look for Hybrid 1 to cross back below Signal 1.
6. A red Hybrid 1 cross dot marks the bearish momentum crossover.
7. Additional confirmation can come from the 50 level or price structure.
8. Apply independent risk-management rules before entering a trade.
---
# Using the 50 Level
The 50 level can be used as a neutral momentum filter.
### Above 50
The Hybrid is in the upper half of its normalized range.
This can support a bullish momentum interpretation, particularly when the Hybrid is also above its Signal.
### Below 50
The Hybrid is in the lower half of its normalized range.
This can support a bearish momentum interpretation, particularly when the Hybrid is also below its Signal.
A stronger momentum condition can therefore be defined by combining:
Direction + Signal Cross + 50-Level Position.
For example:
Bullish:
Hybrid > Signal and Hybrid > 50
Bearish:
Hybrid < Signal and Hybrid < 50
This is a confirmation framework, not a guaranteed trading signal.
---
# Using the 30 and 70 Levels
The 30 and 70 levels provide additional momentum context.
A move below 30 can indicate that momentum has entered a relatively weak or oversold area.
A move above 70 can indicate that momentum has entered a relatively strong or overbought area.
These levels should not automatically be interpreted as reversal signals.
A strong trend can remain above 70 or below 30 for an extended period.
Therefore, the direction of the Hybrid, its Signal relationship, and the higher-timeframe Hybrids should be considered together.
---
# Recommended Multi-Timeframe Workflow
For short-term trading, a practical configuration is:
Chart timeframe:
1 minute
Hybrid 1:
1 minute
Hybrid 2:
5 minutes
Hybrid 3:
15 minutes
This creates a three-layer momentum structure:
1-minute = execution momentum
5-minute = intermediate momentum
15-minute = higher-timeframe momentum
The lower timeframe can be used for timing while the higher timeframes provide directional context.
For example:
15M bullish → 5M bullish → wait for 1M pullback → 1M bullish Signal cross → potential long setup.
The inverse can be used for short setups.
---
# What Information Does the Indicator Use?
The indicator primarily uses price-derived information.
The Hybrid calculation uses:
* Selected price source
* RSI
* Highest high over the Stochastic lookback
* Lowest low over the Stochastic lookback
* Stochastic calculation
* Stochastic smoothing
* RSI/Stochastic weighting
The Signal calculation uses the resulting Hybrid series.
The MTF versions retrieve the Hybrid calculation from their selected higher timeframe using TradingView's `request.security()` functionality.
The indicator does not directly use:
* Order flow
* Level 2 data
* Bid/ask volume
* Market profile
* Fundamental data
* News
* Economic calendar data
* Open interest
* Institutional positioning
It is a price-derived momentum oscillator.
---
# What the Indicator Is Designed For
This indicator is designed primarily for:
* Momentum analysis
* Multi-timeframe momentum comparison
* Pullback identification
* Momentum crossover timing
* Trend-direction confirmation
* Short-term and intraday trading analysis
It can be used on different markets and timeframes, but parameter optimization should be performed for the specific instrument and trading timeframe.
---
# Important Interpretation
A cross dot does not automatically mean "buy" or "sell."
A bullish cross means that the Hybrid has crossed above its Signal.
A bearish cross means that the Hybrid has crossed below its Signal.
The quality of a setup depends on the surrounding market structure, timeframe alignment, volatility, trend conditions and risk management.
A stronger approach is to treat the dots as momentum timing information rather than standalone trade signals.
---
# Example Confirmation Framework
### Long Bias
Prefer long setups when:
* Hybrid 3 > Signal 3
* Hybrid 2 > Signal 2
* Price structure supports an upside move
* Hybrid 1 pulls back
* Hybrid 1 crosses back above Signal 1
* Hybrid 1 is preferably above or recovering through 50
### Short Bias
Prefer short setups when:
* Hybrid 3 < Signal 3
* Hybrid 2 < Signal 2
* Price structure supports a downside move
* Hybrid 1 rallies into the pullback
* Hybrid 1 crosses back below Signal 1
* Hybrid 1 is preferably below or falling through 50
This approach uses the higher-timeframe Hybrids for directional context and the lower-timeframe Hybrid for timing.
---
# Important Limitations
This indicator is an analytical tool and does not predict future prices with certainty.
Higher-timeframe values are obtained using TradingView's multi-timeframe data functionality. The behavior of higher-timeframe values can differ from lower-timeframe calculations, particularly while the higher-timeframe candle is still forming.
Cross dots represent mathematical momentum crossings. They are not guaranteed entry signals and should not be interpreted as guaranteed profitable trades.
No indicator can eliminate market risk.
Always evaluate price structure, volatility, liquidity, spread, execution conditions and position sizing before entering a trade.
---
## Summary
Triple RSI + Stochastic Hybrid MTF — Smooth combines RSI and Stochastic momentum into three configurable multi-timeframe Hybrid oscillators.
The core concept is:
**Higher Timeframe Direction → Lower Timeframe Pullback → Signal Cross → Momentum Confirmation**
Hybrid 3 provides the broadest momentum context.
Hybrid 2 provides intermediate momentum context.
Hybrid 1 provides the most responsive momentum information for timing.
The colored cross dots identify changes in the relationship between each Hybrid and its Signal line.
The 50 level provides a neutral momentum reference, while the 30/70 and 10/90 levels provide additional context for weak, strong and extreme momentum conditions.
The indicator is intended to support discretionary technical analysis, not to function as an autonomous trading system.
Gösterge

Sector/Theme Performance DashboardThis indicator renders a customizable matrix directly on your chart to track sector, sub-industry, and thematic ETF performance across key lookback periods without switching tabs.
Key Features:
Multi-Timeframe Metrics: Track 1-Day, 1-Week, 1-Month, and YTD performance side-by-side.
Theme Mapping: Displays explicit thematic descriptions alongside each ticker (e.g., Capital Markets, Semiconductors, Cloud, Cyber, Volatility).
Visual Customization: Toggle individual timeframe columns on/off, adjust matrix sizing, and set custom color palettes.
Bypassing the 40-Ticker Script Limit:
Because TradingView caps each script to 40 data calls, ETFs are organized into select group batches in the settings.
To display 120+ ETFs simultaneously:
1. Load multiple instances of the indicator onto your chart.
2. Assign a different group batch to each instance.
3. Set the screen placement (Left, Center, Right) in the settings to render side-by-side panels. Gösterge

Breadth Topping SyndromeThis indicator plots a normalized breadth deterioration score in a separate pane and fires a discrete topping signal when several independent NYSE internal breadth conditions assemble while the market is still rising. The thesis is that major tops are a syndrome, not a single event: internal bifurcation, weakening participation and fading leadership tend to appear together near distributive peaks, and their conjunction inside an uptrend carries more information than any one of them alone.
█ OVERVIEW
Breadth Topping Syndrome (BTS) condenses four warning conditions into one framework:
- C1: a Miekka style divergence, where NYSE new 52 week highs and new 52 week lows are
simultaneously elevated as a percentage of advances plus declines.
- C2: Norman Fosback's High Low Logic Index at a high percentile of its own trailing history.
- C3: weak S&P 500 participation (percentage of constituents above their 200 day moving
average) while the trend reference index is in an uptrend.
- C4: a weighted deterioration score built from the same normalized components exceeding
a threshold.
When a configurable minimum number of these conditions has been observed within a short synchronization span and the trend gate is up, a trigger fires and opens a signal window. Inside the window the syndrome is Active only while the McClellan Oscillator is negative. Repeated triggers within a trailing lookback are counted as a cluster.
█ HISTORY / BACKGROUND
The components have documented lineages. The simultaneous new highs and new lows divergence condition follows James R. Miekka's Hindenburg Omen specification (1995), itself derived from work by Martin Zweig and Norman Fosback: both extremes elevated at once, measured against advances plus declines, valid only in an uptrend, with the McClellan Oscillator acting as an activation gate inside a fixed window rather than as a co equal trigger. The High Low Logic Index is Fosback's, published in 1976: the minimum of new highs and new lows relative to total issues isolates the disagreement component of breadth. Percentage of stocks above the 200 day moving average is a standard participation measure. The McClellan Oscillator is the 19/39 period EMA differential of net advances, per Sherman and Marian McClellan.
The syndrome architecture that combines them is novel and is described in full below. The conceptual basis is that each component captures a different failure mode of an advance, so requiring several to appear near simultaneously filters the false positives that any single measure produces on its own.
█ HOW IT WORKS
The script requests seven external series at the chart timeframe: NYSE advancing issues, declining issues, new 52 week highs, new 52 week lows, a trend reference index, and a primary plus fallback participation symbol. All requests use ignore_invalid_symbol, and a data integrity gate suppresses every signal when any core feed returns no value.
On each bar the script computes:
- The Miekka ratios: new highs and new lows each divided by advances plus declines, times 100.
C1 is true when both meet the threshold.
- The High Low Logic Index: the minimum of new highs and new lows divided by advances plus
declines, times 100, smoothed with an EMA, then converted to a percentile rank over the
normalization lookback. C2 is true when the percentile meets the warning level.
- The participation percentile: the participation series (gap filled with its last valid value so feed
gaps do not distort the distribution) percentile ranked over the same lookback. C3 is true when
the percentile is at or below the warning level while the trend reference index is above its close
a configurable number of bars ago. This is the divergence conjunction: price rising, participation
weak relative to its own recent history.
- The leadership share: new highs divided by new highs plus new lows, times 100, percentile
ranked and inverted.
- The deterioration score: the weighted average of the HLLI percentile, the inverted participation
percentile and the inverted leadership percentile, scaled 0 to 100. If both participation symbols
fail to resolve, the score reweights automatically over the two remaining components. C4 is true
when the score meets its threshold.
Each condition contributes to the syndrome if it was true on any bar within the synchronization span. When the count of contributing conditions reaches the required minimum while the uptrend gate is true, a trigger fires on the first such bar (edge triggered, so a persisting syndrome does not retrigger). The trigger opens a signal window measured in trading days. Within the window, the syndrome is Active while the McClellan Oscillator, computed as the fast EMA minus the slow EMA of net advances, is below zero, and deactivates when it turns positive without closing the window. The cluster count is the number of triggers within the trailing cluster lookback.
█ HOW TO USE
The script is designed for the 1D timeframe. The breadth feeds are daily series, the window and cluster inputs are specified in trading days, and the Miekka and McClellan parameters are daily conventions, so daily resolution matches the granularity of the logic.
- Blue score line: current breadth deterioration, 0 to 100, against a dashed threshold line and a
dotted midline at 50. The line turns orange above the threshold and red while the syndrome
is Active. Gray indicates missing core data.
- Faint purple line: the HLLI percentile, shown separately because it is the slowest moving and
most historically studied component.
- Red triangle at the top of the pane: a syndrome trigger fired on that bar.
- Small maroon diamond: the Miekka condition alone was true on that bar without a full trigger,
useful for tracking the classical signal inside the broader framework.
- Maroon background: syndrome Active (inside a signal window with the McClellan Oscillator
negative). Orange background: window open but the oscillator is positive, so the syndrome is
temporarily deactivated and will reactivate if the oscillator turns negative before the window
expires.
- Status table (top right): overall state, each condition's current value and contribution, the
syndrome count, the oscillator value, bars remaining in the window, and the cluster count.
A single trigger is a caution flag. Two or more triggers within the cluster lookback have historically been the more serious configuration for divergence based breadth signals, and the script exposes a dedicated alert for that case. Four alerts are provided: trigger fired, syndrome turned Active, clustered trigger, and score crossing above its threshold.
█ SETTINGS
- Conditions Required (N of 4): syndrome count needed to trigger. Default 3.
- Condition Sync Span: bars within which a condition still counts toward the syndrome. Default 5.
- Signal Window: trading days a trigger keeps the window open. Default 30.
- Cluster Lookback: trailing trading days over which triggers are counted. Default 60.
- C1 Miekka NH/NL Threshold: minimum percent of advances plus declines for both new highs
and new lows. Default 2.8.
- C2 HLLI Warning Percentile: percentile of the smoothed HLLI that flags bifurcation. Default 90.
- C3 Participation Warning Percentile: participation percentile at or below which weakness is
flagged in an uptrend. Default 25.
- C4 Deterioration Score Threshold: score level that flags composite weakness. Default 75.
- Uptrend Lookback: bars over which the trend reference must have risen. Default 50.
- HLLI EMA Length: smoothing applied to the raw HLLI ratio. Default 50.
- Percentile Rank Lookback: window for all percentile ranks. Default 252.
- Score weights for the bifurcation, participation and leadership components. Default 33.3 each.
- MCO Fast EMA and Slow EMA: McClellan Oscillator periods. Defaults 19 and 39.
- Data Symbols: all seven feeds are exposed as string inputs and can be substituted.
- Show Status Table: toggles the table. Default on.
█ WHAT MAKES IT ORIGINAL
The individual components are public domain methods. What this script does differently is the combination architecture. First, every component is percentile ranked against its own trailing distribution before use, so the warning levels adapt to the prevailing breadth regime instead of relying on fixed absolute thresholds calibrated to a decades old NYSE universe. Second, the conditions are fused through an N of M syndrome count with a synchronization span, not a same bar AND, which acknowledges that breadth deterioration components rarely align to the exact day. Third, the trigger inherits the two phase Miekka mechanism but generalizes it: the syndrome, not a single divergence, opens the window, and the McClellan Oscillator gates activation inside it. Fourth, trigger clustering is quantified directly on the chart rather than left to visual inspection. This conjunction of adaptive normalization, tolerant multi condition assembly, windowed gating and cluster counting does not correspond to any single published method and is the substance of the script.
█ NOTES / LIMITATIONS
- The breadth feeds have limited historical depth. No signals can exist before the feeds begin,
and because every percentile rank requires the full normalization lookback (default 252 bars),
the first year of available feed history produces unreliable ranks and should be disregarded.
- The logic is designed for daily resolution. On other timeframes the external series return
whatever the feeds report at that resolution, and the day denominated windows lose their
intended meaning.
- All values on the developing realtime bar update until the bar closes. Signals should be
evaluated on closed bars. The script uses same timeframe requests with lookahead off and
does not reference future data.
- If neither participation symbol resolves, condition C3 can never contribute. With the default
requirement of 3 of 4, all three remaining conditions must then assemble, which makes
triggers strictly rarer. The table marks participation as N/A in that state.
- Data is pulled from fixed external symbols regardless of the chart symbol. The chart symbol
only determines the bar grid, so the indicator belongs on a US equity index chart at 1D.
- Breadth divergence signals of this family have a documented false positive history. This tool
flags conditions that have accompanied past tops. It is a risk assessment input, not a
standalone trading signal, and no claim is made about future results. Gösterge

Composite Valuation Standard Score█ OVERVIEW
Composite Valuation Standard Score (CVSS) plots a single 0 to 100 line that measures how expensive the broad US equity market is against its own entire recorded history, by combining up to six valuation ratios through point-in-time statistics. The thesis: one valuation metric can mislead in isolation, but the average anchored z-score of several independent lenses (earnings, cyclically adjusted earnings, book value, sales, output, replacement cost) gives a robust reading of how uniformly stretched or depressed valuations are, without using any future data at any bar.
█ HISTORY / BACKGROUND
Averaging the historical percentile of many valuation ratios into one composite is a long-standing practice in institutional market research. The individual components carry their own lineage: the cyclically adjusted price to earnings ratio was developed by Robert Shiller, the market capitalization to GDP ratio is widely associated with Warren Buffett, and the ratio of corporate equity value to corporate net worth descends from James Tobin's Q. The specific construction used here, an expanding winsorized z-score per component with a minimum-history admission gate and a composite-level percentile mapping, is a novel method built for this script. Its conceptual basis is that every observation should be judged only against the history that existed when it printed, and that a metric making new all-time highs should keep conveying magnitude instead of freezing at the top of a percentile scale.
█ HOW IT WORKS
All series are sampled once per calendar month through request.security at the 1M timeframe with lookahead off. Two of the six components are ratios computed from a numerator and denominator symbol: Market Cap / GDP (a total market index divided by nominal GDP) and the Q Ratio proxy (nonfinancial corporate equities at market value divided by nonfinancial corporate net worth). Because every series is immediately transformed to ranks and z-scores, absolute units and level calibration are irrelevant; only the shape of each series matters.
The algorithm, step by step:
1. On each new monthly bar, each enabled component's value is inserted into that component's
sorted history array. The arrays only ever grow; nothing is discarded.
2. A component becomes "live" once its array holds at least the minimum-history gate
(default 120 monthly observations). Before that it accumulates data but does not
contribute, which prevents thin early samples from producing meaningless statistics.
3. Each live component's current value is converted to an anchored z-score against the
expanding mean and standard deviation of its own array, then winsorized by clamping
to plus or minus 3 (adjustable).
4. The composite z is the equal-weight average of all live winsorized z-scores, computed
whenever at least the minimum number of components (default 2) is live.
5. The composite z is itself inserted into an expanding array and converted to its own
expanding percentile rank. That rank is the 0 to 100 headline line.
6. Separately, each live component's expanding percentile rank is compared with the
extreme threshold (default 90). The share of live components above the threshold
is plotted as the extremes-breadth columns.
An optional Excess CAPE Yield series (100 divided by CAPE, minus the 10-year Treasury yield) can be plotted and is always available in the table when enabled.
█ HOW TO USE
Apply the script on a Monthly chart of a symbol with deep monthly history. The chart symbol only supplies the time axis; the valuation data comes from the configured feeds. Charting the trailing P/E series itself, or a long-history index, exposes the full record back to the late 19th century. On a short-history chart symbol the statistics rank against a short window and the reading is not comparable.
Reading the pane is simple:
• The teal line is the market's expensiveness rank from 0 to 100. A reading of 96 means
the current composite valuation is richer than 96 percent of everything that came
before it. A reading of 5 means cheaper than 95 percent of prior history.
• Above the dotted 90 line with a red background: valuations are in their most expensive
historical decile. Below the dotted 10 line with a green background: cheapest decile.
• The orange columns show agreement. At 100, every live metric is simultaneously in its
own extreme zone; at 0, none is. High teal with low orange means the composite is
stretched but the stretch is concentrated in few metrics.
• The table in the top right shows each component's status (off, gated with progress,
or live), its current percentile, and its z-score, plus the composite row and the
Excess CAPE Yield row.
This is a slow macro positioning gauge, not a timing signal. Elevated readings can persist for years. Its practical use is context: sizing long-term risk, framing regime, and flagging when many independent valuation lenses agree at an extreme.
█ SETTINGS
• Components group: six on/off toggles, each with editable symbol fields. Trailing P/E
(default on), Shiller CAPE (default on), Price / Book (default on), Price / Sales
(default on), Market Cap / GDP with numerator and denominator symbols (default on),
Q Ratio proxy with numerator and denominator symbols (default on).
• Minimum-history gate: monthly observations a component needs before it contributes.
Default 120.
• Winsorize z at +/-: clamp magnitude for component z-scores. Default 3.
• Minimum live components: fewest live components required for the composite to plot.
Default 2.
• Extreme threshold (percentile): level defining the expensive zone for the background,
and the per-component extreme used by the breadth columns. Default 90.
• Cheap threshold (percentile): level defining the cheap zone for the background.
Default 10.
• Plot Excess CAPE Yield: adds the ECY series in percent to the pane and status line.
Default off. Its 10-year yield symbol is editable.
• Show component table: toggles the status table. Default on.
█ WHAT MAKES IT ORIGINAL
Published valuation scripts overwhelmingly track a single ratio, and existing multi-series composites in other domains rank each input over a fixed rolling window or against full-sample statistics. This script differs in four specific, verifiable ways. First, every statistic is point-in-time: each bar is ranked and scored only against observations that existed at that bar, so no early reading benefits from data that had not yet occurred. Second, the primary transform is a winsorized anchored z-score rather than a percentile, so a component that breaks above all prior history continues to register increasing magnitude up to the clamp instead of pinning at 100 and going silent. Third, a minimum-history admission gate handles the unequal start dates of the underlying feeds explicitly: short-history components accumulate until they are statistically meaningful, and the effective composition of the composite changes transparently over time, disclosed live in the table. Fourth, the extremes-breadth columns quantify cross-metric agreement, separating a composite driven by one distorted ratio from one where independent valuation lenses are stretched simultaneously.
█ NOTES / LIMITATIONS
• Sample depth is bounded by the chart symbol's bar history, because expanding statistics
can only accumulate on bars that exist on the chart. Use a deep-history monthly chart.
• The effective component set varies by era. Only the two earnings-based series reach the
19th century; book value and sales feeds begin near 2000, and the market cap and Q feeds
clear the gate later still. Early readings are a two-component composite. The table
always shows which components are live.
• Components whose feeds return no data stay gated and are excluded; the composite
requires the configured minimum of live components or it plots na.
• The value on the developing monthly bar updates until that bar closes. On timeframes
below monthly the current month's reading evolves intraperiod. No lookahead is used
and completed bars do not repaint from the script's side.
• The underlying economic feeds are revised at the source. National accounts and flow of
funds series can be restated historically, which changes past values of the affected
components when the data provider updates them.
• Quarterly feeds repeat their value across the months of a quarter, which mildly smooths
the expanding distributions.
• This indicator describes valuation rank relative to history. It makes no claim about
future returns or the timing of any reversal. Gösterge

Index Peak Dispersion█ OVERVIEW
Index Peak Dispersion plots, in a separate pane, two normalized series computed across a configurable universe of up to twelve equity indexes: the calendar-day dispersion of their all-time-high dates, expressed as a percent of a topping window, and the share of indexes that printed a fresh all-time high within a short recent window. The thesis is that healthy advances register all-time highs across indexes nearly simultaneously, while major distributive tops fragment, spreading index peak dates across weeks or months.
█ HISTORY / BACKGROUND
The concept descends from the non-confirmation principle of Dow Theory as developed by Charles Dow, William Hamilton and Robert Rhea, in which a new high in one average unaccompanied by a new high in another warns that the trend is losing sponsorship. Classic non-confirmation is measured in the price domain: one index fails to exceed its prior peak while another does.
Market historians and technicians, including Robert Prechter, have documented a related phenomenon in the time domain: at major tops, the final all-time highs of the major indexes scatter across the calendar rather than clustering. At the 2000 top, the Dow Industrials peaked in January, the S&P 500 and NASDAQ Composite in March, and the NYSE Composite in September. At the 2007 top, the Dow Jones Composite peaked in July while the Dow Industrials and S&P 500 peaked in October. This script converts that qualitative observation into a mechanical, reproducible statistic.
█ HOW IT WORKS
The script performs the following steps on each bar:
• For each of up to twelve enabled symbols, one same-timeframe request.security() call evaluates a function inside the requested symbol's context. The function maintains a running maximum of closing prices over the symbol's loaded history and records the timestamp of the bar on which that maximum was last exceeded. This running maximum is point-in-time by construction: no future data enters the calculation, and lookahead is off.
• On the chart symbol, each recorded timestamp is converted to an age in calendar days: current bar time minus the all-time-high time, divided by the number of milliseconds in a day.
• Each enabled index with data is classified. An age at or below the fresh window makes it Fresh. An age at or below the topping window makes it part of the in-window set. An age beyond the topping window makes it Stale.
• When the in-window set contains at least the minimum required count of indexes, the dispersion span equals the maximum in-window age minus the minimum in-window age, in calendar days. The plotted dispersion value is that span divided by the topping window length, times 100. When the in-window count is below the minimum, the dispersion plot returns na.
• The participation value equals the count of Fresh indexes divided by the count of enabled indexes with data, times 100, plotted as columns.
• The fractured top condition is true when the dispersion value is at or above the warning threshold while at least one index is Fresh. The pane background is shaded on those bars, and an alert fires on the first bar of each new occurrence. A second alert fires when every enabled index with data is simultaneously Fresh, which marks a synchronized advance, the opposite condition.
• On the last bar, an optional table lists each index with its all-time-high date, age in days and classification, plus summary counts and the raw span in days.
█ HOW TO USE
The script is designed for the 1D timeframe. The running all-time high is intended to operate on daily closes, and both windows are specified in calendar days, so daily resolution matches the granularity of the logic.
In plain terms, the blue columns answer one question: how many of the enabled indexes hit a record high this week? The red line answers another: how spread out in time are everyone's record highs? In a strong market, the indexes peak together, so the columns are tall and the line stays low. At major tops, the market tends to fall apart in slow motion: one index peaks, then months later another, and by the time the last index prints its final record, several others stopped making records long ago. Each new high is carried by fewer indexes, so the columns thin out while the line climbs. The shaded background marks the combination of both: the market is still printing record highs, but the set of indexes confirming them has been shrinking for months. That is the structure documented at the 2000 and 2007 tops. The same combination also appears during rotation phases that resolve higher, so treat it as a statement that conditions resemble past major tops, not as an instruction to act.
Read the two plotted series together. Low dispersion with high participation describes a synchronized advance in which the enabled indexes are registering highs together. Rising dispersion while some indexes continue to print fresh highs describes fragmentation: leadership is narrowing and earlier leaders have stopped confirming. The shaded background marks bars on which the dispersion value is at or above the dashed threshold line while at least one fresh high exists, the specific combination in which fragmentation is present at a live high rather than in an established downtrend.
The table gives the attribution behind the numbers: which indexes are Fresh, which remain inside the topping window, and which have gone Stale, along with each all-time-high date. Stale entries are non-confirmations older than the topping window and are deliberately excluded from the span so that a single long-dormant index does not saturate the statistic.
The condition is a warning context, not a timing trigger. It identifies an environment consistent with historical distributive tops. It does not predict the date or the existence of a decline.
█ SETTINGS
• Index universe, twelve slots, each with an enable checkbox and a symbol field. Defaults: DJI, DJT, DJU, DJA, SPX, NDX, IXIC, NYA, RUT, SOX, MID, SPXEW. All twelve are enabled by default. Any slot can be repointed to another symbol or disabled.
• Fresh high window, calendar days. Default 7. An index whose all-time high printed within this many days counts as Fresh.
• Topping window, calendar days. Default 378. An index whose all-time high printed within this many days participates in the dispersion span. Older highs are classified Stale.
• Dispersion warning threshold, percent of topping window. Default 25. The dashed reference line and the threshold for the fractured top condition.
• Minimum in-window index count for a valid span. Default 4. Below this count the dispersion plot returns na, which prevents a span computed from too few indexes.
• Show status table. Default on.
• Table position. Default Top right.
█ WHAT MAKES IT ORIGINAL
Breadth and non-confirmation tools on this platform generally measure the price domain: divergences between an index and an internal line, counts of components above a moving average, or new-high and new-low tallies within one exchange universe. This script instead measures the time domain across whole indexes. It reduces the peak-date scatter of a user-defined index universe to a single bounded statistic, the in-window span of all-time-high ages, and pairs it with a participation series so that fragmentation is only flagged while a high is live. The classification into Fresh, in-window and Stale, with the Stale exclusion and the minimum-count validity gate, is what allows the scatter of a historical topping process to be plotted as one continuous, comparable series across eras.
█ NOTES / LIMITATIONS
• The running all-time high is computed only over the bars loaded for each requested symbol. Symbols with short available history, and the early portion of any chart, understate the true age of the all-time high. Treat the plot as reliable only after all enabled symbols have substantial loaded history.
• The logic is designed for the 1D timeframe. On intraday charts the running maximum operates on intraday closes and the calendar-day windows lose their intended granularity. On weekly or monthly charts a fresh window shorter than one bar cannot register.
• All request.security() calls run on the chart timeframe with lookahead off. Values on the developing bar update until the bar closes and do not repaint afterward.
• The script issues twelve security calls. A symbol slot that fails to resolve or returns no data is excluded from every count and appears in the table as No data.
• Ages and spans are measured in calendar days, not trading days, so weekends and holidays are included in the counts.
• The warning threshold is expressed as a percent of the topping window. Changing the topping window changes the day-equivalent of the same percent threshold.
• The dispersion plot returns na whenever fewer than the minimum required indexes have an all-time high inside the topping window.
• The status table renders on the last bar only. Gösterge

Margin Debt Expansion vs Contraction Indicator█ OVERVIEW
This indicator plots the year over year percentage change in a quarterly measure of U.S. margin debt in a separate pane, classifies that rate of change into an expansion regime and a contraction regime, and marks the quarters in which the rate of change turns while inside either regime. The thesis is that the second derivative of speculative leverage, rather than its absolute level, is what distinguishes one phase of a market cycle from another.
█ HISTORY / BACKGROUND
Aggregate customer margin debt has been reported for U.S. brokerage accounts for many decades. The NYSE compiled and published the series historically. FINRA later assumed responsibility for aggregating and distributing margin statistics from its member firms, on a monthly basis. The Federal Reserve publishes a closely related quarterly aggregate as part of the Z.1 Financial Accounts under the heading "Security Brokers and Dealers; Receivables Due from Customers (Margin Loans and Other Receivables); Asset, Level."
The observation that leverage growth accelerates into cycle peaks and contracts violently during forced deleveraging is long standing and not proprietary to any single author. The absolute level of margin debt trends upward with nominal market capitalisation and with the size of the brokerage system, which makes level comparisons across decades of limited use. Expressing the series as a year over year rate of change removes that trend and puts every cycle on a comparable scale. This script implements that transform and adds a regime classification and turn detection layer on top of it.
█ HOW IT WORKS
• The script issues two requests against FRED:BOGZ1FL663067003Q at the 3M resolution, both with gaps off and lookahead off. The first returns the current quarterly value. The second returns the same series offset by four quarters.
• The year over year rate of change is computed as (current minus prior year) divided by prior year, multiplied by 100. The calculation is skipped and the plot returns na when either request is na or when the prior year value is zero.
• Because the source is quarterly and the chart is not, the resulting series is a step function. It holds a constant value across every chart bar inside a quarter and changes only on the first chart bar after a new quarterly value becomes available.
• Two regimes are derived from the rate of change. The expansion regime is active when the reading is at or above the Red Zone Lower input. The contraction regime is active when the reading is at or below the Green Zone Upper input. The Red Zone Upper and Green Zone Lower inputs define the outer edge of the shaded bands and do not participate in regime classification, so a reading that jumps past the outer edge still registers.
• A threshold cross is flagged on the first bar on which a regime becomes active after not being active on the prior bar. A triangle marker prints at the value of the line.
• A rollover is flagged when the regime is active and the current reading is below the prior bar reading while the prior bar reading was at or above the reading before it. On a step function this resolves to the first chart bar of any quarter whose value moved against the direction of the regime. The contraction rollover is the mirror condition. A circle marker prints at the value of the line.
• The line is coloured red while the expansion regime is active, green while the contraction regime is active, and neutral otherwise.
█ HOW TO USE
Use this on a daily or weekly chart. The underlying data is quarterly, so a daily chart gives enough resolution to see each quarterly step clearly while still covering a multi decade span on one screen. Intraday timeframes add no information because the value cannot change intraday. Timeframes at or above 3M collapse the step structure and are not useful.
The chart symbol does not enter the calculation. The output is identical on every symbol. Load it beneath a broad U.S. equity index if you want visual correspondence between the leverage cycle and the price cycle, but understand that the indicator is not reading the chart.
Reading the output:
• The line is the year over year rate of change of margin debt in percent. Zero means leverage is flat against the same quarter one year earlier.
• The red band spans the expansion thresholds. A reading inside or above it means leverage is growing at a pace that has historically clustered in the later stages of an advance.
• The green band spans the contraction thresholds. A reading inside or below it means leverage is shrinking at a pace that has historically clustered around and after deep declines.
• Triangle markers mark the quarter in which a regime first became active.
• Circle markers mark a quarter in which the rate of change moved against the direction of the active regime. These can print more than once inside a single regime episode, since any adverse quarter qualifies. Treat a run of consecutive circles as more informative than a single one.
The measure is coincident to lagging with respect to price. It describes the state of leverage rather than anticipating price. Read it alongside independent inputs such as breadth, credit spreads and the yield curve.
█ SETTINGS
Zone Thresholds
• Red Zone Upper (%) , default 55. Outer edge of the expansion band. Shading only.
• Red Zone Lower (%) , default 40. Expansion threshold. Regime classification, marker logic and line colour key off this level.
• Green Zone Upper (%) , default -20. Contraction threshold. Regime classification, marker logic and line colour key off this level.
• Green Zone Lower (%) , default -40. Outer edge of the contraction band. Shading only.
Display
• Show Zone Markers , default on. Toggles the triangle and circle markers. The line, bands and alert conditions are unaffected by this input.
█ WHAT MAKES IT ORIGINAL
Plotting margin debt, or its rate of change, is not itself novel. What this script does differently is separate three things that are usually collapsed into one threshold test.
First, regime membership is defined by a single inner threshold per side rather than by band membership, so the classification does not fail when the series gaps past the outer edge of the shaded band. The band remains a visual reference for how far into the regime the reading sits.
Second, turn detection is evaluated only conditionally, inside an active regime. An adverse quarter in the middle of the range carries no signal and produces no marker. The same adverse quarter above the expansion threshold is the event the script is built to isolate.
Third, the turn test is written for a step function rather than a continuous series. It fires on the first chart bar carrying a new quarterly value that moved against the regime, which is the only bar on which new information actually arrived, rather than repeating across the plateau.
The combination of a one sided regime gate with a step aware turn test applied to a quarterly macro leverage series is what distinguishes this from a threshold crossing plot of the same data.
█ NOTES / LIMITATIONS
• Quarterly source. FRED:BOGZ1FL663067003Q is published quarterly. FINRA's monthly margin debt series is not available natively on this platform. Every regime change and every marker resolves to quarterly granularity. A turn that a monthly series would show in month one will not appear here until the quarter closes.
• Publication lag. The Z.1 Financial Accounts are released roughly ten weeks after the quarter they cover. The script positions each quarterly value at the close of the quarter it describes, which is earlier than the date on which that value became publicly known. Historical marker placement is therefore ahead of real world availability by approximately one quarter. This is inherent to charting a macro release against calendar time and cannot be corrected inside the script.
• Revisions. The Z.1 series is revised. Historical values, and therefore historical markers, can change when the source data is revised.
• No lookahead. Both requests use barmerge.lookahead_off, so a quarterly value is not shown on chart bars that precede the close of its own quarter. The most recent quarter updates as new data arrives, in the normal way for any real time series.
• History dependence. The rate of change requires five quarterly observations before it can be computed, and the plot returns na until they exist. On charts whose own history is shorter than the available FRED history, the line only covers the bars the chart has. Applying the script to a recently listed symbol will truncate the visible record accordingly.
• Symbol independence. The output does not depend on the chart symbol and will be identical on any instrument. It is a U.S. aggregate leverage measure and carries no meaning with respect to the price series it is displayed against.
• Timeframe sensitivity. Intraday resolutions cannot resolve the source data and produce a flat line across long stretches. Resolutions at or above 3M compress the step structure to the point of illegibility. Daily or weekly is the intended range.
• Threshold provenance. The default threshold values are round numbers chosen to sit near the extremes observed in the available history. The number of complete leverage cycles contained in the series is small, so the thresholds should be treated as adjustable reference levels rather than as fixed boundaries with statistical support.
• Repeated rollover markers. The rollover test flags any adverse quarter inside an active regime, not only the first or the extreme one. Multiple circles inside a single regime episode are expected behaviour, not a defect. Gösterge

Doji at 50, 100, 200 EMA (v6)Doji at Key EMAs (50, 100, 200) — Dynamic Pullback & Reversal Signals
Overview
This indicator identifies Doji candlestick patterns forming directly at or near major dynamic support and resistance levels (50 EMA, 100 EMA, and 200 EMA).
When price tests a key Exponential Moving Average and prints an indecision candle (Doji), it often signals an exhaustion of the prevailing momentum and sets up high-probability trend continuation pullbacks or mean-reversion bounces.
Key Features
Key Dynamic Moving Averages: Plots 50, 100, and 200 EMAs directly on the chart.
Smart Doji Detection: Identifies Doji candles by evaluating the candle's body size relative to its total high-to-low range (customizable threshold).
Proximity Buffer: Checks if price action is touching or within a tight tolerance percentage of the selected EMA to avoid false misses due to slight wick differences.
Clear Visual Labels: Displays color-coded labels beneath the signal bars identifying which specific EMA the Doji is interacting with:
Blue: 50 EMA
Orange: 100 EMA
Purple: 200 EMA
Integrated Alerts: Single alert condition trigger for real-time notifications on your watchlist.
How to Use
Best Timeframes: Daily (D) and Weekly (W) charts for swing/positional setups; also functional on 1-hour/4-hour timeframes for active traders.
Trend-Following Setup (High Probability):
In an established uptrend, look for pullbacks to a rising 50 or 100 EMA marked by a Doji signal.
Trigger a long entry when the high of the Doji candle is breached on the subsequent candle.
Place the Stop Loss slightly below the Doji low or the corresponding EMA line.
Macro Reversals:
Watch for Doji prints at the 200 EMA for potential long-term trend pivots or major structural retests.
Settings & Inputs
EMA Lengths: Default 50, 100, 200 (fully adjustable).
Max Doji Body Size (%): Percentage of total range the body cannot exceed (default: 10%).
Proximity to EMA (%): Tolerance distance around the EMA line to qualify an interaction (default: 0.5%).
Disclaimer: This indicator is designed for educational and technical analysis purposes. Always combine candlestick signals with multi-timeframe analysis and proper risk management. Gösterge

Pre-Market Breadth & RVOL OscillatorPre-Market Breadth & RVOL Oscillator
This indicator answers two questions traders ask before the New York cash open at 9:30 ET: is real volume showing up, and is the tape actually broad-based, or is this just noise?
What it shows
RVOL (Relative Volume) — plots today's cumulative volume against the average cumulative volume at the same minute-of-day over the last N sessions (default 10, adjustable). A reading of 1.0 means volume is tracking normal. Above the "Elevated" line (default 1.5x) signals unusually strong participation; above "Heavy" (default 2.0x) signals a session that's meaningfully outpacing its recent average — the kind of volume that tends to accompany moves with follow-through rather than fade.
NYSE TICK — the number of NYSE-listed stocks trading on an uptick minus those on a downtick, recalculated essentially every trade. It's a real-time gauge of order-flow pressure; sharp spikes toward the extremes often mark short-term buying or selling exhaustion.
NYSE ADD (Advance/Decline) — the count of advancing stocks minus declining stocks, running cumulative through the session. Unlike TICK, this measures breadth: whether a move is being carried by the broad market or just a handful of large-cap names.
Used together, these three answer different pieces of the same question — RVOL tells you if volume is real, TICK tells you the moment-to-moment pressure, and ADD tells you how many stocks are actually participating.
Settings
Fully adjustable RVOL lookback window and threshold levels, with color/width customization
TICK and ADD symbols, source (open/high/low/close), display toggles, and colors — all configurable
Exchange timezone dropdown (defaults to America/New_York) so the minute-of-day calculation aligns correctly with your target session
Optional pre-market session highlight with adjustable start/end time and color
How to use it
Best viewed on a 1-minute chart in the pre-market or early session window. Look for RVOL breaking above 1.5x alongside TICK/ADD moving in a consistent direction — that combination suggests a session with real conviction behind it, as opposed to a low-volume drift that's more likely to reverse once the cash session brings in full liquidity. Gösterge

Volume DNA [StrixEDGE]📊 WHAT IT DOES
StrixEDGE Volume DNA produces a single score from 0-100 that reveals whether the current price movement has genuine volume support. It synthesizes four independent volume metrics — OBV slope, Chaikin Money Flow, Relative Volume, and Volume-Price Alignment — into one easy-to-read composite. Think of it as a health check for any price move.
🔬 WHY IT'S DIFFERENT
Individual volume indicators each tell part of the story. OBV shows cumulative flow. CMF shows bounded pressure. RVOL shows participation levels. None alone gives the full picture. Volume DNA combines all four with equal weighting into a normalized 0-100 score — something no existing public indicator does. The optional breakdown mode lets you see exactly which component is driving the overall score.
⚙️ HOW IT WORKS
Four components, each scored 0-25 points:
• OBV Slope (0-25): Linear regression slope of On-Balance Volume, normalized by ATR. Rising OBV = accumulation = high score.
• CMF Score (0-25): Chaikin Money Flow mapped to 0-25 range. Positive CMF = buying pressure.
• RVOL Score (0-25): Current volume vs 20-period average. Above-average volume = higher conviction.
• Volume-Price Alignment (0-25): Are price and volume moving together? Rising price + rising volume = healthy. Rising price + falling volume = dangerous divergence.
The composite is smoothed with a 3-period EMA to reduce noise.
📈 HOW TO USE
• Score 80-100 (GREEN): Price move is well-supported — hold positions, trail stops
• Score 60-80: Adequate support — normal trading
• Score 40-60 (YELLOW): Mixed signals — reduce position size, tighten stops
• Score 20-40 (ORANGE): Weak support — avoid new entries in move direction
• Score 0-20 (RED): Critical — the move is unsupported and likely to reverse
• Enable "Show Breakdown" to identify which specific component is weak
🎛️ INPUTS & DEFAULTS
OBV Regression: 14 | CMF Period: 20 | RVOL Baseline: 20
Price Alignment LB: 5 | Smoothing: 3 | Breakdown: OFF
═══════════════════════════════════════════════════════
🔧 CUSTOMIZATION
All parameters are fully adjustable through the indicator settings panel. Inputs are grouped logically:
• ⚙️ Core Parameters — main calculation settings
• 📊 Table Settings — table size (Tiny to Huge), position (4 corners), visibility toggle
• 🎨 Visual Settings — colors, show/hide elements
• 🔔 Alert Settings — threshold values for notifications
📊 DATA TABLE
A built-in data table displays all key metrics in real-time. Adjust the table size from Tiny to Huge to match your chart layout. Position it in any corner. Toggle visibility on/off.
🔔 ALERTS
Pre-built alert conditions for all major signals. Set up alerts via TradingView's alert dialog — select this indicator and choose from the available conditions.
⏱️ RECOMMENDED TIMEFRAMES
Works on all timeframes. Recommended: 1H, 4H, Daily for best signal quality. Lower timeframes produce more signals but with higher noise. Weekly/Monthly for position trading context.
✅ COMPLIANCE
• No repainting — all signals based on confirmed bar close data
• No future data references
• Open-source code — verify the logic yourself
⚠️ DISCLAIMER
This indicator is a technical analysis tool, not financial advice. It does not predict future price movements. Past patterns and signals do not guarantee future results. Trading involves substantial risk of loss. Always use proper risk management, including stop losses and appropriate position sizing. Never risk more than you can afford to lose. Gösterge

Gösterge

Futia Deviation Bands█ OVERVIEW
Futia Deviation Bands (200D SMA / 48M SMA) plots, in a separate pane, the percentage deviation of price from two fixed-timeframe simple moving averages: the 200-day SMA and the 48-month SMA. Both series are computed from daily and monthly data regardless of the chart timeframe. The thesis is that extreme downside stretch from these two reference trends has historically marked two distinct classes of mean-reversion conditions in broad equity indexes: a short-horizon tactical condition and a rare long-horizon undervaluation condition.
█ HISTORY / BACKGROUND
The method derives from the contrarian trading framework described by Carl Futia in the book The Art of Contrarian Trading (2009). Futia proposed the 48-month simple moving average of a broad stock index as a rough proxy for long-term fair value, and used deviations from the 200-day moving average as a tactical gauge of bearish sentiment extremes. In his framework these price conditions are meant to be combined with a discretionary assessment of crowd psychology; this indicator implements only the mechanical price conditions.
The conceptual basis is mean reversion around trend. A close far below the one-year trend (200-day SMA) reflects a compressed, fear-driven market state that has tended to resolve over weeks to months. A close far below the four-year trend (48-month SMA) is a much rarer state, historically clustered into a small number of major bear market episodes, and reflects deep departure from long-run value rather than short-term sentiment.
█ HOW IT WORKS
The script performs the following computations on every chart bar:
It requests daily data for the chart symbol and computes 100 * (close / SMA(close, 200) - 1), the percentage deviation of the daily close from the 200-day SMA.
It requests monthly data for the chart symbol and computes 100 * (close / SMA(close, 48) - 1), the percentage deviation of the monthly close from the 48-month SMA.
When the confirmed-bars input is enabled, both requests return the value of the previously completed daily or monthly bar, using the standard non-repainting higher-timeframe pattern (offset by one bar with lookahead on). When disabled, the requests return the developing value of the current daily or monthly bar with lookahead off.
Condition 1 is true when the daily deviation is at or below the Condition 1 threshold (default -10 percent).
Condition 2 is true when the monthly deviation is at or below the Condition 2 threshold (default -20 percent).
The pane background is shaded aqua when only Condition 1 is active, orange when only Condition 2 is active, and red when both are active.
A small triangle marker labeled C1 or C2 is drawn at the bottom of the pane on the first bar where each condition becomes true after being false.
Three alert conditions are provided: Condition 1 onset, Condition 2 onset, and both conditions active.
█ HOW TO USE
The indicator loads in its own pane below the chart. The aqua line is the deviation from the 200-day SMA; the orange line is the deviation from the 48-month SMA. A dotted gray line marks zero deviation, and dashed horizontal lines mark the two thresholds.
Because both series are pinned to daily and monthly resolutions through higher-timeframe requests, the indicator can be applied to any chart timeframe and will display the same deviation values. On intraday charts each bar shows the most recent completed daily and monthly readings when the confirmed-bars input is on. A daily chart is the natural resolution for routine monitoring, since Condition 1 is defined on daily closes.
Interpretation follows the two-condition design. Condition 1 identifies short-horizon stretch below the one-year trend; in the historical record of the S&P 500 from 1950 to 2018 it occurred roughly 21 distinct times, and it says nothing about whether a bear market has ended. Deep bear markets have triggered it repeatedly on the way to lower lows. Condition 2 identifies deep departure from the four-year trend; in the same record it was active in only a few dozen monthly observations, clustered into a small number of major bear market episodes. The red combined state corresponds to the deepest of those episodes. The indicator is a conditioning and context tool, not a complete trading system, and its author intended such conditions to modulate exposure around a baseline allocation rather than to switch fully in and out of a market.
█ SETTINGS
Condition 1: % below 200-day SMA. The deviation threshold at or below which Condition 1 is active. Default -10.
Condition 2: % below 48-month SMA. The deviation threshold at or below which Condition 2 is active. Default -20.
Use confirmed HTF bars (no repaint). When on, both deviations update only when the underlying daily or monthly bar closes, so signals do not change intrabar. When off, the current developing daily and monthly values are used and can change until those bars close. Default on.
█ WHAT MAKES IT ORIGINAL
The script combines two deviation measures from different fixed timeframes in a single pane and keeps both pinned to their native resolutions independently of the chart timeframe. Most deviation or distance-from-average tools compute on the chart resolution, which changes the meaning of the reading whenever the user changes timeframes. Here the 200-day and 48-month references are structural: they always mean one year of trading days and four years of months. The pairing is also specific: one fast sentiment-stretch measure and one slow value-stretch measure, with a distinct visual state for their intersection, which historically has been the signature of the deepest bear market conditions. The threshold logic, the non-repainting toggle, and the onset markers implement the mechanical portion of a published discretionary framework in reproducible form.
█ NOTES / LIMITATIONS
The 48-month SMA requires at least 48 completed monthly bars, and the 200-day SMA requires at least 200 completed daily bars. On symbols with shorter history the corresponding line returns na and does not render.
The thresholds were studied on a broad large-cap equity index (S&P 500 daily history, 1950 to 2018). On individual stocks, volatile sector indexes, or other asset classes, deviations of these magnitudes occur at very different frequencies and the default thresholds are not calibrated for them.
With the confirmed-bars input off, the current daily and monthly deviation values update intrabar and a condition can appear and disappear before the underlying bar closes. With it on, values lag by one completed daily or monthly bar.
Higher-timeframe values are obtained with request.security. On chart timeframes above daily or monthly, each chart bar displays the last completed reading available within that bar.
Condition 2 changes state only on monthly closes, so it is inherently slow and infrequent by construction.
The indicator generates context conditions, not trade signals with defined exits, position sizing, or risk management.
Gösterge

Fulcrum: volume-weighted average of a two-market ratioA volume-weighted average price computed on the relationship between two markets rather than on a single price, with dispersion bands built from the same weighted pass.
What it does
Most relative-value work is done by eye: put two markets on one chart, watch the spread, decide when it looks stretched. This computes that judgement. It takes the ratio between two instruments, defaults to the Nasdaq and S&P futures contracts, and runs a volume-weighted average through it with standard deviation bands around that average. It lives in its own pane on its own scale, so the symbol you happen to have loaded is irrelevant to the reading.
What is different here
Volume-weighted average price, standard deviation bands and ratio charting are all public methodology and I claim none of them. The reason this is one script rather than three is the problem in the middle, which is that a ratio has no volume of its own.
If you divide one market by another, the resulting series has a price and no trade behind it. Every implementation has to decide what to weight by, and most sidestep it by using a simple moving average, which throws away the participation information entirely.
Three specific choices follow from taking that problem seriously.
First, the weight is the geometric mean of both legs' volume rather than either leg alone or their sum. A bar where both markets traded heavily is genuine two-sided participation in the relationship. A bar where one leg was busy and the other was dead is not, and the geometric mean punishes that asymmetry in a way an average does not.
Second, the variance is accumulated in the same volume-weighted pass as the mean, using running sums of weighted value and weighted squared value. The bands therefore describe the dispersion of the ratio as it was actually traded, not the standard deviation of the drawn line. Those two are not the same number and the difference matters most exactly when participation is uneven.
Third, the ratio can be normalised by a volatility and rates term, and that term is frozen at each anchor reset rather than updated daily. This matters more than it sounds. The volatility and rates inputs move once a day, so on any anchor longer than a session the divisor would step in the middle of the window being averaged, and you cannot take a volume-weighted average of a quantity whose units change halfway through: the mean chases the step and the variance ends up describing the divisor instead of the two markets. Freezing it means the unit is constant across the window and the level shift lands exactly where the average restarts anyway. Both inputs are read from the prior session's confirmed close, so the value is identical live and on reload, and when either feed is unavailable the table reports the fallback rather than changing every number on screen silently.
How it works
The ratio is computed from both legs bar by bar, including a high and low estimate taken from the most and least favourable combination of the two legs' extremes, so the typical price is a real range rather than just the close.
Volume for the weighting is the geometric mean of the two legs. The average, and the variance around it, accumulate from the anchor point using running weighted sums.
The anchor resets on a schedule, and by default that schedule is chosen from your chart: session on intraday timeframes up to twenty minutes, weekly up to four hours, monthly above that. The point is that an anchor should outlive more than a handful of bars, and a session anchor on a four hour chart does not. You can override it if you disagree.
Bands are hidden for the first few bars after each reset, and the distance reading is suppressed along with them. Cumulative dispersion on two or three samples is tiny but not zero, and dividing by it turns a two-basis-point wiggle into a double-digit sigma reading. Until the window has enough behind it to have measured anything, the readout says it is warming up rather than inventing an extension, and the band alerts stay silent.
The ratio line is coloured by which side of the average it sits on, with a small dead zone so that a ratio hugging its average does not strobe the line bar by bar.
How to use it
Load it on any chart. The pane draws the relationship, not your symbol.
Read the distance in standard deviations rather than the absolute level, which is reported in the table. The absolute number depends on the multiplier and the divisor and means nothing on its own.
The table reports whether both feeds are live, the current average, the current ratio, the distance from the average in percent and in standard deviations, which zone the ratio occupies, and the divisor with a fallback flag if either input is missing. Check the feed status first if the numbers look wrong.
Change the two symbols to compare any pair you like. The scaling multiplier exists to bring the ratio into a readable range and has no effect on the shape.
What it cannot do
It describes a relationship and not a direction. A stretched ratio tells you the two markets have diverged from how they have recently traded together. It does not tell you which leg corrects, or whether either does, or when. Relationships can stay stretched for as long as the reason for the stretch persists.
Standard deviation bands assume a distribution that ratio spreads do not reliably follow. Two sigma here is a description of the recent sample, not a probability of anything.
Requesting two symbols means depending on two data feeds. If either is unavailable on your plan or a symbol is wrong, the reading is incomplete, which is why the table reports feed status rather than drawing a confident line over missing data.
The volatility and rates divisor falls back to fixed placeholder values when its feeds are missing. Those numbers are arbitrary and they change the scale of everything on screen. The table flags it.
There are no entries, exits or trade marks anywhere in this script, and no performance of any kind is claimed or implied.
On authorship
The methodology is public and I have said so plainly. The implementation is not borrowed. Every line is written from scratch, and no code in it is copied or adapted from another author's script on this platform or anywhere else.
Settings
The two ratio symbols and a scaling multiplier; the volatility and rates divisor with its two symbols and an on-off switch; anchor period with an automatic default, band multipliers, band visibility and the post-reset warm-up length; and visual settings for colours, line width, fill, labels, the info table and the extension tint.
Gösterge

Gösterge

[dom] % change correlationa lightweight way to compare % change across stocks, futures, volatility, rates, spreads, and other markets from the same view.
add symbols into any of the 5 groups with commas. each group can show the individual lines, an equal-weight cumulative basket, or both. the included groups are just editable defaults — mag 7, vol, implied correlation, rates/curve, and futures.
by default, % change uses tradingview-style close-to-close based on the selected anchor timeframe. d compares current price to the previous daily close, w to the previous weekly close, etc. you can switch a group to open-to-current instead, with an optional hard-coded globex session open for futures.
expressions work directly in the symbol box, so things like tvc:us10y - tvc:us02y (2s10s) or ratios can be plotted alongside normal tickers. parentheses are just the display name for an expression. @tf can be added to an individual symbol when its data needs a minimum source timeframe.
each group has its own visual scaling. linear is untouched data, while soft cap / outlier compression are useful when one market blows out the scale. scaling is display-only — the % values and cumulative calculations stay uncompressed.
endpoint labels show the ticker/value/% and , which matches the corresponding line in the style tab. colors, line appearance, text size/color, cumulative names, anchors, and group contents are all editable.
slower macro/reference feeds are automatically handled on intraday charts when needed, while exchange-traded symbols can use their normal tradingview session context.
performance change detection uses optipine by alien_algorithms, licensed under cc by-nc-sa 4.0. Gösterge

Fair Value Gap Strategy with Break of Structure ConfirmationDescription:
Fair Value Gaps are one of the most discussed concepts in modern price action trading, and one of the most misunderstood. Most traders who learn about FVGs start marking every three-candle imbalance they can find and entering every time price returns to one. The results are typically poor — not because the concept is wrong, but because the context around the FVG determines almost everything about whether it will hold or fail.
This strategy is built around one specific idea: a Fair Value Gap is only worth trading when it forms in the direction of a confirmed Break of Structure. Without that structural context, an FVG is just a gap in price — interesting, but not tradable on its own.
What a Fair Value Gap actually is
A Fair Value Gap forms when three consecutive candles create a price zone that the middle candle's body does not overlap. Specifically: the high of the first candle is below the low of the third candle (bullish FVG), or the low of the first candle is above the high of the third candle (bearish FVG). The gap represents a price range where no two-way trading occurred — price moved through it so quickly, driven by aggressive one-directional orders, that the normal auction process was bypassed. When price returns to that zone, the institutional logic is that unfilled orders from the original move are still resting there, creating a reaction point.
The reason most traders misuse FVGs is that they treat them as generic support and resistance. They are not. An FVG formed during a weak, low-conviction move in a choppy market has almost no institutional significance. An FVG formed during an aggressive displacement move that also breaks market structure, that is a different animal entirely.
What a Break of Structure is
Break of Structure (BOS) is the confirmation that the current swing direction has been validated by price taking out the most recent swing high (in an uptrend) or swing low (in a downtrend). In a series of higher highs and higher lows, each break above the prior swing high is a BOS confirming the uptrend. A BOS tells you the market is making a committed directional statement, not oscillating within a range.
The reason BOS matters for FVG trading is displacement. An aggressive candle that creates a BOS almost always leaves a Fair Value Gap behind it, the candle moves so fast that a price imbalance forms in its wake. That FVG is structurally significant because it was created by the same momentum that just confirmed the trend direction. When price returns to fill that gap, it is returning to the exact zone where institutional momentum entered the market and structural commitment was made.
How the strategy works
The strategy identifies bullish FVGs formed during upward BOS moves and bearish FVGs formed during downward BOS moves. A bullish FVG entry fires when price retraces into the gap after a confirmed bullish BOS, the high of candle one is plotted as the upper boundary, and price closing back inside that zone triggers the long entry. The stop is placed below the low of the FVG zone. The target is set at a 2x ATR multiple from the entry, scaled to current volatility rather than a fixed distance.
The BOS confirmation uses swing high and swing low detection with a defined lookback period. Only FVGs that form within a specified number of bars after a BOS are considered valid, older gaps that formed long before the most recent structural move are not traded, since the institutional orders that created them have likely already been filled or cancelled.
Why FVGs fail and how this addresses it
The most common failure mode for FVG strategies is trading imbalances in ranging, low-conviction markets where no structural context exists. The BOS filter directly addresses this by requiring that a swing high or low has been broken with enough conviction to register a structural shift before any FVG is considered valid. The second most common failure is holding positions through the entire FVG zone hoping for a reversal, this strategy enters at the gap boundary and exits at a defined ATR target rather than waiting for a full reversal, which keeps the average trade duration shorter and reduces exposure to the next structural shift invalidating the position.
What to examine in backtesting
FVG strategies are particularly sensitive to the lookback period used for swing detection and the maximum bar age allowed for a gap to remain valid. Shorter lookbacks detect more swing points and more FVGs but include lower-quality setups. Longer lookbacks produce fewer, higher-conviction structural shifts but generate fewer trades, which makes backtesting more difficult due to small sample sizes. Run the strategy across at least 200 completed trades before drawing any performance conclusions, and test separately across trending and ranging market environments. FVGs in ranging markets without genuine displacement will produce consistently poor results regardless of parameter tuning, this is expected behavior, not a failure of the strategy.
Shared for educational purposes and community discussion. This is not investment advice. Always backtest on your own instruments and timeframes with realistic commission assumptions before evaluating performance. Strateji

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 TradingView alerts from these conditions and use them as notifications for further analysis.
---
Trade smart. Study the chart. Manage your risk. Gösterge

Market Leadership Structure 3D [NeuralMarkets]OVERVIEW
Market Leadership Structure 3D compares six assets to show who is driving the group, who is following, and whether leadership is persistent or rotating.
It separates relative rank from absolute evidence. The top-ranked asset is always shown as the relative candidate, but the script reports NO CLEAR LEADER unless that candidate has sufficient evidence, separation from the runner-up, and at least one qualified outgoing relationship.
The indicator provides three views:
• Summary
• Leadership Terrain
• Parameter Stability
HOW IT WORKS
For every asset pair, the model compares both possible lead-lag directions.
Directional evidence blends the strongest positive lagged correlation with the average positive correlation across the tested lags.
Directional advantage A → B = Evidence A → B − Evidence B → A
An edge is retained only when it passes Minimum Forward Evidence and exceeds the reverse direction by Minimum Directional Asymmetry.
Qualified edges form a directed network using NeuralMarketsNetworkToolkit:
Net influence = Outbound influence − Inbound influence
The asset with the highest smoothed net influence receives rank #1. Recognition requires separate absolute-evidence and rank-separation thresholds, so being ranked first does not automatically imply meaningful leadership.
READING THE SUMMARY
Recognized — The accepted leader or NO CLEAR LEADER.
Relative candidate — The asset currently ranked #1, even when evidence is insufficient for recognition.
Absolute evidence — Strength and coverage of the candidate’s qualified outgoing relationships. It is not min-maxed and does not force the strongest asset to score 100.
Rank separation — Normalized gap between the top two assets. A small gap means leadership is closely contested.
Leader persistence — Share of the history window occupied by the current recognized leader. No-clear-leader bars remain separate states.
Clear-state share — Percentage of the history window in which any clear leader existed.
Rotation risk — LOW, MEDIUM, HIGH, or UNDEFINED when no leader is recognized.
Concentration — Whether directional influence is concentrated or broadly distributed.
The optional ranking table shows all six assets with net influence, absolute evidence, and normalized leadership.
LEADERSHIP TERRAIN
The waterfall mesh displays all six assets through recent history:
• X-axis: ticker
• Depth: historical slices from NOW toward older bars
• Height: normalized leadership, approximately −1 to +1
Above zero indicates more outbound than inbound influence. Below zero indicates follower behavior. Each historical ridge is drawn as a colored curtain from the zero plane, while rails connect each ticker through time. Older slices fade to keep the current structure prominent.
Look for:
• A sustained elevated ridge — persistent leadership
• A ridge rising toward NOW — strengthening leadership
• A ridge falling toward zero — fading leadership
• Two similar current peaks — close competition
• Rapidly alternating peaks — unstable rotation
• A flat surface near zero — weak directional structure
A leader marker appears only when the recognition requirements are satisfied.
PARAMETER STABILITY
This view rebuilds the network across a 6 × 6 grid:
• X-axis: relationship lookback
• Depth: maximum lag from 1 to 6 bars
• Height and color: robustness
Robustness combines 50% absolute evidence, 30% rank separation, and 20% agreement with the currently recognized leader. Cells without qualified outgoing coverage score zero.
Broad elevated regions indicate that leadership survives several parameter choices. An isolated peak suggests that the result is parameter-sensitive.
HOW TO USE IT
1. Choose a coherent universe
Use a preset or select six related assets. Interpretation is clearest when the group represents one theme, such as cross-asset ETFs, US sectors, or mega-cap stocks.
2. Check the recognized state
If the script reports NO CLEAR LEADER, do not treat the relative candidate as confirmed leadership.
3. Confirm evidence and separation
Prefer cases where the candidate has both meaningful absolute evidence and adequate distance from the runner-up.
4. Check persistence and rotation
Established leadership is generally more credible than a one-bar rank change. Falling persistence, a young leader age, or HIGH rotation risk signals a less settled structure.
5. Inspect Leadership Terrain
Check whether the leader remains above zero through history and whether its ridge strengthens toward NOW. Watch for challengers rising beneath it.
6. Inspect Parameter Stability
Prefer a broad plateau over one sharp peak. If leadership disappears after a small lookback or lag change, it is fragile.
7. Use alerts to trigger review
Alerts identify structural transitions. Combine them with price action, trend, liquidity, and risk management rather than treating them as automatic entries.
UNIVERSE PRESETS
Cross-Asset — SPY, QQQ, IWM, HYG, TLT, DBC
US Sectors — XLK, XLF, XLY, XLI, XLE, XLV
Mega-Cap — NVDA, MSFT, AAPL, META, AMZN, GOOGL
Custom — Six user-selected symbols
IMPORTANT SETTINGS
Relationship Lookback — Estimation window. Shorter values react faster but are noisier.
Maximum Lead Lag — Earlier bars tested. One lag equals one chart bar.
Rank Smoothing — Reduces rank churn at the cost of slower response.
Leadership History — Window used for persistence and rotation statistics.
Minimum Forward Evidence — Minimum blended relationship required for an edge.
Minimum Directional Asymmetry — Required advantage over the reverse direction.
Minimum Absolute Evidence / Rank Separation — Requirements for recognizing a clear leader.
Terrain spacing, skew, separation, and height settings change only the drawing—not the model.
KEY DEFAULTS
Relationship Lookback: 80
Maximum Lead Lag: 5
Directional Weight Power: 1.25
Rank Smoothing: 3
Leadership History: 100
Minimum Forward Evidence: 0.18
Minimum Directional Asymmetry: 0.02
Minimum Absolute Evidence: 15
Minimum Rank Separation: 5%
Terrain History: 8 slices spaced 5 bars apart
ALERTS
Clear Leader Rotation — Fires only on a direct transition between two different recognized leaders. A transition through NO CLEAR LEADER is not counted.
High Rotation Risk — Fires when risk changes to HIGH while a clear leader exists.
Clear Leader Established — Fires when the candidate first satisfies the recognition requirements.
Clear Leader Lost — Fires when the recognized leader no longer satisfies them.
LIMITATIONS
This indicator is descriptive market-structure research, not a calibrated probability or a claim of predictive alpha.
Lagged correlation and directional asymmetry do not establish causality. The model focuses on positive lead-lag relationships and does not explicitly represent inverse edges.
Parameter Stability measures current in-sample robustness, not out-of-sample forecasting performance. The terrain is a 2D perspective projection whose appearance depends on chart zoom.
Results depend on timeframe, available history, liquidity, and alignment between trading sessions. All six symbols should have sufficient data.
Use rank to identify the relative candidate. Use evidence, separation, persistence, terrain, and parameter stability to decide how seriously that ranking should be taken.
Gösterge

FD Volume Intelligence v1.8FD Volume Intelligence is a compact volume-confirmation tool designed to help traders judge whether a price move is supported by meaningful market participation.
Instead of duplicating TradingView’s native volume histogram, this indicator works as an intelligence layer alongside TradingView’s built-in Volume indicator. It focuses on Relative Volume (RVOL), participation strength, candle-body quality, directional context, and confirmed alerts while keeping the price chart clean.
Core Features
Relative Volume (RVOL)
Compares current volume with its moving-average baseline:
RVOL = Current Volume ÷ Volume MA
Volume MA Length
Default: 20
Participation Classification
Dry: below 0.70×
Average: 0.70× – 1.19×
Confirm: 1.20× – 1.49×
Strong: 1.50× – 1.99×
Extreme: 2.00×+
Candle Body Quality
Measures the candle body as a percentage of its total high-low range. This helps distinguish strong directional participation from high-volume indecision.
Default minimum body quality: 55%
Directional Volume Context
Displays whether current participation is associated with bullish or bearish price action.
Compact 2-Column Dashboard
Shows:
Volume status
RVOL
Strength
Direction
Body Quality
Current Volume vs MA20
Threshold settings status
Color-Coded Interpretation
Green = confirmed / positive participation
Orange = caution / weak candle quality
Red = bearish context
= informational metrics
White = neutral/static information
Threshold Protection
The script automatically maintains the correct logical hierarchy:
Dry < Confirmation < Strong < Extreme
If a user enters conflicting threshold values, they are automatically normalized internally.
No-Volume Handling
Symbols without usable volume data are clearly identified instead of generating misleading RVOL readings.
Confirmed Alerts
Alerts default to confirmation on candle close to reduce intrabar signal changes. The dashboard itself remains realtime.
How to Use
FD Volume Intelligence is intended as a confirmation tool, not a standalone buy/sell system.
For example:
RVOL < 0.70× → weak participation
RVOL ≥ 1.20× → meaningful participation begins
RVOL ≥ 1.50× → strong participation
RVOL ≥ 2.00× → unusually high activity; evaluate for expansion, breakout, absorption, or climax
A high RVOL reading becomes more useful when it is accompanied by good candle-body quality and relevant price structure.
For example:
RVOL 1.60× + Strong Body + Bull Direction
provides stronger confirmation than:
RVOL 1.60× + Weak Body
because the second condition may indicate absorption, rejection, or indecision despite elevated volume.
Recommended Setup
Use this indicator together with TradingView’s built-in Volume indicator.
Recommended built-in Volume settings:
MA Length: 20
Color based on previous close: ON
FD Volume Intelligence intentionally does not draw its own synthetic volume histogram. This keeps the indicator lightweight and avoids creating an additional pane or interfering with the price scale.
Alerts
Available alert conditions include:
Bullish Volume Confirmation
Bearish Volume Confirmation
Strong Bullish Participation
Strong Bearish Participation
Extreme Bullish Volume
Extreme Bearish Volume
By default, alert signals are confirmed at candle close.
Important
RVOL in this indicator uses a rolling Volume MA baseline. It is not a session-normalized or time-of-day Relative Volume calculation.
Volume should always be interpreted together with price action, market structure, liquidity, support/resistance, and the broader market context.
FD Volume Intelligence is a confirmation and analytical tool. It does not predict future price movement and should not be used as a standalone trading system. Gösterge

Market Network Confirmation [NeuralMarkets]Market Network Confirmation
Price tells you where the market moved. The network tells you whether the market moved together.
A strong index move can look convincing on the surface and still be structurally weak underneath.
Sometimes SPY rallies while only a handful of sectors participate.
Sometimes the index is flat while participation quietly broadens.
Sometimes the market looks healthy, but the sector network is already fragmenting.
This indicator was built to measure that difference.
What this indicator is designed to answer
Not:
"Is SPY up or down?"
But:
"Is the current move actually supported by the market underneath it?"
Market Network Confirmation analyzes the internal structure of the S&P 500 through its major sector ETFs and combines breadth with graph-based network analytics.
The result is a structural read on whether the current move is broad, narrow, deteriorating, recovering, or fragmented.
The Market as a Network
The indicator models the major SPDR sector ETFs as nodes in a financial network:
XLK - Technology
XLF - Financials
XLY - Consumer Discretionary
XLC - Communication Services
XLI - Industrials
XLV - Health Care
XLP - Consumer Staples
XLE - Energy
XLU - Utilities
XLB - Materials
XLRE - Real Estate
Rolling relationships between sector returns form the edges of the network.
The indicator then evaluates the structure using multiple graph-theory measures instead of relying on a single breadth statistic.
Market States
Broad Confirmation
The index move is supported by broad sector participation and a healthy underlying network.
This is the cleanest confirmation state.
Narrow Advance
SPY is moving higher, but participation is limited or leadership is overly concentrated.
The move may still continue, but the internal structure is less convincing.
Internal Divergence
SPY continues to advance while network health deteriorates underneath.
Price strength and internal structure are moving in opposite directions.
Recovery Broadening
SPY remains weak, but internal network conditions are improving.
Participation may be strengthening before the index itself fully recovers.
Distribution
Selling is broadly confirmed while network health remains weak.
The decline is not isolated to a small part of the market.
Fragmentation
The sector network breaks into weakly connected groups.
In this environment, the market behaves less like one coherent system and more like a collection of disconnected sectors.
Healthy Rotation
No major structural warning is present, but the market is rotating rather than moving with strong broad confirmation.
Network Health
The indicator creates a composite Network Health score from several graph measures:
• Mean network connectivity
• Strong-edge density
• Clustering coefficient
• Minimum Spanning Tree compactness
• Network entropy
• Decentralization
• Connected components
The score is normalized from 0 to 100.
A high Network Health score means the sector network is structurally coherent and broadly connected.
A low score means relationships are weaker, more fragmented, or overly concentrated.
Important:
High Network Health is not automatically bullish.
A market can be strongly connected while rising or while falling.
Network Health measures structural coherence, not direction.
Participation
Participation measures how many sectors are moving in the same direction as SPY.
For example:
SPY rising + 9 of 11 sectors rising
indicates broad bullish participation.
SPY rising + only 4 of 11 sectors rising
indicates a narrow advance.
Participation tells you how many sectors agree.
Network Health tells you how structurally connected the market is.
Those are not the same thing.
Move Confirmation
Move Confirmation combines:
• Network Health
• Sector Participation
• Distribution of influence across the network
This creates a 0-100 measure of how strongly the internal market structure supports the current index move.
The dashboard classifies confirmation as:
• High
• Moderate
• Low
This is not a probability of future returns.
It is a measure of structural agreement behind the current move.
Internal Trend
The indicator also tracks whether network health is:
• Improving
• Stable
• Deteriorating
This becomes useful when price and internal structure start moving in opposite directions.
For example:
SPY making new highs while Network Health declines
is very different from:
SPY making new highs while Network Health strengthens.
Sector Network
The Sector Network panel shows which sectors are:
• Supporting the current SPY direction
• Diverging from it
This gives a fast view of whether the move is broad or being carried by only a few sectors.
Network Diagnostics
For users who want to inspect the underlying graph structure, the indicator exposes the individual network metrics.
Connectivity
Average strength of relationships across the sector network.
Strong Edge Density
Percentage of strong relationships currently present in the network.
Clustering
Measures whether sectors are forming tightly connected groups.
MST Compactness
Uses a Minimum Spanning Tree to measure how efficiently the full sector network can be connected.
Entropy
Measures how broadly network influence is distributed.
Decentralization
Shows whether the network is broadly distributed rather than dominated by a small number of nodes.
Connectedness
Measures how close the system is to behaving as one connected network.
Fragmentation
Measures how disconnected the market has become.
Why use network analysis?
Traditional breadth tools usually count:
• Advancers vs decliners
• Positive vs negative sectors
• Stocks above moving averages
• New highs vs new lows
Those are useful.
But they do not measure how relationships between market components are changing.
Two markets can both have 8 bullish sectors.
One may be tightly connected and behaving as a coherent market.
The other may contain several disconnected clusters with very weak relationships.
Graph analysis can distinguish between those structures.
Practical Use
Market Network Confirmation can be used as a second layer of analysis when evaluating:
• Breakouts
• Trend continuation
• Rally quality
• Selloff confirmation
• Market breadth
• Sector rotation
• Internal divergence
• Recovery attempts
Research tool only. Not a standalone buy/sell signal. Gösterge

Gösterge

Trade Wzrd - Rift [Rampage Series]✨ THE RAMPAGE SERIES Is a growing series of roughly thirty volume-and-structure indicators, each built around the same conviction: price is the story, volume is the evidence, and levels are where the two negotiate. Every script in the series reads the market through traded volume - profiles, deltas, liquidity, nodes - and every single one ships with built-in automation . Not a bolted-on alert hack: a real order-string layer, the kind these tools almost never come with. Each Rampage script is an educational shell for learning and testing. None of them is a signal service.
Rift is the profile engine of the family - the one that finds the voids.
⚡ WHAT RIFT IS
Rift rebuilds a live volume profile every bar from lower-timeframe data - anchored to the clock (session, day, week) or to market structure (confirmed swing pivots) - and renders it as one clean instrument in the chart margin: delta-graded rows, Point of Control, Value Area, Point of Void, and the gaps where nobody traded at all.
Most profile tools show volume at price. Very few show the DELTA at each price - who was actually buying and who was selling inside every row - without paid order-flow data. Rift rebuilds that from the intrabar feed : each lower-timeframe bar's volume is signed by its direction and distributed across the price rows it traded through. The result is a profile that doesn't just say where volume traded, but who showed up to trade it.
The design rule is one region, one story. The profile lives in the right margin as a single silhouette - never scattered across your candles - while price itself carries only what you can act on.
✨ THE POINT OF VOID - WHY "RIFT"
Inside every Value Area there is one row where volume is thinnest - the weakest node, the place price met the least resistance on its way through. Rift measures it, names it, and marks it in orange: the Point of Void.
That thin crust is the rift. When price drives through it with delta support, it isn't hitting a wall - it's falling through open air, and it tends to travel. Sweeps fade. Bounces react. A void break continues. Three different events, three different trades, one engine that knows which is which.
⚡ THE THREE HUNTS
▶ Sweep & Reclaim - price pierces the Value Area edge and closes back inside. The raid that failed. Optionally gated by CVD divergence: price prints a new extreme while cumulative delta refuses to agree - the fingerprint of absorption.
▶ POC Bounce - rejection of the developing Point of Control, the single most-traded price of the profile.
▶ POV Void - price drives through the Point of Void with bar-delta support. Continuation, not a fade.
Every signal carries a typed chip (BUY · SWEEP, SELL · VOID...) with a hover deep-dive: node, ATR distance, wick %, bar delta, CVD, trend. Node-episode dedup keeps the engine honest - the same direction cannot re-fire at the same node inside the cooldown unless price has genuinely moved to a new one. An optional filter stack (ATR momentum guard, rejection wick, EMA trend, session window) sits underneath for those who want it.
✨ RISK THAT SITS ON STRUCTURE
Stops and targets can be framed two ways:
▶ ATR mode - the classic: stop a multiple beyond the sweep extreme, target by reward:risk.
▶ Structure mode - the Rift way: the stop sits a small buffer beyond the exact node the signal was born from, and the target is the nearest opposing profile node - POC, POV, or a Value Area edge. The trade is invalidated by structure breaking, not by an arbitrary distance, and it aims at the level the market itself built.
⚡ THE TRADE BOX - IT FREEZES WHERE IT DIES
Every signal draws its position as one object : entry line with a price tag, dashed stop, solid target, shaded risk and reward zones. The box follows price bar by bar - and the moment the stop or the target is hit, it freezes exactly there and leaves a TP HIT or SL HIT tag on the chart. Your past trades stay visible as they actually happened, not as you remember them. If one bar tags both sides, Rift calls the stop first - honest over flattering, always.
✨ LEVELS WITH MEMORY
▶ Retest lines - every signal draws the node it came from as a thin level that lives until breached or expired. Then, instead of vanishing, it stays on chart as darker dotted history: you can see which levels got filled and which held.
▶ Liquidity pools - swing highs and lows hold resting stops. Rails extend right until raided, die on the raid bar, and leave a faint swept zone when price pokes through and closes back inside. Where the stops were, where they got run.
▶ Level rails - neon POC, dotted POV, Value Area zone, and past profiles' POC/VAH/VAL kept on chart until crossed.
✨ HOW TO READ IT
• The margin profile is one silhouette: row width is volume, row color is delta, gold is the POC, orange is the POV, volume numbers print inside heavy rows (auto-inverted so they never camouflage), and the outline tint tells you who owns the profile - cyan buyers, pink sellers. The delta-% label on top opens the full stats on hover.
• A chip is a trade idea with receipts - hover it before you judge it.
• The trade box is the position. When it freezes, the idea is over; the tag says how.
• Dotted dark levels are filled history. Bright levels are still alive.
• The dashboard is the instrument panel: profile levels, session CVD, bar delta, regime, whale state, last signal, POC touches, automation state.
⚡ HOW TO USE
1) Add the script to a clean chart. Defaults are tuned for XAUUSD intraday; any symbol with volume works.
2) Choose the anchor: Period (D for day traders, W for swing) or Swing (structure-anchored).
3) Set the Intrabar Feed lower than your chart timeframe - 1-minute is the safe default.
4) Pick a signal model and a risk mode. ATR framing is the default; Structure framing ties stops and targets to the nodes.
5) Automation is built in.
✨ DEFAULTS
• Anchor: Period (Daily) | Intrabar Feed: 1m | Row height: ATR(14)/8 | Value Area: 70%
• Margin profile: 30 rows, offset 8 bars, max width 40 bars, outline + stats on | Signal cooldown: 8 bars
• Signals: All three models, CVD divergence 30 bars, bar delta confirm on, filters off
• Risk: ATR mode - stop ATR(14) × 1.5 beyond sweep, target 2R | Structure mode optional - node buffer 0.25 ATR, next-node target
• Trade box on | Filled retest lines kept as dotted history (20 max) | Liquidity rails on (pivot 5, 6 per side, swept zones on)
• Automation on: entries with SL/TP, close on opposite signal, close on TP/SL hit
⚡ LIMITATIONS AND HONEST NOTES
• This is an educational shell, not a validated strategy. It makes no performance claim and no edge claim. Nothing here is financial advice.
• Buy/sell split is estimated from intrabar direction (close vs previous close), not true tick-level bid/ask - on 1-minute data this is a close approximation; coarser feeds are coarser reads.
• Swing anchors and liquidity pivots confirm with a delay equal to the pivot length.
• The margin profile shows the current developing profile only; finished periods remain as POC/VAH/VAL level lines.
• TP/SL-hit detection is bar-based: on a bar that tags both, the stop is called first.
• Structure-mode targets depend on the developing profile; a fresh profile can move the nodes.
• Requires a symbol with volume data. Seconds feeds ("1S") depend on your plan's data availability.
• Past results do not predict future results. Not intended for non-standard chart types (Heikin Ashi, Renko, etc.). You own symbol mapping, risk, and execution choices.
No external links are required to understand or use this script.
Open source - Mozilla Public License 2.0.
Gösterge
