Relative Strength Screener [TradingFinder] RS Rotation Matrix🔵 Introduction
There are times when several markets or symbols move higher at the same time, but that does not mean they are showing the same level of strength. An asset may rise and appear strong at first glance, while its benchmark has performed even better over the same period. In that situation, simply knowing which symbol is moving higher is not enough. The more important question is which asset is actually outperforming the market and which one is beginning to lose relative strength.
This is where Relative Strength analysis becomes useful. Instead of evaluating each symbol independently, a group of assets can be compared against the same benchmark to identify where relative strength is concentrated. This approach can be applied to stocks, indices, funds, currencies, commodities, cryptocurrencies, or any other comparable group of symbols.
Alongside Relative Strength, Relative Momentum adds another important layer because a current leader may still look strong while its relative momentum is starting to weaken, while a weaker symbol may already be entering an improving phase.
The Relative Strength Screener is designed to make these changes easier to identify. It compares multiple symbols against a common benchmark, ranks them using Relative Strength and Relative Momentum, and organizes the results inside a Ranking Dashboard. At the same time, the Rotation Matrix classifies each symbol as Leading, Improving, Weakening, or Lagging, making it easier to distinguish current leaders, emerging strength, weakening leadership, and persistent relative weakness.
This structure helps traders understand where relative strength is currently concentrated and where that strength may be moving next without manually reviewing a large number of charts. The purpose of the screener is not to generate direct Buy or Sell signals. Its main role is to support asset selection, Market Leadership analysis, Market Rotation analysis, and the creation of a more focused watchlist for further technical analysis.
🔵 How to Use
After adding the Relative Strength Screener to the chart, the first step is to define the group of assets that will be compared with one another. This group, or universe, should ideally contain instruments that make sense to evaluate within the same context. For example, users can compare stocks from the same industry, different market indices, funds, commodities, currencies, cryptocurrencies, or any other group of related assets. The indicator supports between 2 and 10 active symbols, and all Relative Strength and Relative Momentum calculations are based on this selected universe.
By default, the screener includes 10 sector funds from the US stock market and uses AMEX:SPY as the Benchmark. This setup provides a practical example of Sector Rotation analysis. AMEX:XLK represents Technology, AMEX:XLF represents Financials, AMEX:XLE represents Energy, AMEX:XLV represents Health Care, and AMEX:XLY represents Consumer Discretionary. The remaining symbols are AMEX:XLP for Consumer Staples, AMEX:XLI for Industrials, AMEX:XLB for Materials, AMEX:XLU for Utilities, and AMEX:XLRE for Real Estate.
These default symbols are only an example universe. The Relative Strength Screener is not limited to sector funds or the US market. Users can replace every symbol and the Benchmark to build a universe that matches their own analysis.
For example, several stocks from the same industry can be compared against a sector index, global equity indices can be compared against a broader market benchmark, or a group of cryptocurrencies can be evaluated relative to a selected crypto market reference. The important point is that all selected instruments should belong to a meaningful comparison framework.
🟣 Benchmark and Scan Timeframe
The Benchmark is the reference point for all Relative Strength calculations. With the default settings, SPY serves as this reference. This means the screener does not simply measure whether a symbol has risen or fallen. Instead, it evaluates how that symbol performed relative to SPY.
For example, an asset may gain 3 percent during the selected period and appear strong when viewed independently. However, if the Benchmark gains 5 percent over the same period, the asset has still underperformed the broader market. This distinction separates Absolute Performance from Relative Performance and helps identify assets that are truly gaining leadership rather than simply moving in the same direction as the market.
The Scan Timeframe determines the timeframe used by the ranking engine. If the Scan Timeframe is set to Daily, for example, the Performance Length and Momentum Length are calculated using daily scan bars. When the Scan Timeframe is equal to or higher than the chart timeframe, the screener uses confirmed scan data. When the Scan Timeframe is lower than the chart timeframe, the indicator uses the latest available intrabar information to create the current snapshot.
The current data mode is displayed directly in the Ranking Dashboard. If lower timeframe data is unavailable or incomplete, the screener displays a visible NO DATA or LIMITED DATA message rather than presenting a potentially misleading ranking.
🟣 Relative Strength and Relative Momentum
The core model of the screener is built around two measurements : Relative Strength and Relative Momentum.
Relative Strength measures how each symbol has performed compared with the Benchmark over the selected Performance Length. A positive Relative Return means the symbol has outperformed the Benchmark, while a negative value means the symbol has underperformed it. This information is displayed directly in the vs Benchmark column.
For example, if the dashboard shows 0.80% ahead, the symbol has delivered approximately 0.80 percent more relative performance than the Benchmark over the selected period. If the table shows 0.45% behind, the symbol has underperformed the Benchmark by approximately 0.45 percent on a relative basis.
Relative Strength describes the current position of an asset, but that alone does not show whether the situation is improving or deteriorating. This is why the indicator also calculates Relative Momentum. Relative Momentum measures how Relative Return has changed compared with its value a specified number of scan bars earlier.
A symbol can therefore remain ahead of the Benchmark while its Relative Momentum becomes negative. In this case, the asset is still an outperformer, but its previous advantage is beginning to fade. In the opposite situation, a symbol may still be behind the Benchmark while Relative Momentum becomes positive. This can be an early sign that its previous weakness is starting to reverse.
🟣 Ranking Dashboard
The Ranking Dashboard is the main analytical component of the Relative Strength Screener. It ranks the selected symbols using a combination of Relative Strength and Relative Momentum, while also showing the evidence behind each position.
The purpose of the table is not simply to tell the user which symbol ranks first or last. It is designed to answer several more useful questions. Which assets deserve further attention? Which leaders are maintaining their strength? Which symbols are improving? Which leaders are beginning to fade? And how persistent has the current relative strength been?
🟣 Rank
The Rank column shows the current position of each valid symbol within the selected universe.
If a symbol displays 1 of 10, it currently has the highest Composite Score among the 10 valid symbols. A reading of 6 of 10 means that five other assets currently have a higher score.
Rank is useful for quickly identifying the strongest members of the universe, but it should not be interpreted in isolation. Ranking is relative to the selected symbols. A symbol can rank first and still be underperforming the Benchmark if the entire universe is weak.
For this reason, Rank should normally be analyzed together with the vs Benchmark column.
🟣 Takeaway and Evidence
The Takeaway / Evidence column converts several underlying calculations into a more readable conclusion. Instead of requiring the user to interpret Relative Return, Momentum, Rank, Rank Change, and Persistence separately, the screener combines these conditions into descriptive states.
Sustained Leadership indicates that the symbol is ahead of the Benchmark, its Relative Momentum is not negative, it is ranked inside the top group, and it has maintained that position for the required Leadership Confirmation period. This condition represents established relative leadership and can identify assets that deserve further technical analysis.
Outperforming, Fading appears when the symbol is still ahead of the Benchmark but its Relative Momentum has turned negative. The asset remains relatively strong, but its advantage is shrinking. This can provide an early warning that an existing market leader is losing strength.
Climbing the Ranks indicates positive Relative Momentum together with an improvement in Rank. A symbol that moves from Rank 8 to Rank 6 and then to Rank 4 is progressively strengthening compared with the other members of the universe.
Recovering, Still Behind describes a symbol that continues to underperform the Benchmark but is showing positive Relative Momentum and improving Rank. This is not confirmed leadership. Instead, it represents an early recovery phase that may justify placing the asset on a watchlist.
Behind, No Recovery indicates that the symbol is behind the Benchmark and is not showing meaningful improvement in either Momentum or Rank. In a Relative Strength based selection process, these assets would normally receive lower priority.
Mixed Evidence is displayed when the available signals do not point in the same direction. Momentum may be improving while Rank remains weak, or other confirmation conditions may not yet be satisfied. The indicator intentionally keeps the conclusion neutral in these situations rather than forcing a stronger interpretation.
If one or more symbols in the universe lack valid data, the dashboard can display Incomplete Comparison. If the individual symbol itself does not have enough valid history, the result becomes Insufficient Data. Since Percentile and Rank calculations depend on cross sectional comparison, the indicator avoids producing strong conclusions when the available universe is incomplete.
🟣 vs Benchmark
The vs Benchmark column shows the actual relative performance of each symbol against the selected Benchmark.
An ahead value means the asset has outperformed the Benchmark over the configured Performance Length. A behind value means it has underperformed.
This column is especially important because it prevents a high Rank from being mistaken for genuine market outperformance. A symbol may rank first among the selected assets while still showing 0.20% behind. In that case, it is the strongest member of the selected universe, but it has not yet outperformed the Benchmark itself.
🟣 Score
The Score column combines Strength Percentile and Momentum Percentile into a single comparison score.
With the default settings, 65 percent of the score is assigned to Strength and 35 percent is assigned to Momentum. A higher score means the symbol has a stronger combination of Relative Strength and Relative Momentum compared with the other members of the universe.
The score is not a probability measurement. A value of 90 does not mean there is a 90 percent probability of a profitable trade, a 90 percent win rate, or a 90 percent probability that the asset will rise. It is simply a relative comparison metric used to rank the selected symbols.
🟣 Top Group Streak
The Top Group Streak shows how long a symbol has remained inside the strongest portion of the selected universe.
The top group is defined using the top quartile. In a universe of 10 symbols, this generally corresponds to the top three ranked assets.
If a symbol displays 8 scans, it means that the asset has remained in the top group for eight consecutive ranking checks. This helps distinguish a temporary jump in Rank from more persistent market leadership.
Top Group Streak does not count how many consecutive times a symbol has outperformed the Benchmark. It only measures persistence inside the top ranking group.
🟣 Rank Change
The Rank Change column shows how the position of a symbol has changed since the previous completed ranking check.
A value such as ↑ 2 places means the symbol improved by two ranking positions. A value of ↓ 2 places means it dropped by two positions. Unchanged means the ranking remained the same.
Current Rank shows where the asset is now, while Rank Change helps show the direction in which it is moving.
For example, a symbol currently ranked fifth may have improved from Rank 9 over the previous scans. This can indicate strengthening relative performance. Another symbol may still hold Rank 3 but may have fallen from Rank 1, suggesting that its leadership is beginning to deteriorate.
🟣 Rotation Matrix
The Rotation Matrix provides a faster and more visual summary of the entire universe. While the Ranking Dashboard shows detailed numerical evidence for every symbol, the Rotation Matrix focuses on the relationship between Strength and Momentum.
The matrix compares Strength Percentile and Momentum Percentile using the 50th percentile as the default boundary. Every valid symbol is then classified as Leading, Improving, Weakening, or Lagging.
A symbol in the Leading state has both Strength and Momentum in the stronger half of the universe. These assets represent the current relative leaders. If a symbol remains in Leading for several scans and the Ranking Dashboard also confirms Benchmark outperformance and a strong Top Group Streak, the evidence for persistent leadership becomes stronger.
An Improving symbol still has Strength in the weaker half of the universe, but its Momentum has moved into the stronger half. This state is particularly useful for identifying Emerging Leadership. The asset is not yet a confirmed leader, but its Relative Performance has started to improve.
One of the most important positive rotation sequences is : Lagging → Improving → Leading
This progression shows an asset moving from relative weakness into improving momentum and eventually into relative leadership.
A Weakening symbol still has above median Strength but below median Momentum. The asset remains relatively strong, but the quality of that strength is deteriorating.
A Leader moving into Weakening may be showing the first signs of losing its previous advantage.
If the deterioration continues, the sequence may become : Leading → Weakening → Lagging
However, a Weakening symbol can also return to Leading if Momentum recovers. For this reason, Weakening should be treated as a change in relative conditions rather than an automatic Sell signal.
A Lagging symbol has both Strength and Momentum in the weaker half of the universe. These assets usually receive lower priority in a Relative Strength selection process. However, movement out of Lagging can be important. A transition from Lagging to Improving can be the first indication that the relative trend is beginning to change.
🟣 Combining the Ranking Dashboard and Rotation Matrix
The most useful way to analyze the indicator is to read the Rotation Matrix and Ranking Dashboard together.
The Rotation Matrix provides the first overview. It shows where Relative Strength is concentrated and which assets are currently Leading, Improving, Weakening, or Lagging. The Ranking Dashboard then provides the numerical evidence needed to understand the quality of each state.
For example, if a symbol appears in Leading, the trader can check the Dashboard to determine whether it is actually ahead of the Benchmark, how high it ranks, how strong its Score is, how long it has remained in the top group, and whether its Rank is improving or deteriorating.
Two symbols can both appear in Leading while having very different profiles. One may be ahead of the Benchmark, ranked first, and have a long Top Group Streak. Another may have only recently entered the stronger half of the universe and have little persistence. The Rotation Matrix places both in the same broad state, while the Ranking Dashboard explains the difference between them.
The same principle applies to Improving. A symbol may be improving while still remaining behind the Benchmark. Another may already have crossed into relative outperformance. Rank Change can then show whether the improvement in Momentum is also beginning to affect its broader ranking.
For Weakening assets, the combination of negative Relative Momentum, declining Rank, and lower persistence can provide stronger evidence that leadership is deteriorating. If Rank remains stable and Momentum weakness is temporary, the condition may simply represent a short pause in relative strength.
It is important to understand that the Dashboard conclusions and Rotation Matrix do not use identical logic. The Rotation Matrix is based only on Strength Percentile and Momentum Percentile. The Dashboard also considers Relative Return, Relative Momentum, Rank Change, and Persistence.
For this reason, a symbol can appear as Improving in the Rotation Matrix while its Dashboard conclusion still shows Mixed Evidence. These outputs are not contradictory. They describe different dimensions of the same relative strength analysis.
🟣 Practical Workflow
A practical workflow begins by selecting a meaningful universe and an appropriate Benchmark. The Scan Timeframe, Performance Length, and Momentum Length can then be adjusted according to the intended analysis horizon.
The Rotation Matrix can first be used to identify current leaders, emerging strength, weakening leadership, and persistent laggards. The Ranking Dashboard can then be used to verify Benchmark Relative Performance, Rank, Score, Rank Change, and leadership persistence.
Symbols in Leading can be examined for current market leadership. Improving assets can be monitored for emerging Relative Strength. Weakening can help identify existing leaders that are beginning to lose Momentum, while Lagging identifies the weaker part of the selected universe.
The strongest or most interesting candidates can then be moved into a focused watchlist for further analysis of Price Structure, Trend, Liquidity, Entry Conditions, and Risk Management.
🔵 Settings
Number of Symbols : Determines how many symbols are included in the Relative Strength Screener. Users can select between 2 and 10 symbols. Only the first selected number of symbol inputs will be included in the Ranking Dashboard and Rotation Matrix.
Symbol 1 to Symbol 10 : Defines the assets used in the Relative Strength comparison. Each symbol can be replaced with any preferred stock, index, fund, currency, commodity, cryptocurrency, or other supported TradingView symbol. For more meaningful results, the selected symbols should belong to a logically comparable market universe.
Benchmark : Defines the reference asset used for all Relative Strength calculations. Each selected symbol is compared with this Benchmark to determine whether it is outperforming or underperforming the reference market. The default Benchmark is SPY.
Scan Timeframe : Determines the timeframe used by the Relative Strength ranking engine. The Scan Timeframe can be higher than, equal to, or lower than the chart timeframe. Higher and equal timeframe calculations use confirmed data, while lower timeframe settings use the latest available intrabar data.
Performance Length : Defines the number of Scan Timeframe bars used to calculate Benchmark Relative Performance. Higher values measure Relative Strength over a longer period, while lower values make the calculation more responsive to recent performance changes.
Momentum Length : Determines the period used to measure changes in Relative Performance. It compares the current Relative Return with its previous value to identify whether Relative Strength is improving or deteriorating.
Momentum Weight % : Defines how much influence Relative Momentum has on the final Score. The remaining percentage is automatically assigned to Relative Strength. For example, the default value of 35 percent creates a Score based on 35 percent Momentum and 65 percent Strength.
Leadership Confirmation : Defines how many consecutive Top Group checks are required before a symbol can be classified as having Sustained Leadership. Higher values require longer persistence before leadership is confirmed.
Symbol : Selects the asset displayed in the Relative Performance Oscillator. The selected symbol should be one of the active screener symbols. If another symbol is selected, Symbol 1 is used automatically.
Performance Length : Determines the lookback period used to calculate the selected symbol's performance relative to the Benchmark in the oscillator. Unlike the Ranking Dashboard, this setting is calculated using chart timeframe bars.
Smoothing : Defines the smoothing period applied to the Relative Performance line. Higher values create a smoother oscillator with less short term fluctuation, while lower values make the line more responsive.
Signal Length : Determines the EMA period used for the oscillator Signal Line. The relationship between the Relative Performance line and its Signal Line can be used to evaluate short term acceleration or deceleration in relative performance.
Show Signal : Enables or disables the oscillator Signal Line and the Relative Acceleration ribbon.
Show Last Value : Enables or disables the label showing the selected Symbol and Benchmark pair together with the latest Relative Performance value.
Send Alerts : Enables or disables the Relative Strength event engine. When enabled, alerts can be generated for Leader Group entries, Rotation State changes, Leadership Loss, and Leadership Confirmation events.
Leader Rank : Defines the Top N ranking group used for Leader Entry and Leadership Loss alerts. For example, when this value is set to 3, a symbol entering the Top 3 can trigger a Leader Entry event, while leaving the Top 3 can trigger a Leadership Loss event.
Show Ranking Table : Shows or hides the Relative Strength Ranking Dashboard on the chart.
Ranking Table Size : Adjusts the visual size of the Ranking Dashboard. Available options include Tiny, Small, Normal, and Large.
Ranking Table Position : Determines where the Ranking Dashboard appears on the chart. Users can select from nine positions using Top, Middle, or Bottom combined with Left, Center, or Right.
Show Rotation Matrix : Shows or hides the Rotation Matrix on the chart.
Matrix Table Size: Adjusts the visual size of the Rotation Matrix. Available options include Tiny, Small, Normal, and Large.
Matrix Table Position : Determines where the Rotation Matrix appears on the chart. Users can select from nine available positions. A different position from the Ranking Dashboard should be selected when both tables are enabled to prevent overlap.
🔵 Conclusion
Markets rarely move in a perfectly uniform way. While one group of assets is gaining leadership, another may be losing momentum, and somewhere else a previously weak symbol may already be starting to recover. Looking at price alone can make these shifts difficult to recognize, especially when several assets are moving in the same direction at the same time.
The Relative Strength Screener is built to make that rotation easier to see. By comparing a selected group of symbols against a common Benchmark, the indicator helps reveal which assets are truly outperforming, which ones are improving, and which current leaders are beginning to fade. The Ranking Dashboard adds the numerical evidence behind that comparison, while the Rotation Matrix turns the same market into a clearer picture of Leading, Improving, Weakening, and Lagging assets.
The goal is not to replace chart analysis or generate an automatic Buy or Sell signal. The value of the screener comes earlier in the decision process, when the trader is still asking which symbols deserve attention in the first place. Once the stronger, improving, or weakening assets have been identified, the next step is to return to the chart and evaluate Price Structure, Trend, Liquidity, Entry Conditions, and Risk Management.
Indicator

Momentum Saturation Zones [JOAT]Momentum Saturation Zones
Introduction
Momentum Saturation Zones is an open-source indicator that detects when momentum has reached an extreme and then begins pulling back, marks the price level where that extreme occurred as a zone, and tracks the zone's structural validity until price either respects or invalidates it. The premise is that momentum peaks and troughs at significant price levels leave structural imprints — areas where the market demonstrated conviction — that subsequently act as reference points for support or resistance.
The key differentiator from a simple overbought/oversold indicator is the composite strength scoring: a zone is only created when a configurable minimum score is reached, incorporating the momentum extreme level, the magnitude of the pullback, volume at the peak bar, and whether a divergence is present.
Core Concepts
1. Multi-Source Momentum
The momentum signal is selectable from five sources: RSI, Rate of Change (normalized), MFI, Stochastic RSI, or a composite average of all four. The composite mode averages RSI, normalized ROC, MFI, and StochRSI into a single signal, reducing single-indicator noise while retaining each component's contribution:
float momSeries = (rsiRaw + rocNorm + mfiRaw + stochD) / 4.0
2. Adaptive Pullback Detection
The saturation trigger fires when momentum has pulled back from a rolling peak by more than a configurable percentage threshold. The threshold is adaptive — scaled by the current ATR relative to its 50-bar average. In high-volatility regimes the required pullback is larger; in low-volatility regimes it is smaller. This prevents premature triggers in noisy markets and late triggers in calm ones.
3. Composite Strength Scoring (0-100)
Each potential zone is scored before creation. The score combines four components: how extreme the momentum peak was (0-40 points), how far beyond the threshold the pullback reached (0-20 points), the volume ratio at the peak bar relative to average (0-20 points), and whether momentum divergence is present (0-20 points). Only zones meeting the minimum score gate are created:
float extrem = math.max(0.0, math.min(40.0, (peakAbsMom - 50.0) * 40.0 / 50.0))
float pbScore = math.max(0.0, math.min(20.0, (actualPb - adaptPct) * 2.0 + 10.0))
float volScore = math.max(0.0, math.min(20.0, (volRatio - 1.0) * 20.0))
float divScore = bearDiv and i_useDiv ? 20.0 : 0.0
4. Zone Anchor Logic
Bear resistance zones are anchored at the candle high of the peak bar with the zone extending upward by one ATR multiple — the bottom edge sits exactly at the candle high so price must reach up to touch the zone. Bull support zones are anchored at the candle low of the trough bar with the zone extending downward — the top edge sits at the candle low so price must come back down to touch it.
5. Zone Lifecycle and Touch Counting
Each zone tracks how many times price has returned to it (touch counter displayed in the label). When price closes beyond the invalidation offset, the zone is deleted entirely — no ghost boxes remain. A proximity check before creation prevents duplicate zones from stacking at the same price level.
Features
Five momentum sources: RSI, ROC, MFI, StochRSI, or Composite average
Adaptive pullback threshold: ATR-normalized trigger scaled to current volatility regime
Composite strength scoring (0-100): Extremity, pullback depth, volume, and divergence components
ATR-anchored zones: Three-layer gradient zones (outer, mid, core) with center line
Proper candle anchoring: Resistance bottoms at candle high; support tops at candle low
Touch counting: Zone labels update each time price retests the zone
Proximity deduplication: No duplicate zones within 1.5 ATR of same-side existing zones
Clean invalidation: Zones deleted entirely on invalidation — no ghost boxes
Divergence detection: Momentum divergence contributes bonus points to strength score
Candle coloring: Candles tinted when price is inside or within 0.5 ATR of a valid zone
Dashboard: Momentum value, pullback threshold, volatility regime, active zone count, and directional strength scores
Input Parameters
Momentum Configuration:
Momentum Source: RSI, ROC, MFI, StochRSI, or Composite (default: Composite)
Momentum Length: Period for all momentum calculations (default: 14)
Peak Lookback Bars: Rolling window for peak/trough detection (default: 50)
Saturation Trigger:
Adaptive ATR Threshold toggle (default: on)
Pullback % from Peak: Required pullback to trigger (default: 10%)
RSI Overbought/Oversold: Absolute extreme levels for gate (default: 70/30)
Cooldown Bars: Minimum bars between zone creation events (default: 10)
Zone Settings:
Max Active Zones: Simultaneous zone cap (default: 4)
ATR Length: ATR period for zone sizing (default: 14)
Zone Width (x ATR): Zone height as ATR multiple (default: 1.0)
Invalidation Offset %: Margin beyond zone for invalidation trigger (default: 0.3%)
How to Use This Indicator
Step 1: Read the Zone Strength
Zones display their strength score (0-100) in the label. Higher-scoring zones represent confluences of multiple factors and are historically more likely to produce price reactions.
Step 2: Use Touch Count for Context
A zone touched twice and holding is more significant than a freshly-created zone. A zone touched three or more times that eventually breaks is exhausted — expect the break to accelerate.
Step 3: Watch for Candle Color Changes Near Zones
The candle coloring activates when price enters the zone or comes within 0.5 ATR of it. This provides a passive alert that price is approaching a structural reference.
Indicator Limitations
Momentum peaks do not always coincide with price extremes — the zone is placed at the price of the peak momentum bar, which may differ from the highest/lowest price in the lookback
In strongly trending markets, zones on the trend side may be repeatedly invalidated as trend continues
The strength score is a composite heuristic, not a backtested predictor of zone success rate
Originality Statement
The composite strength scoring system — combining momentum extremity, pullback depth, volume, and divergence into a single 0-100 gate — applied to zone creation is the original analytical contribution. The proper candle-edge anchoring (resistance bottom at candle high, support top at candle low), proximity deduplication, and clean deletion on invalidation are implementation details not present in most published support/resistance zone indicators.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Momentum saturation zones are historical reference levels and do not predict future price reactions. Trading involves substantial risk of loss.
-Made with passion by jackofalltrades
Indicator

Structure Fracture Map [JOAT]Structure Fracture Map is an open-source market structure and imbalance zone indicator that combines Fair Value Gap detection with a dynamic quality scoring system, a dual strength bar visualization inside each zone, and a real-time Break of Structure and Change of Character engine. It provides a single-indicator view of where price has left imbalances, how significant those imbalances are, and where structural shifts have occurred.
The problem with most FVG indicators is static treatment — a gap is detected and displayed with no differentiation between a high-quality gap formed on a strong impulse with above-average volume and a weak gap formed on a low-volume, narrow-range bar. Structure Fracture Map scores every FVG at formation and continuously updates that score based on mitigation progress, age, and trend alignment, ranking all active zones so that only the most institutionally relevant ones remain visible.
Core Concepts
1. Fair Value Gap Detection
A bullish FVG exists when the current bar's low is above the high of the bar two positions prior — a three-bar pattern where the middle bar's range creates a gap that price has not filled. A bearish FVG is the inverse. Detection is confirmed only on completed bars to prevent repainting.
2. Four-Component Strength Score
Each FVG receives an initial strength score from four components: gap size relative to ATR(14) scaled to 40 points, volume relative to 20-bar average scaled to 30 points, trend EMA alignment scaled to 20 points, and candle body-to-range ratio scaled to 10 points. The score is recalculated every bar, with a small age penalty and a mitigation penalty applied as price partially fills the gap:
float totalStrength = (gapScore * 40) + (volScore * 30) + (trendScore * 20) + (candleScore * 10)
fvg.qualityScore := totalStrength - fvg.mitigation * 50 - fvg.age * 0.1
3. Dual Strength Bars
Inside each FVG box, two small bars are rendered — one showing bearish pressure score and one showing bullish pressure score as a proportion of the box width. The relative lengths reflect which directional force is currently dominating at that imbalance zone.
4. Mitigation Tracking
Mitigation is computed as the ratio of how far price has penetrated into the zone to the total zone height. A fully mitigated FVG is removed from the display. Partially mitigated FVGs remain visible with their score updated downward, reflecting reduced structural significance.
5. Break of Structure and Change of Character
Pivot highs and lows track the most recent confirmed structural levels. A Break of Structure (BOS) occurs when price closes through the last confirmed pivot in the current structural direction — confirming continuation. A Change of Character (CHoCH) occurs when price closes through the last confirmed pivot against the current direction — signaling a potential structural shift. Both events are labeled with a horizontal line at the break level.
Features
FVG detection with quality scoring: Bullish and bearish fair value gaps detected and scored by gap size, volume, trend alignment, and candle quality
Dynamic score updates: Quality scores recalculated each bar with age decay and mitigation penalty
Top-N zone ranking: Only the highest-scoring active zones displayed; lower-quality zones removed as better ones form
Dual strength bars: Bearish and bullish strength bars inside each zone show directional pressure balance
Mitigation tracking: Zones removed automatically when fully mitigated; partial mitigation reflected in updated score
BOS and CHoCH detection: Structural break events labeled with horizontal level lines and text identifiers
HH / HL / LH / LL pivot labels: Confirmed swing pivot types labeled on chart for structural context
Swing level extension lines: Dotted lines at current unbroken swing levels extending to right edge of chart
Four color themes: Phantom, Neon, Classic, Solar
Non-repainting: All detection gated by barstate.isconfirmed
Alert conditions: New top-ranked FVG, BOS bull, BOS bear, CHoCH bull, CHoCH bear, FVG touched
Dashed FVG borders: Each Fair Value Gap box has a dashed colored border matching its directional bias — teal for bullish, pink for bearish
Clean pivot arrow labels: HH, HL, LH, LL events rendered as minimal text arrows (▲ HH etc.) with no background box, positioned above/below bars without obstructing price action
Short BOS/CHoCH event lines: Break of Structure and Change of Character events marked with compact 6-bar horizontal lines and right-anchored labels — no full-width horizontal clutter
Resistance/Support swing extensions: Nearest unbroken swing high labeled "Res" and swing low labeled "Sup" at right edge, updated each bar
Structural bias background: Subtle bull/bear background tint driven by current HH/HL or LH/LL structural sequence
Trend EMA reference line: 50-period EMA plotted in elite theme color as a trend context reference
Input Parameters
FVG Zones:
Show Top Zones: Maximum number of ranked zones displayed (default: 10)
Max Stored FVGs: Maximum FVGs tracked in memory (default: 50)
Volume MA Length: Volume average for scoring (default: 20)
Trend EMA Length: Trend alignment reference (default: 50)
Show Strength Bars toggle
Bull/Bear FVG colors
Market Structure:
Swing Lookback: Bars required on each side for pivot confirmation (default: 10)
Show Structure Labels toggle
Show BOS Events toggle
Show CHoCH Events toggle
Show Swing Level Lines toggle
How to Use This Indicator
Step 1: Read Zone Rankings
Zones with higher quality scores represent structurally more significant imbalances. Focus on fresh (un-mitigated) zones with strong scores for potential reaction areas.
Step 2: Monitor Dual Strength Bars
A bullish FVG whose bearish strength bar is growing indicates that selling pressure is building within the zone. When the bearish bar exceeds the bullish bar, the zone may be losing its bullish character.
Step 3: Use BOS and CHoCH for Context
A BOS confirms continuation. A CHoCH is a warning that the current structural bias may be reversing. CHoCH events near high-quality FVG zones are particularly significant structural signals.
Step 4: Watch Swing Level Extensions
The dotted right-edge lines show the nearest unbroken swing high and low — the next levels where a BOS or CHoCH could occur. These levels frame the most immediate structural breakpoints.
Indicator Limitations
Pivot confirmation requires a lookback offset. BOS and CHoCH events are labeled after confirmation, not on the bar that caused them
FVG quality scores include volume as a factor. On instruments where volume is less meaningful, the score may rank gaps differently than expected
Age penalty causes long-standing FVGs to lose score over time even if they remain structurally valid
This indicator identifies existing imbalances and structural events. It does not predict where price will go next
Originality Statement
A dynamic per-bar quality score for FVGs that decays with age and mitigation, combined with a top-N ranking system that actively removes lower-quality zones when better ones form, is not replicated in existing open-source Pine Script v6 FVG publications
Dual strength bars rendered inside each FVG box — showing the current bull-versus-bear directional pressure balance within that specific imbalance zone — is an original visualization concept
Combining FVG quality ranking, mitigation tracking, BOS/CHoCH structural event detection, and pivot type labeling in a unified indicator with a single clean overlay is an original integration
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Trading involves substantial risk of loss. Fair Value Gaps and structural events are based on historical price data and do not predict future price direction. The author accepts no responsibility for trading losses resulting from use of this indicator.
Made with passion by jackofalltrades
Indicator

Helix Trend Ensemble [JOAT]Helix Trend Ensemble
Introduction
Helix Trend Ensemble is an open-source trend overlay built around a three-member weighted ensemble. Instead of relying on one moving average or one crossover, Helix evaluates multiple configurable members, normalizes slope behavior, and produces a consensus trend state only when enough internal agreement is present.
The problem Helix solves is false certainty. Single-line trend tools are easy to read but easy to break. Multi-line tools often create clutter without resolving disagreement. Helix is designed to preserve a clean chart while still exposing the quality of alignment between fast, intermediate, and structural trend engines.
Core Concepts
1. Multi-Member Trend Architecture
Three independent members can each use different MA types, smoothing methods, lengths, and weights. This allows the ensemble to mix responsiveness with structural stability.
2. Weighted Consensus
The final state is not a simple majority vote. Each member contributes according to its configured weight, and the ensemble requires sufficient agreement before it promotes a directional state.
3. Slope Normalization
Raw slope values are normalized so the dashboard can express trend energy in a stable way across different length combinations.
4. Filter Layer
ATR and ADX filters help suppress weak trend states and reduce low-quality directional transitions.
5. Confirmed Regime Transitions
Directional state changes are only recognized on confirmed bars, which keeps the ensemble consistent with real-time use.
Features
Three fully configurable members: Each member supports multiple MA and smoothing combinations
Weighted consensus engine: Final state depends on internal agreement quality, not one crossover
Normalized slope score: Slope behavior is translated into a stable strength readout
Ribbon and cloud system: Trend geometry is expressed through layered fills instead of cluttered markers
Optional candle coloring: Price bars can reflect the ensemble state without altering logic
Top-right dashboard: Regime, consensus, strength, slope, agreement, filters, and last flip are summarized continuously
How to Use This Indicator
Step 1: Read regime and consensus together
A bullish or bearish state is more meaningful when consensus is high and filters are passing.
Step 2: Watch slope and strength
An aligned ensemble with weakening slope often signals late-trend conditions rather than fresh expansion.
Step 3: Use Helix as a bias filter
Helix works well as a directional framework for execution models that need a clean trend gate.
Indicator Limitations
Longer member lengths will intentionally delay reversals
High responsiveness settings can increase whipsaws
Consensus does not eliminate all false trends; it only improves structural filtering
The script is a trend-classification tool, not a full strategy
Originality Statement
Helix Trend Ensemble is original in the way it combines configurable member diversity, weighted consensus, slope normalization, and clean institutional visualization into one open-source trend framework.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Trend-state tools can fail during rapid reversals, compressed markets, or structurally irregular conditions. Use proper risk control at all times.
Indicator

Velox Structure Ribbon [JOAT]Velox Structure Ribbon
Introduction
Velox Structure Ribbon (VSR) is an open-source multi-band trend structure ribbon that uses a volatility-normalized, dynamically-spaced band system to visualize how far price has extended from its trend baseline and in which direction. The ribbon is anchored by a dual SMEMA core — a fast and slow double-smoothed moving average — and radiates six equidistant bands above and below the baseline, with spacing determined by the smoothed average candle range. Each band that price has penetrated adds one point to a 0-3 bull or bear structure score. A 0-100 composite trend strength score combines band penetration with RSI momentum. Volume confirmation and RSI filters are available to sharpen signal quality.
The problem VSR solves is that standard envelopes and Bollinger Bands use fixed or volatility-scaled offsets that can cluster bands too tightly in low-volatility environments and spread them too far in high-volatility ones. VSR normalizes band spacing using the market's own smoothed candle range, meaning band width automatically contracts in quiet markets and expands in active ones. This keeps the structure score meaningful across all conditions: three bands penetrated in a quiet market represents the same degree of extension relative to current volatility as three bands penetrated in a volatile market.
Core Concepts
1. SMEMA Ribbon Core
The ribbon center uses two SMEMA lines — slow (full period, default 20) and fast (half period). The slow SMEMA defines trend direction: sloping upward means the trend is bullish, downward means bearish. The fill between fast and slow creates a visual ribbon that contracts during consolidation and expands during trends:
float smemaSlow = smema(close, smemaLen)
float smemaFast = smema(close, math.max(int(smemaLen / 2), 3))
bool trendUp = smemaSlow > smemaSlow
bool trendDn = smemaSlow < smemaSlow
2. Volatility-Normalized Band Spacing
The step unit for band placement is SMEMA applied to the high-low range over a long smoothing period (default 100 bars). This produces an adaptive measure of the average candle body size. Each of the six bands is placed at integer multiples of this step above and below the slow SMEMA:
float step = smema(high - low, stepSmooth)
float up1 = smemaSlow + step * 1
float up2 = smemaSlow + step * 2
float up3 = smemaSlow + step * 3
Because the step automatically adjusts to market volatility, the bands always represent meaningful structural extensions rather than arbitrary percentage offsets.
3. Bull and Bear Structure Scoring
Each bar, the indicator counts how many upper bands price has broken through (bullish penetration) and how many lower bands (bearish penetration). Each penetrated band adds one point to the respective score:
int bullStr = (above1 ? 1 : 0) + (above2 ? 1 : 0) + (above3 ? 1 : 0)
int bearStr = (below1 ? 1 : 0) + (below2 ? 1 : 0) + (below3 ? 1 : 0)
A score of 0 means price is between the baseline and first band — neutral zone. Score of 1 means first structural extension. Score of 3 means full breakout beyond all three bands in that direction.
4. Composite Trend Strength Score (0-100)
The strength score combines two inputs: the band penetration score converted to a 0-50 scale (each band = 16.7 points) and the RSI deviation from 50 on a 0-50 scale. The combination rewards moves that have both structural extension (price has pushed through multiple bands) and momentum confirmation (RSI is moving away from neutral):
float bandScore = math.min(float(math.max(bullStr, bearStr)) * 16.7, 50.0)
float rsiScore = math.min(math.abs(rsiVal - 50.0), 50.0)
int strScore = int(math.min(bandScore + rsiScore, 100.0))
5. Distance-Based Band Coloring
Each band receives a gradient color whose intensity scales with how far price is from that band relative to its historical range. Bands that price has recently broken through or is pressing against are rendered more vividly. Bands far from price are nearly transparent. This creates a visual heat-map effect showing where structural tension exists:
bandColor(float src, color col) =>
float dist = math.abs(close - src)
float pctNorm = ta.percentile_linear_interpolation(dist, 400, 100)
float colSize = pctNorm > 0 ? dist / pctNorm : 0.0
showBands ? color.from_gradient(colSize, 0, 0.5, color(na), col) : color(na)
Features
Six-Band Structure Grid: Three bands above and three below the slow SMEMA baseline, dynamically spaced by the smoothed candle range
Dual SMEMA Core Ribbon: Fast and slow baseline with gradient fill, colored by trend direction
Trend Direction Diamond: A small diamond marker on the baseline at every trend flip (when the slow SMEMA changes slope direction)
Bull / Bear Structure Score (0-3): Real-time count of penetrated upper or lower bands displayed in signal labels and the dashboard
Composite Strength Score (0-100): Combined band penetration and RSI momentum score with Strong/Moderate/Weak label
RSI Momentum Filter: Optional filter requiring RSI alignment before a signal is confirmed (configurable threshold, default 52)
Volume Filter: Optional filter requiring above-average volume (configurable multiplier, default 1.1x the 20-bar SMA). Auto-disables on volume-free instruments
Signal Labels: Small numeric labels at bull and bear signal bars showing the structure score (1, 2, or 3)
Strength Bar (Bottom Right): A visual bar table showing filled cells proportional to the current bull or bear structure score
Candle Coloring: Bar colors reflect trend direction at reduced opacity
9-Row Dashboard (Top Right): Trend direction, last signal and bars-since count, strength score with label, bull and bear band counts, RSI value, timeframe, and version
Watermark: JackOfAllTrades signature at chart center-bottom
Alerts: Bull signal, bear signal, and trend-flip alertconditions with optional JSON webhook format
Input Parameters
Ribbon Engine:
SMEMA Length: Core period for the slow baseline (default: 20). Fast = L/2
Step Smoothing: SMA period for the candle-range volatility step (default: 100)
Filters:
RSI Length: Momentum confirmation period (default: 14)
RSI Threshold: Minimum RSI for bull signal confirmation (default: 52). Bear mirror = 100 - threshold
Volume Filter: Enable/disable volume confirmation (default: off)
Volume Multiplier: Required volume multiple of the 20-bar SMA (default: 1.1)
Visuals / Dashboard:
Theme: Auto, Dark, or Light
Show Distance Bands: Toggle the six structural bands
Show Core Ribbon: Toggle the fast/slow SMEMA ribbon and fill
Show Signals: Toggle the numeric signal labels
Show Strength Bar: Toggle the bottom-right score visualization
Show Dashboard: Toggle the 9-row information panel
Color Palette: Bull, Bear, and Neutral colors are individually customizable
How to Use This Indicator
Step 1: Read Trend Direction from the Ribbon
When the ribbon is green and sloping upward, the baseline trend is bullish. When red and sloping downward, bearish. A flat ribbon in neutral color indicates a non-trending market.
Step 2: Use Structure Score for Entry Timing
A bull signal fires when price is above the first upper band (score 1+) and the trend slope is upward with RSI and volume confirmation. A score of 2 or 3 indicates deeper structural extension — potentially overextended for entry, better for trailing a position.
Step 3: Watch for Pullbacks to the Ribbon
After a bull signal, price often pulls back toward the ribbon (slow SMEMA) before continuing. Entries from the ribbon during an active bull structure are higher-probability than chasing at the outer bands.
Step 4: Scale Position with Strength Score
A strength score above 70 (labeled Strong) indicates both structural extension and momentum alignment — use for higher conviction. Below 40 (Weak) may indicate a fading move or early-stage structure not worth full position sizing.
Indicator Limitations
The warmup period (SMEMA length x3 or step smoothing + 50, whichever is larger) means the indicator is inactive for the first several dozen bars on any chart
The band spacing adapts to the smoothed candle range with a 100-bar lookback. On instruments with sharp volatility regime changes, the bands may lag behind the new volatility environment for many bars
The volume filter is automatically disabled when volume data is unavailable (e.g., indices, some forex pairs). In those cases, volume confirmation is effectively always true regardless of the toggle setting
Signal labels fire on every bull or bear structure bar — this can be frequent in strongly trending markets. The labels are informational, not entry triggers, and users should apply their own discretion for entry timing
Originality Statement
VSR is original in its use of the SMEMA-smoothed candle range as the band spacing unit. This indicator is published because:
The volatility-normalized step unit (SMEMA of high-low range) is a unique approach to band spacing that differs from standard ATR envelopes, Bollinger Bands (which use standard deviation), and Keltner Channels (which use raw ATR). The SMEMA smoothing produces a more stable, noise-resistant step unit than raw ATR
The 0-3 integer band-penetration scoring is a discrete structural measure that complements continuous oscillators. It quantifies how far price has extended structurally rather than how fast it has moved
The distance-based gradient coloring using percentile normalization creates an adaptive visual heat-map — the same visual logic is computationally novel within the band-coloring approach
The composite strength score combining band penetration with RSI deviation creates a measure that rewards both structural extension and momentum alignment simultaneously
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice or a recommendation to buy or sell any financial instrument. Trading involves substantial risk of loss. Band structure scores are based on historical price position relative to smoothed averages and do not predict future price movement. A score of 3 (maximum bullish extension) can increase further or reverse immediately. Always use proper risk management. The author is not responsible for any trading losses resulting from the use of this indicator.
-Made with passion by jackofalltrades
Indicator

Imbalance Zone Classifier [JOAT]Imbalance Zone Classifier
Introduction
The Imbalance Zone Classifier detects Fair Value Gaps (price imbalances where no two-sided auction occurred) and assigns each zone a 0–100 Strength Score based on four measurable factors: gap size relative to historical distribution, intrabar buy/sell volume composition, zone age, and mitigation status. Rather than drawing every FVG indiscriminately, this indicator filters by minimum score and renders only the zones most likely to attract institutional order flow on return visits.
The core problem this solves: nearly every FVG tool draws every gap, producing charts saturated with dozens of overlapping boxes that cannot be prioritized. A 0.03% gap on declining volume is not equivalent to a 0.8% gap formed on explosive institutional buying. The Strength Score quantifies that difference, letting the trader focus on the handful of zones that genuinely matter.
Core Concepts
1. Fair Value Gap Detection
An FVG (also known as an inefficiency or price imbalance) occurs when three consecutive candles leave a price gap:
// Bullish FVG: candle high is below candle low
bool bull_fvg = high < low and close > open
// Bearish FVG: candle low is above candle high
bool bear_fvg = low > high and close < open
Detection is confirmed on bar close — the gap is only registered after candle closes — ensuring no repainting. The zone boundaries are the candle high and candle low for a bullish FVG (and their inverses for bearish).
2. The 0–100 Strength Score
Each FVG receives a composite score derived from four sub-scores:
int vol_score = int(math.min(bull_pct / 0.7 * 50, 50)) // 0-50 pts
int size_score = int(math.min(gap_rank * 0.35, 35)) // 0-35 pts
int composite_score = vol_score + size_score // base
// Age decay applied post-formation: score -= 1 per N bars
Size Score (0–35 pts): The gap size as a percentage of price is ranked against the last 1000 bars using a percentile rank. A gap in the top 10% of historical size scores near maximum. A tiny gap scores near zero.
Volume Score (0–50 pts): Lower-timeframe bars within the formation candle's time window are decomposed into buy and sell volume. A bullish FVG with 90% buy-side composition scores 50; one with 50% scores 25.
Age Decay: Zones accumulate bar age. The score decays over time, reflecting that older unmitigated zones become less relevant. Zones below the minimum score threshold fade and are removed.
3. Lower-Timeframe Volume Decomposition
Volume intelligence comes from requesting sub-bar data at the user-specified lower timeframe:
array ltf_bull_vol = request.security_lower_tf("", i_ltf, (close > open ? volume : 0.0))
array ltf_bear_vol = request.security_lower_tf("", i_ltf, (close < open ? volume : 0.0))
float sum_bull_ltf = ltf_bull_vol.sum()
float sum_bear_ltf = ltf_bear_vol.sum()
float bull_pct = sum_bull_ltf / (sum_bull_ltf + sum_bear_ltf)
This decomposes the FVG formation candle's volume into directional sub-bar composition — giving a precise measure of whether the gap was formed by institutional buying pressure or merely a thin-volume vacuum.
4. Mitigation Logic
Zones are considered mitigated when price returns to the zone midpoint (or high/low depending on user setting). Mitigated zones do not disappear immediately — they change color and fade, providing a historical record. They are removed from the active list after a configurable bar count, and a counter increments in the dashboard.
5. Volume Bar Visualization Inside Zones
Each zone renders a proportional buy/sell volume bar inside the zone body — a thin inner box whose right edge shows the bull/bear volume ratio. A zone with 80% buy volume renders its inner bar nearly full green. This gives an immediate visual indication of the composition without requiring the dashboard.
Features
Fair Value Gap Detection: Bullish and bearish FVGs confirmed on bar close, non-repainting
0–100 Strength Score: Composite score from gap size percentile rank and lower-timeframe volume composition
Minimum Score Filter: Only zones above the threshold are rendered — keeps the chart clean
LTF Volume Decomposition: True intrabar buy/sell ratio from lower-timeframe data
Volume Bar Inside Zone: Proportional buy/sell bar rendered within each zone body
Mitigation Tracking: Zones transition to faded color on mitigation; active vs mitigated count in dashboard
Zone Extension: Unmitigated zones extend rightward automatically until price returns
Age Decay: Score degrades over time, naturally purging stale zones below the threshold
9-Row Dashboard: Active bullish zones, active bearish zones, total mitigated, highest current score, session FVG count
Alerts: Bullish FVG formed, bearish FVG formed, bullish FVG mitigated, bearish FVG mitigated
Input Parameters
FVG Detection:
Detect Bullish FVGs: Toggle bullish imbalance detection (default: on)
Detect Bearish FVGs: Toggle bearish imbalance detection (default: on)
Minimum Strength Score (0–100): Filter threshold — only zones above this are shown (default: 25). Higher = fewer, stronger zones.
Mitigation Source: close = mitigated when close crosses zone midpoint. high/low = wick breach removes the zone (default: close)
Max Active Zones: Maximum simultaneous rendered zones (default: 12, range: 3–30)
Volume Intelligence:
LTF Resolution: Lower timeframe for intrabar volume decomposition (default: 1m)
Visualization:
Bullish / Bearish / Mitigated colors: Fully customizable
Show Volume Bars Inside Zones: Display proportional buy/sell bar within each zone (default: on)
Extend Unmitigated Zones: Extend zone boxes rightward until mitigation (default: on)
Dashboard:
Position: Top Right, Top Left, Bottom Right, Bottom Left (default: Top Right)
How to Use This Indicator
Step 1: Set the Minimum Score
Start with the default score of 25. This filters out the weakest gaps while keeping meaningful zones. If the chart still shows too many zones, raise to 40–50. For maximum selectivity on higher timeframes, 60+ selects only the most institutionally significant gaps.
Step 2: Read the Volume Bar Inside Each Zone
A bullish FVG with a mostly green inner bar (80%+ buy volume) was formed by genuine institutional buying. One with a near-50% bar was formed in a thin, directionless push — much less likely to hold on retest. This distinction cannot be made from price action alone.
Step 3: Trade the Retest
Price frequently returns to fill FVG zones, particularly the highest-score zones. The midpoint of the zone (zone top + zone bottom / 2) is the primary retest level. Entry on a return to a high-score bullish FVG, with a stop below the zone low, is a clean risk-defined setup.
Step 4: Monitor Mitigation
Once a zone changes to the mitigated color, it no longer has predictive value as a support/resistance level — it has been filled. Remove it from your analysis. The dashboard count of mitigated zones tells you how efficiently the market is clearing imbalances.
Originality Statement
This indicator is original in its composite strength scoring system applied to Fair Value Gaps using lower-timeframe volume decomposition. Its publication is justified because:
Gap size percentile rank against 1000-bar history normalizes the score across different instruments and timeframes — a 0.5% gap on EURUSD scores the same as a 0.5% gap on BTCUSD regardless of absolute price level
Lower-timeframe volume decomposition provides true intrabar buy/sell composition of each FVG formation candle — a dimension of analysis unavailable from chart-timeframe OHLCV data alone
The visual volume bar inside each zone encodes directional conviction directly within the zone's screen space, creating a two-dimensional information display (price level + volume direction) without additional panels
Age decay combined with minimum score filtering creates a self-organizing, self-cleaning zone map that requires no manual zone management from the trader
Limitations
LTF volume requests add computation overhead. On 1-minute chart timeframes, requesting 1-minute LTF data is a no-op; the function falls back to chart-timeframe volume for those bars.
The strength score is a relative ranking, not an absolute predictive probability. A score of 80 does not mean an 80% chance of holding — it means this zone is stronger than most, not that it is guaranteed to act as support or resistance.
Mitigation is detected on bar close (or high/low depending on setting). Intrabar wicks that return to the zone but close outside it will not trigger mitigation in the default setting.
The maximum zone count is a performance and visual constraint. On timeframes where FVGs form frequently, older lower-score zones are removed to stay within the limit.
Disclaimer
This indicator is provided for educational and informational purposes only. It does not constitute financial advice or a recommendation to buy or sell any instrument. All trading involves risk of loss. Fair Value Gap zones do not guarantee price reversal or support. Always use proper risk management.
-Made with passion by jackofalltrades
Indicator

Dynamo
╭━━━╮
╰╮╭╮┃
╱┃┃┃┣╮╱╭┳━╮╭━━┳╮╭┳━━╮
╱┃┃┃┃┃╱┃┃╭╮┫╭╮┃╰╯┃╭╮┃
╭╯╰╯┃╰━╯┃┃┃┃╭╮┃┃┃┃╰╯┃
╰━━━┻━╮╭┻╯╰┻╯╰┻┻┻┻━━╯
╱╱╱╱╭━╯┃
╱╱╱╱╰━━╯
Overview
Dynamo is built to be the Swiss-knife for price-movement & strength detection, it aims to provide a holistic view of the current price across multiple dimensions. This is achieved by combining 3 very specific indicators(RSI, Stochastic & ADX) into a single view. Each of which serve a different purpose, and collectively provide a simple, yet powerful tool to gauge the true nature of price-action.
Background
Dynamo uses 3 technical analysis tools in conjunction to provide better insights into price movement, they are briefly explained below:
Relative Strength Index(RSI)
RSI is a popular indicator that is often used to measure the velocity of price change & the intensity of directional moves. RSI computes the relative strength of the current price by comparing the security’s bullish strength versus bearish strength for a given period, i.e. by comparing average gain to average loss.
It is a range bound(0-100) variable that generates a bullish reading if average gain is higher, and a bullish reading if average loss is higher. Values over 50 are generally considered bullish & values less than 50 indicate a bearish market. Values over 70 indicate an overbought condition, and values below 30 indicate oversold condition.
Stochastic
Stochastic is an indicator that aims to measure the momentum in the market, by comparing most recent closing price of the security to its price range for a given period. It is based on the assumption that price tends to close near the recent high in an up trend, and it closes near the recent low during a down trend.
It is also range bound(0-100), values over 80 indicate overbought condition and values below 20 indicate oversold condition.
Average Directional Index(ADX)
ADX is an indicator that can quantify trend strength, it is derived from two underlying indices, known as Directional Movement Index(DMI). +DMI represents strength of the up trend, and -DMI represents strength of the down trend, and ADX is the average of the two.
ADX is non-directional or trend-neutral, which means, it does not follow the direction of the price, instead ADX will rise only when there is a strong trend, it does not matter if it’s an up trend or a down trend. Typical ranges of ADX are 25-50 for a strong trend, anything below 25 is considered as no trend or weak trend. ADX can frequently shoot upto higher values, but it generally finds exhaustion levels around the 60-75 range.
About the script
All these indicators are very powerful tools, but just like any other indicator they have their limitations. Stochastic & ADX can generate false signals in volatile markets, meaning price wouldn’t always follow through with what’s being indicated. ADX may even fail to generate a signal in less volatile markets, simply because it is based on moving averages, it tends to react slower to price changes. RSI can also lose it’s effectiveness when markets are trending strong, as it can stay in the overbought or oversold ranges for an extended period of time.
Dynamo aims to provide the trader with a much broader perspective by bringing together these contrasting indicators into a single simplified view. When Stochastic becomes less reliable in highly volatile conditions, one can cross validate their deduction by looking at RSI patterns. When RSI gets stuck in overbought or oversold range, one can refer to ADX to get better picture about the current trend. Similarly, various combinations of rules & setups can be formulated to get a more deterministic view, when working with either of these indicators.
There many possible use cases for a tool like this, and it totally depends on how you want to use it. An obvious option is to use it to trigger signals only after it has been confirmed by two or more indicators, for example, RSI & Stochastic make a great combination for cross-over or cross-under strategies. Some of the other options include trend detection, strength detection, reversals or price rejection points, possible duration of a trend, and all of these can very easily be translated into effective entry and exit points for trades.
How to use it
Dynamo is an easy-to-use tool, just add it to your chart and you’re good to start with your market analysis. Output consists of three overlapping plots, each of which tackle price movement from a slightly different angle.
Stochastic: A momentum indicator that plots the current closing price in relation to the price-range over a given period of time.
Can be used to detect the direction of the price movement, potential reversals, or duration of an up/down move.
Plotted as grey coloured histograms in the background.
Relative Strength Index(RSI): RSI is also a momentum indicator that measures the velocity with which the price changes.
Can be used to detect the speed of the price movement, RSI divergences can be a nice way to detect directional changes.
Plotted as an aqua coloured line.
Average Directional Index(ADX): ADX is an indicator that is used to measure the strength of the current trend.
Can be used to measure how strong the price movement is, both up and down, or to establish long terms trends.
Plotted as an orange coloured line.
Features
Provides a well-rounded view of the market movement by amalgamating some of the best strength indicators, helping traders make better informed decisions with minimal effort.
Simplistic plots that aim to convey clean signals, as a result, reducing clutter on the chart, and hopefully in the trader's head too.
Combines different types of indicators into a single view, which leads to an optimised use of the precious screen real-estate.
Final Note
Dynamo is designed to be minimalistic in functionality and in appearance, as it is being built to be a general purpose tool that is not only beginner friendly, but can also be highly-configurable to meet the needs of pro traders.
Thresholds & default values for the indicators are only suggestions based on industry standards, they may not be an exact match for all markets & conditions. Hence, it is advisable for the user to test & adjust these values according their securities and trading styles.
The chart highlights one of many possible setups using this tool, and it can used to create various types of setups & strategies, but it is also worth noting that the usability & the effectiveness of this tool also depends on the user’s understanding & interpretation of the underlying indicators.
Lastly, this tool is only an indicator and should only be perceived that way. It does not guarantee anything, and the user should do their own research before committing to trades based on any indicator.
Indicator

Indicator
