TRADLEWARE-Ichimoku TK-Cross + MFI SOL
Ichimoku TK-Cross + Money Flow Index
This strategy uses the classic Ichimoku Cloud system to catch confirmed trend entries on a high-volatility altcoin, with a volume-based filter added to screen out low-conviction fakeouts.
How it works
Ichimoku Kinko Hyo ("one-glance equilibrium chart") is a trend system built from a few moving-midpoint lines. The Tenkan (short-term, plotted in blue) and Kijun (medium-term, plotted in orange) lines are each the midpoint of the highest high and lowest low over their own lookback window — similar in spirit to a moving average, but based on the range rather than the close. Two further lines, Senkou A and B, are projected forward to form the "cloud" (Kumo): a band that acts as dynamic support and resistance, shaded teal when it's bullish (Senkou A above Senkou B) and red when bearish.
On top of this, the Money Flow Index (MFI) — a volume-weighted version of RSI — checks that money is actually flowing into the asset, not just that price has moved.
Entry
A long position is opened when all three conditions are true simultaneously:
The blue Tenkan line crosses above the orange Kijun line (a bullish momentum shift)
Price is above the cloud, which should be shaded teal at this point (the broader trend is confirmed bullish)
The Money Flow Index is above 50 (volume-weighted money flow is positive, not just price drifting up on thin conviction)
The MFI filter exists specifically because this asset is prone to fakeout breakouts — moves that clear the cloud on price alone but aren't backed by real buying volume.
Exit
The position is closed when price closes back below the orange Kijun line — the "equilibrium" level the whole system is built around. An optional stop-loss (on by default) sits at the bottom of the cloud: if price loses the entire cloud — meaning it closes below whichever of the teal/red Senkou lines is lower — the broader trend structure itself has broken, not just short-term momentum.
Parameters
Tenkan length: 20
Kijun length: 60
Senkou B length: 120 (the cloud is projected forward by the Kijun length, the classic convention)
MFI length: 14
MFI minimum: 50 (stable across a 50-60 range in testing, not a fragile single value)
Stop-loss at cloud bottom: on by default, can be disabled
Label offset (ATR multiples): purely cosmetic — controls how far the BUY/SELL text labels sit from the candles so they don't overlap PulseWire's own trade markers
Start/End date range inputs let you restrict the backtest window without editing code
Position sizing is set to 99.95% of equity per trade rather than a full 100%. That small gap is deliberate: on this timeframe, sizing at exactly 100% causes PulseWire to occasionally generate tiny extra "Margin call" rows in the trade list from floating-point rounding after commission — enough of them, on this script, to noticeably distort the displayed win rate. The 0.05% gap removes those artifacts; the effect on actual results is negligible.
Costs modelled
0.1% commission per side, 3 ticks slippage, fills at next bar's open.
Intended assets and timeframe
4-hour bars. Designed and tested in Python on SOL/USDT, then validated against a live PulseWire backtest on BINANCE:SOLUSDT — entry and exit prices matched to the cent on the large majority of trades. Parameters were tuned specifically for SOL's volatility profile and are not expected to carry over unchanged to other assets.
Strategy

Indicator

Dynamic Market Metrics [MarkitTick]💡 All-in-one market analysis suite designed to unify trend evaluation, momentum measurement, and dynamic risk management into a single, cohesive interface. Rather than relying on a scattered array of disparate indicators, this unified system synthesizes multiple dimensions of market data—including volatility, money flow, and higher-timeframe confluence—to provide a comprehensive structural overview of the current asset. It visually maps trend direction, plots actionable trade risk levels, and features a real-time heads-up display (HUD) dashboard to track critical market internals without cluttering the charting workspace.
● Overview
✨ Originality and Utility
Traditional technical analysis often forces traders to compromise between lagging trend followers and noisy momentum oscillators. This script solves that divergence by integrating an adaptive trend baseline with volume-weighted momentum constraints. It is unique in its ability to automatically map forward-looking risk-to-reward brackets the moment a structural shift is confirmed. Instead of guessing where to place stops and targets, the system calculates these thresholds dynamically based on real-time volatility, offering a strictly objective framework for trade management. This eliminates the need for messy chart mashups, replacing them with a highly organized, singular logic engine.
🔬 Methodology and Concepts
The core engine of this tool operates on an abstracted synthesis of price volatility and money flow dynamics.
The primary trend anchor is established by evaluating average true price ranges against the flow of capital entering or exiting the asset.
Rather than relying on simple price crosses, the baseline only shifts when confirmed by underlying volume and momentum pressures.
A specialized breakout override mechanism constantly monitors for abnormal momentum spikes. If a sudden surge in directional velocity exceeds the baseline volatility threshold, the system immediately recalculates the trend state to adapt to the new market structure.
Trade levels are generated using a dynamic risk parity model. The system measures the precise distance between the confirmed entry trigger and the structural invalidation point, projecting synchronized target tiers that maintain strict mathematical risk-to-reward ratios.
All higher-timeframe data integration is strictly coded using offset historical referencing, ensuring absolute data integrity and preventing any future leakage or repainting artifacts.
🎨 Visual Guide
The script utilizes a clean, professional aesthetic, heavily reliant on dynamic colors and structured dashboard elements.
• The Trend Anchor and Cloud
Trend Line: A distinct, segmented line that tracks the primary market direction. It colors dynamically based on the active state (Bullish, Bearish, or Neutral).
Dynamic Cloud: A semi-transparent filled area bridging the primary trend line and a smoothed reference baseline. The thickness of this cloud visually represents the immediate strength and momentum of the trend.
Candle Coloring: Chart candles are painted to match the active trend state, providing instant visual alignment with the underlying engine.
• Trade Levels and Signals
Signal Markers: Minimalist labels appear above or below the price action to indicate confirmed structural shifts.
Stop Loss (SL) Line: A solid line representing the exact invalidation point of the active trend.
Entry Line: A dashed line marking the exact price where the signal was confirmed.
Take Profit (TP) Lines: A series of three dashed lines representing incremental target zones.
Risk/Reward Fills: Shaded background zones visually map the risk area (Entry to SL) against the reward area (Entry to TP3), allowing for immediate visual risk assessment.
• The HUD Dashboard
Located in the top right corner, this data table provides a real-time read of market internals:
Trend State & HTF Context: Displays the current directional bias on both the local and higher timeframes.
Entry, Target, and SL: Prints the exact numerical values for the active trade parameters.
Momentum & Money Flow: Visual progress bars indicating the current intensity of price movement and capital flow.
Volatility: Indicates whether the market is currently in a state of expansion or contraction.
Trend Age: A counter showing exactly how many bars have elapsed since the current trend began.
📖 How to Use
The system is designed to be highly objective. Monitor the chart for a confirmed signal marker, which indicates a shift in the underlying structural trend. Once a signal fires, the script will automatically render the Entry, Stop Loss, and Take Profit levels.
Validation: Before considering the signal, check the HUD Dashboard. A high Momentum score and an aligned Higher Timeframe (HTF) Context significantly increase the probability of continuation.
Execution: Use the exact printed Entry line for placement. The Stop Loss line dictates the hard invalidation point where the premise of the trend is broken.
Management: As price moves in the anticipated direction, manage the position by scaling out or moving protective stops as the asset crosses the TP1, TP2, and TP3 thresholds.
Breakouts: If a sudden momentum burst triggers an override, the trend state will flip immediately. Treat these as aggressive volatility expansions that require tighter risk management.
⚙️ Inputs and Settings
The settings panel is modularized for precise user control:
• Core & Breakout
ATR Mult & Length: Adjusts the core sensitivity of the volatility engine. Lower values create a tighter, more reactive baseline.
BO Override & Sens: Toggles the momentum breakout detection and dictates how much abnormal velocity is required to override the primary trend.
• Higher Timeframe (HTF)
Show HTF & TF: Enables the integration of a secondary, longer-term timeframe to act as a directional filter.
• Trade Tools & Cloud
Show Trade Levels: Toggles the rendering of the dynamic Entry, SL, and TP lines.
Cloud Settings: Controls the length, transparency, and rendering of the visual trend cloud and candle coloring.
• Alerts & Colors
JSON Action Strings: Allows users to input custom formatted strings for Long, Short, and Close actions, perfectly integrating with automated third-party execution platforms.
Colors: Fully customizable palettes for all lines, fills, dashboards, and signal markers.
🔍 Deconstruction of the Underlying Scientific and Academic Framework
The architectural foundation of this system rests on auction market theory and the statistical properties of volatility clustering. Financial markets operate through continuous auctions where price discovery is driven by the aggressive absorption of resting liquidity. This engine abstracts that process by measuring the standard deviation of price excursions—quantifying the asset's true range—and mapping it against the directional flow of capital.
By analyzing the divergence between pure price action and volume-weighted accumulation, the system identifies the true mean of value. When price deviates beyond these statistical bounds accompanied by extreme momentum, it signals a structural paradigm shift rather than a standard mean-reversion event. Furthermore, the embedded risk parity model abandons static numerical thresholds in favor of dynamic proportional scaling. The reward brackets are continuously mathematically linked to the localized volatility of the anchor point, ensuring that the risk-to-reward distribution remains statistically constant regardless of the asset's current expansion or contraction phase.
⚠️ Disclaimer
All provided scripts and indicators are strictly for educational exploration and must not be interpreted as financial advice or a recommendation to execute trades. We expressly disclaim all liability for any financial losses or damages that may result, directly or indirectly, from the reliance on or application of these tools. Market participation carries inherent risk where past performance never guarantees future returns, leaving all investment decisions and due diligence solely at your own discretion. Indicator

Momentum Consensus Heatmap [StrixEDGE]█ MOMENTUM CONSENSUS HEATMAP
A multi-timeframe momentum aggregation system that scans 6 oscillators across 4 customizable timeframes and fires high-conviction BUY/SHORT signals only when a critical mass of indicators reach overbought or oversold consensus simultaneously.
█ CONCEPT
Most momentum-based strategies rely on a single oscillator on a single timeframe — a setup prone to false signals and noise. This indicator solves that by requiring cross-timeframe and cross-indicator agreement before generating a signal.
The core logic works in two layers:
Layer 1 — Timeframe Consensus (per indicator):
Each oscillator is evaluated across 4 timeframes (default: 15m, 1H, 4H, 1D). An indicator only qualifies as "Overbought" or "Oversold" when at least 3 out of 4 timeframes agree (configurable: 2/4, 3/4, or 4/4).
Layer 2 — Indicator Consensus (overall signal):
A chart signal fires only when a user-defined number of indicators (default: 4 out of 6) have all independently reached Layer 1 consensus in the same direction.
This dual-filter architecture dramatically reduces noise and isolates moments of genuine, broad-based momentum exhaustion.
█ OSCILLATORS USED
• RSI (Relative Strength Index) — Classic momentum oscillator measuring speed and magnitude of price changes. Default OB/OS: 70/30.
• Stochastic RSI — Stochastic formula applied to RSI values, more sensitive to short-term momentum shifts than raw RSI. Default OB/OS: 80/20.
• Stochastic Oscillator — Compares closing price to the high-low range over a lookback period. Independent from Stoch RSI. Default OB/OS: 80/20.
• CCI (Commodity Channel Index) — Measures deviation from the statistical mean. Unbounded, making it useful for detecting extreme momentum. Default OB/OS: +100/−100.
• Williams %R — Reflects where the current close sits relative to the highest high. Inverted scale (−100 to 0). Default OB/OS: −20/−80.
• MFI (Money Flow Index) — Volume-weighted RSI. Adds a volume confirmation dimension that pure price-based oscillators lack. Default OB/OS: 80/20.
█ HEATMAP TABLE
The on-chart heatmap table provides a real-time dashboard of all 24 data points (6 indicators × 4 timeframes):
• Each cell shows the live oscillator value with color-coded background:
🔴 Red = Overbought zone
🟢 Green = Oversold zone
⚫ Gray = Neutral
• SCORE column shows how many timeframes agree for each indicator (e.g., "3/4 OB").
• SIGNAL column shows whether that individual indicator has reached consensus ("SHORT ▼" / "BUY ▲" / "—").
• CONSENSUS row at the bottom shows the overall verdict with a percentage score of indicator agreement.
Table position and text size are fully customizable through the settings panel.
█ CHART SIGNALS
When the overall consensus threshold is met:
▲ Green triangle below bar = BUY signal (oversold consensus)
▼ Red triangle above bar = SHORT signal (overbought consensus)
Signals fire only on the first bar of a new consensus event (no repeated signals while conditions persist). A subtle background color flash highlights the signal bar.
█ OPTIONAL TREND FILTER (EMA)
When enabled, signals are filtered by an EMA trend bias:
• BUY signals require price above the EMA (buying in an uptrend)
• SHORT signals require price below the EMA (shorting in a downtrend)
This is disabled by default to keep the indicator pure momentum-based, but can significantly improve signal quality in trending markets.
█ SETTINGS OVERVIEW
⏱ Timeframes — All 4 timeframes are independently configurable.
⚙ Indicator Lengths — Full control over each oscillator's lookback period.
📊 OB/OS Thresholds — Adjust overbought/oversold levels for every oscillator independently.
🎯 Signal Rules:
• Min TF Consensus: How many timeframes must agree per indicator (2-4, default 3).
• Min Indicators: How many indicators must reach consensus for a chart signal (1-6, default 4).
🎨 Table Appearance — Position, size, and full color customization (OB color, OS color, neutral, header, text).
🔔 Alerts — Native PulseWire alerts with detailed messages including ticker, timeframe, and consensus count.
█ HOW TO USE
1. Apply the indicator to any chart (works on all instruments and timeframes).
2. The heatmap table updates in real time — use it as a momentum dashboard.
3. Watch for chart signals:
• When 4+ indicators show oversold consensus across 3+ timeframes → BUY signal.
• When 4+ indicators show overbought consensus across 3+ timeframes → SHORT signal.
4. Set up PulseWire alerts to get notified when signals fire.
5. For higher conviction:
• Increase "Min Indicators" to 5 or 6 (fewer but stronger signals).
• Require 4/4 timeframe agreement instead of 3/4.
• Enable the EMA trend filter.
█ IMPORTANT NOTES
• This indicator uses request.security() to fetch multi-timeframe data. On the current timeframe, values update in real time. Higher timeframe values reflect the last closed bar of that timeframe.
• Signals are non-repainting once the bar closes. Intrabar, the table values and potential signals update as new ticks arrive (expected behavior for a real-time dashboard).
• This tool is designed for identifying momentum exhaustion zones. It does not predict direction — use it in confluence with price action, support/resistance, and your broader trading plan.
• Past performance is not indicative of future results. Always use proper risk management.
█ CREDITS & LICENSE
Open source under Mozilla Public License 2.0.
Built with Pine Script™ v6. Indicator

VWAP Confluence Engine | AnonycryptousVWAP Confluence Engine | Anonycryptous
Description & user manual
Why this indicator is different
Most traders run VWAP and RSI as two separate tools. VWAP tells you where price is relative to the volume-weighted average. RSI tells you about momentum. The problem is that these two readings constantly disagree, and when they do, the trader is left guessing which one to trust. Price sits above VWAP while RSI turns down. RSI pushes above its midline while price is still below VWAP. Every one of those moments is a decision made under conflicting information, and that is exactly where most intraday accounts bleed.
The VWAP Confluence Engine removes the guessing. Instead of showing you two panels that argue with each other, it forces agreement before it shows a directional state. Three independent measurements have to point the same way: price relative to VWAP, a volume-weighted RSI, and the Money Flow Index. When all three align bullish, the candle is painted in the bull color. When all three align bearish, it is painted in the bear color. When they disagree, the candle is neutral, and that neutral state is the most important output in the whole system. It is the market telling you it has not decided, and that you should not decide either.
This turns a chart full of conflicting signals into a single color-coded read. One glance tells you direction, momentum, and participation at the same time.
But direction alone is only half of a trade. A signal in the wrong location is a trap, no matter how clean the momentum looks. So the engine also maps support and resistance zones from swing pivots, flips those zones as price reclaims or loses them, and tells you in a dashboard where the nearest level sits above and below. A bull agreement firing directly into a heavy resistance zone is a very different proposition from the same agreement firing off a reclaimed support. The indicator gives you both pieces in one view.
And because a single timeframe is never the whole story, a compact multi-timeframe bar shows the same agreement logic across six timeframes at once. When every timeframe is the same color, the decision is easy. When they are mixed, that is information too.
Important notice
The VWAP Confluence Engine generates visual states based on VWAP position, volume-weighted momentum, money flow, and price structure. These states are not financial advice. They do not predict future price movement. They do not guarantee profitability. All trading decisions are made entirely by the user. Always manage your own risk. Always apply your own judgment.
1. Overview
The VWAP Confluence Engine is an overlay indicator that combines VWAP, a volume-weighted RSI, and the Money Flow Index into a single three-way agreement system, then places that agreement in the context of support and resistance structure and higher timeframe trend.
What it includes:
- Anchored VWAP with selectable reset period (hour, 4 hours, day, week, month)
- Volume-weighted RSI that scales price change by relative volume
- Money Flow Index as an independent confirmation layer
- Three-way agreement candle coloring: bull, bear, and neutral
- Gradient fill between VWAP and price that intensifies with distance
- Support and resistance zones from four independent pivot lengths, with zone flip logic
- Divergence detection with a box drawn on the price chart
- Higher timeframe filter that can gate signals to trade only with the larger trend
- Sentiment transition markers on the exact bar agreement changes
- Two configurable EMAs for optional extra confirmation, independent of the signal engine
- Main dashboard with agreement state, VWAP position, VW RSI, MFI, divergence, nearest levels, and a dedicated higher timeframe section
- Compact multi-timeframe bar across six configurable timeframes
- Optional background coloring
- Alerts for agreement changes and divergence
2. Core logic
2.1 The three-way agreement
Everything in this indicator is built around one question: do all three measurements agree?
The three measurements are:
- VWAP position. Is price above or below the anchored VWAP.
- Volume-weighted RSI. Is momentum above or below its midline.
- Money Flow Index. Is money flow above or below its midline.
A bull state requires price above VWAP, VW RSI above the midline, and MFI above the midline at the same time. A bear state requires all three below. Anything else is neutral.
This is deliberately strict. The indicator does not paint a color unless all three independent readings confirm each other. That is why the neutral state matters so much. It is not a weakness in the signal, it is the signal. It marks the stretches where price is chopping, where momentum and money flow disagree, and where forcing a trade usually ends badly.
2.2 Volume-weighted RSI
Standard RSI treats every bar equally. A move on thin volume and a move on heavy volume produce the same RSI value if the price change is the same. The volume-weighted RSI multiplies each bar's price change by its relative volume, the ratio of that bar's volume to a smoothed average, before the smoothing step. Moves on strong participation push the oscillator harder. Moves on weak participation barely register. The result reflects who was behind the move, not just that a move occurred.
2.3 Money Flow Index
The MFI is calculated from typical price multiplied by volume, producing positive and negative money flow that is converted to a 0 to 100 index. It responds differently from the VW RSI because it weights price level rather than price change. Requiring both to agree means two independent volume-based calculations have to arrive at the same conclusion, which is a stronger condition than either one alone.
3. VWAP and the fill
The VWAP is anchored to a selectable period. Day is the default and the most useful for intraday scalping, resetting at each session open. Week and month give longer-term institutional reference levels. Hour and 4 hours give shorter references for very fast trading.
The fill between VWAP and price is drawn with a gradient. Near VWAP it is almost invisible. The further price travels from VWAP, the more the fill intensifies, up to a configurable maximum. This gives an immediate visual sense of how stretched price is from its volume-weighted average without adding any clutter when price is hugging the line. The fill color follows the agreement state.
4. Support and resistance zones
The engine detects swing highs and lows using four independent pivot lengths, each of which can be toggled and adjusted. Instead of drawing thin lines, it draws zones with a thickness based on the average true range, so each level is a band rather than a single price.
The zones flip color based on where price is relative to them:
- When price is above a zone, it is drawn in the bull color, acting as support.
- When price is below a zone, it is drawn in the bear color, acting as resistance.
- When price is inside a zone, it is drawn in the neutral color, marking active interaction.
This flip logic reflects a basic principle of price structure: old resistance becomes new support once it is reclaimed, and old support becomes new resistance once it is lost. The zone color always tells you which role the level is currently playing.
The maximum number of zones shown per pivot length is configurable, so the chart stays as clean or as detailed as you want.
5. Divergence
Divergence is detected by comparing pivots in the VW RSI against pivots in price.
Bearish divergence: price makes a higher high while VW RSI makes a lower high. Momentum is weakening as price extends.
Bullish divergence: price makes a lower low while VW RSI makes a higher low. Selling pressure is fading even as price continues down.
Sensitivity controls the pivot lookback window. High uses a 3-bar window for more signals and more noise. Medium uses 5 bars. Low uses a 10-bar window for fewer, higher quality signals.
When a divergence confirms, a box is drawn on the price chart spanning the full high-to-low range of the swing involved, with a small label naming the divergence type. This shows not just that a divergence happened, but exactly where on the chart it occurred. The dashboard also reports the current divergence state.
6. Higher timeframe filter
The higher timeframe filter, when enabled, requires the higher timeframe to agree with the current direction before a candle can be painted bull or bear. On a lower timeframe this prevents counter-trend coloring during a pullback inside a larger trend.
The filter can be turned off entirely. With it off, candle coloring is based only on the current timeframe's three-way agreement. This is a deliberate choice left to the trader: strict alignment with the higher timeframe, or faster response on the current one. The dashboard always shows the higher timeframe bias regardless of whether the filter is gating signals, so the context is available either way.
7. Multi-timeframe bar
The multi-timeframe bar is a compact panel showing the agreement direction across six timeframes at once. Each slot is fully configurable, defaulting to 5m, 15m, 1h, 4h, D, and W. Each shows a colored triangle, up for bull, down for bear, a dot for neutral, with the timeframe label colored to match.
This is the fastest read in the indicator. When every timeframe is the same color, alignment is strong and the decision is simple. When the shorter timeframes are one color and the higher ones another, price is at a transition or in conflict, and the bar shows that at a glance.
8. Sentiment transitions
When the agreement state changes, a small marker is plotted on the exact bar where it happened. A triangle up when the state flips to bull, a triangle down when it flips to bear, a dot when it drops into neutral. These mark the moments the read changed, which is often more actionable than the state simply being green or red for many bars in a row.
9. Dashboard reference
The main dashboard updates on every bar and shows:
Agreement - the current three-way state: bull, bear, or hold.
VWAP - whether price is above or below the anchored VWAP.
VW RSI - current volume-weighted RSI value, colored by position.
MFI - current Money Flow Index value.
Divergence - active divergence state, if any.
Near Support - nearest zone level below current price.
Near Resist - nearest zone level above current price.
VWAP Anchor - the current VWAP reset period.
The higher timeframe section, which can be toggled, adds for the selected higher timeframe: its agreement state, VWAP position, VW RSI, MFI, whether the higher timeframe filter is active, and a warning if the current chart timeframe is below the recommended minimum for the system.
10. How to use
10.1 The core read
Wait for agreement. A bull or bear colored candle means all three measurements confirm each other. A neutral candle means they do not. The single most valuable habit this indicator encourages is to simply stand aside when candles are neutral. Those stretches are where the market has not chosen a direction, and where forcing a trade tends to produce the worst outcomes.
10.2 Location matters as much as direction
A colored candle tells you the direction is confirmed. The support and resistance zones tell you whether the location is any good. A bull agreement firing straight into a heavy resistance zone above is a low quality entry, even though the momentum looks clean. The same bull agreement firing off a zone that has just flipped from resistance to support is a far better proposition. Read the two together, never direction alone.
10.3 Using the higher timeframe
If you want to trade only in the direction of the larger trend, enable the higher timeframe filter. Colored candles will then only appear when the current and higher timeframe agree. If you prefer to react faster and judge context yourself, leave it off and use the higher timeframe section of the dashboard and the multi-timeframe bar as reference rather than as a hard gate.
10.4 Divergence as context
A divergence box is a warning that momentum and price have started to disagree, not an instruction to enter. The most reliable approach is to wait for a divergence box near a support or resistance zone and then look for the agreement state to actually flip before acting. Divergence can persist for many bars before price responds.
10.5 Illustrative bull scenario
Educational example only. Not a trading recommendation.
Price pulls back to a support zone that flipped from resistance a few sessions earlier. The multi-timeframe bar shows the higher timeframes already bullish. A bullish divergence box appears at the zone. On the next bar the agreement state flips to bull, painting the candle and plotting a transition triangle. Direction, location, momentum, and higher timeframe are all pointing the same way at the same place.
10.6 Illustrative bear scenario
Educational example only. Not a trading recommendation.
Price rallies into a resistance zone overhead. VW RSI and MFI are both rolling over. A bearish divergence box is drawn across the swing. The agreement state flips to bear and a transition triangle down prints. The higher timeframe section confirms a bearish bias. The setup has direction, structure, and higher timeframe agreement in one location.
11. Recommended use
This system is built for intraday trading and works best on the higher intraday timeframes rather than the very fastest ones, where noise overwhelms the agreement logic. The dashboard includes a timeframe check that flags when you are below the recommended minimum. Pivot settings for the support and resistance zones can be tuned per instrument and timeframe; smaller pivot lengths surface shorter-term levels, larger ones surface major structure.
12. Settings reference
VWAP: anchor period, line color, line width.
VW RSI: length, volume smoothing, midline, overbought and oversold levels, divergence sensitivity, divergence toggle and hold, divergence box toggle and transparency.
MFI: enable, length, midline.
HTF filter: enable, timeframe, RSI midline.
S/R zones: show toggle, four pivot lengths with individual show toggles, max zones per pivot, zone thickness by ATR, zone transparency.
Visuals: bull, bear, and neutral colors, candle coloring toggle, VWAP fill toggle and transparency, background color toggle and transparency, sentiment transition toggle.
Moving averages: two EMAs, each with show toggle, length, color, transparency, and width. The EMAs are an optional visual aid for extra confirmation only. They are not part of the agreement engine and do not influence candle coloring, signals, or any other calculation.
Dashboards: main dashboard show, position, size, HTF section toggle, HTF section timeframe. Multi-timeframe bar show, position, size, and six configurable timeframe slots.
13. Disclaimer
This indicator is provided for educational and informational purposes only. Nothing in this document or in the indicator output constitutes financial advice or any form of recommendation. Trading financial instruments involves substantial risk of loss. Past performance is not indicative of future results. You may lose all of your invested capital. Anonycryptous accepts no responsibility or liability for any losses incurred as a result of using this indicator. Indicator

Crypto Market RSI Heatmap [BigBeluga]🔵 OVERVIEW
The Crypto Market RSI Heatmap is a comprehensive, institutional-grade sector momentum matrix built for PulseWire. It consolidates relative strength metrics for up to 20 cross-sectional crypto assets into a single, highly readable multi-group pane. Instead of forcing you to open dozens of browser tabs or flip back and forth between charts, this system runs concurrent structural background queries to map real-time market overbought expansions and oversold depressions using an advanced, color-gradient visual framework.
🔵 FEATURES
The indicator tracks cross-asset momentum cycles through an isolated data processing engine:
1 — Multi-Asset Matrix Architecture
Modular Asset Grouping: Assets are automatically split into 4 distinct structural sectors (Group A through Group D). Each section handles up to 5 completely customizable tickers, allowing you to organize setups by Layer 1s, DeFi, Memes, or Major pairs.
Independent Timeframe Anchors: Every group has an isolated execution timeframe filter ( Timeframe ). This allows you to monitor short-term scalping momentum in one sector while simultaneously tracking macroscopic daily trend structures in another.
Dynamic Highlight Tracking: The background matrix scans the active workspace. The exact asset loaded on your current open chart is highlighted with a custom accent marker ( Current Chart Asset Highlight ) so you never lose your visual anchor.
2 — Momentum Filters & Statistical Computations
Flexible Core Oscillators: The engine isn't limited to standard RSI calculations. Users can instantly toggle between a classic Relative Strength Index, Money Flow Index (MFI) to capture volume distribution, or a fast-response Stochastic RSI.
Group Average Horizon Lines: Dotted real-time horizontal baselines calculate the mean historical mathematical score of each active group, providing an instant look at overall sector health.
Real-Time Cluster Stats: A live sub-label maps out the active average, minimum, and maximum value points for every cluster directly across the base of the indicator workspace.
// 3-Point Color Gradient Engine & Highlighting Mechanism
color dynamicCoinColor = colorMidYel
if coinRSI >= 50.0
dynamicCoinColor := color.from_gradient(coinRSI, 50.0, 75.0, colorMidYel, colorMaxRed)
else
dynamicCoinColor := color.from_gradient(coinRSI, 25.0, 50.0, colorMaxGrn, colorMidYel)
bool isActiveChartAsset = str.contains(str.split(symbol, ":").last(), syminfo.ticker)
if isActiveChartAsset
dynamicCoinColor := colorActive
🔵 HOW TO USE
Using the system to gauge sector rotation requires a systematic analysis flow:
Evaluating Sector Divergences: Monitor the separate group structures to identify relative market leaders and laggards. When Group A’s average baseline pushes deeply into the upper red expansion zone while Group B remains pinned inside the lower green oversold region, money is explicitly rotating out of one pocket and into the other.
Tracking Active Momentum Continuations: Watch the trailing dashed historical lines to catch velocity expansions. Assets that break heavily out of the neutral 50 level and carry an institutional-grade gradient color shift provide high-probability breakout opportunities.
Isolating Market Anomalies: Use the bottom statistics panel to hunt down structural outliers. If a major sector average is floating heavily at a overbought 75 reading, but an individual coin within that exact cluster is sitting at a depressed 35 minimum level, you have found an inefficiencies setup.
🔵 NOTES
Why this implementation is unique:
It completely replaces standard, bulky multi-pane monitor clusters by arranging up to 20 assets side-by-side using a clean, space-staggered horizontal charting layout.
The dual-layer label framework overlays readable ticker identifiers directly on top of real-time momentum tracking nodes, preserving chart real estate without sacrificing readability.
It bridges standard price-derived momentum structures with user-defined asset lists, creating a bespoke internal crypto index tracking workspace.
Indicator

EWO,RSI advanced Signals Strategy - Exhaustion Filter## EWO, RSI, MFI - Advanced Exhaustion Filter
## Overview
Strategy - Advanced Exhaustion Filter is a comprehensive momentum and mean-reversion trading strategy designed for Pine Script v6. It combines multi-indicator momentum tracking with structural price filters to protect traders from "falling knives" during market capitulation and distribution phases.
By blending the Elliott Wave Oscillator (EWO), Relative Strength Index (RSI), Money Flow Index (MFI), and volume-weighted confirmations, this strategy ensures you only enter a trade when genuine momentum returns to the market.
------------------------------
## How It Works##
1. Core Momentum Engine
The strategy relies on three distinct layers of confirmation before generating a trade:
* Elliott Wave Oscillator (EWO): Measures the displacement of price to determine the dominant market wave. Entries require the EWO to be ticking upward from below zero.
* Relative Strength Index (RSI): Filters structural momentum. A long entry triggers when RSI crosses above the critical 40 line, proving a shift out of bearish territory.
* Money Flow Index (MFI): Adds volume-weighted momentum to ensure asset accumulation is actually taking place rather than a low-liquidity squeeze.
2. The Exhaustion & Structural Filter (Anti-Falling Knife)
Standard momentum strategies often fail during deep market sell-offs because indicators flash "buy" on minor relief bounces while price continues to plummet. This script solves that problem using two proprietary rules:
* The Breakout/Breakdown Barrier: The script dynamically tracks the highest high and lowest low of the last N bars (lookback_len). Even if indicators say buy, the strategy will wait until price physically breaks above this local structural barrier.
* Capitulation Memory Flag: If the market enters a state of extreme panic (RSI drops below rsi_oversold), the strategy flags an "Exhaustion Zone". In this zone, the strategy prepares for an explosive trend reset, overriding standard barriers once momentum reverses.
3. Volumetric Confirmation
Signals are filtered through a volume moving average (Volume MA). Entries and exits are only permitted if market volume is at least 80% of its recent average, keeping you out of choppy, illiquid trading sessions.
------------------------------
## Strategy Parameters
* EWO Fast / Slow (Default: 5, 34): The short and long-term moving averages used to calculate the Elliott Wave Oscillator waves.
* RSI Length (Default: 14): The lookback window for trend and exhaustion momentum.
* MFI Length (Default: 14): The lookback window for volume-weighted money flow tracking.
* Breakout Lookback Bars (Default: 10): The number of historical bars used to calculate local structural highs and lows to prevent premature entries.
* Exhaustion RSI Level (Default: 30): The extreme oversold threshold that triggers capitulation logic.
------------------------------
## Best Practices & Asset Classes
* Timeframes: Optimised for 15-minute, 1-hour, and 4-hour charts where structural highs and lows carry significant weight.
* Markets: Highly effective on trending assets with periodic high-volatility liquidations, such as Crypto (BTC, ETH), major Forex pairs, and Tech Stocks.
------------------------------
## ⚠️ Disclaimer
Financial Risk Warning: Financial trading involves substantial risk of loss and is not suitable for every investor. The information, strategies, and script provided here are strictly for educational, informational, and research purposes.
No Advice: This script is not financial advice, an investment recommendation, or a solicitation to buy or sell any financial instrument. Past performance as demonstrated by historical backtesting is never a guarantee of future results.
User Responsibility: Markets change rapidly, and default settings may not fit all assets or market conditions. You are fully responsible for your own trading decisions. Always thoroughly backtest, forward-test on a demo account, and apply your own strict risk management protocols before risking real capital.
Strategy

Volume Flow Divergence OscillatorVolume Flow Divergence Oscillator (VFDO)
Volume Flow Divergence Oscillator
A bounded order-flow oscillator that measures whether buying or selling pressure dominates and how stretched it is, then detects price/flow divergences with statistical filtering. Three interchangeable flow engines share one axis so the same read can be cross-checked three independent ways.
Why these components are combined (and why this is not a generic mashup)
Order-flow pressure can be measured several ways, and each has blind spots. The problem this script solves is specific: raw Cumulative Volume Delta (CVD) trends without bound, so classic "swing-high vs swing-high" divergence on it is unreliable — the comparison ends up dominated by the accumulated drift instead of local buying/selling conviction. Stacking more momentum tools (a second RSI, a MACD) would only double-count the same information.
Instead, this tool (a) detrends and standardizes the flow into a bounded, mean-reverting oscillator so divergence becomes valid, and (b) offers three orthogonal lenses on one question — is buying or selling winning, and is it stretched?:
Normalized CVD — cumulative signed volume, detrended (minus its EMA) and divided by the residual's standard deviation. The reading is a z-score of how stretched flow is versus its own recent trend.
CVD-RSI — Wilder's RSI applied to the detrended CVD (not raw CVD, which would pin near 0/100 in a sustained trend). A 0–100 momentum-of-flow read.
MFI (Money Flow Index) — a volume-weighted RSI that does not depend on the signed-volume estimate, so it acts as a genuine independent cross-check.
These three are not redundant: they are different constructions of the same idea. A divergence that appears on all three is far more robust than one that appears on only one — and if they disagree, the "divergence" is construction-dependent noise. That cross-checking is the core purpose of putting them on a shared bounded axis.
Four context modules sit on top, each adding what the raw line cannot:
Filtered divergence — regular and hidden divergence between price pivots and the flow oscillator, gated by a minimum magnitude (marginal wiggles don't count), a maximum bar-distance between pivots (no stale comparisons), and an optional extreme-zone requirement (only count divergences forming from overbought/oversold, where they carry the most meaning). Lines are drawn on the oscillator curve; price marks print at the confirmation bar.
Gradient extreme zones — ±4σ (or 90/10) bands that shade lighter at the edge and darker as flow pushes further out, marking genuinely stretched conditions.
In-band reversal dots — a red/green dot when the oscillator makes a local turn inside an extreme band, flagging that stretched flow is unwinding.
Adaptive dashboard — a compact panel (oscillator value, zone, last divergence, last reversal, data source) that auto-themes to the chart background for legibility on any color scheme.
How signed volume is estimated (honesty)
True aggressor-tagged delta is unavailable on most PulseWire feeds, so signed volume here is estimated: per bar it is summed from lower-timeframe sub-bars (each sub-bar's volume signed by whether it closed up or down), falling back to an intrabar OHLC proxy when sub-bar data isn't available. The dashboard's Delta source row shows which is live ("LTF" vs "proxy"). This is the standard approach CVD tools use; it is an estimate, not exchange-tagged order flow.
How to use
Add to any symbol that reports volume. Read it like a bounded flow gauge: above the upper band = buying stretched; below the lower band = selling stretched; midline = balance.
Treat divergences as context, not standalone triggers. A bearish divergence at the upper extreme means buying conviction is fading as price makes a new high.
Cross-check with the Engine selector: confirm a divergence by switching between Normalized CVD, CVD-RSI and MFI. Agreement across all three is the strong case.
Reversal dots mark stretched-flow unwinding — combine with your own price structure and risk rules.
Settings overview
Data Source — lower-timeframe for the delta estimate; selectable High/Low sources for divergence, so the engine fits any instrument.
Flow Oscillator — engine selector, detrend/normalize window, OB/OS, smoothing, RSI/MFI lengths.
Extreme Zones & Reversals — ±4σ band level, band display, reversal dots.
Divergence — magnitude, pivot length, max bar-distance, extreme-zone gate, regular/hidden.
Dashboard & Theme — colors, position, and Auto/Dark/Light theme.
Defaults are tuned for NSE NIFTY futures on intraday timeframes (1-minute sub-bar delta). For other assets or timeframes, adjust the lower timeframe, normalize window, and band levels — every parameter is exposed.
Originality
This is not a re-skin of a single public indicator. The original contributions are: the detrend-then-standardize normalization that makes CVD divergence valid; three interchangeable flow engines on one shared bounded axis for cross-checking; and a divergence engine with magnitude + distance + extreme-zone gating drawn on the oscillator curve, with in-band reversal detection.
Concept credits
Relative Strength Index — J. Welles Wilder Jr.
Money Flow Index — Gene Quong & Avrum Soudack.
Cumulative Volume Delta and divergence analysis are standard public order-flow / technical-analysis concepts.
This script is an original implementation built around those public concepts and is not affiliated with, nor endorsed by, their originators.
Disclaimer
For research and educational purposes only. Not financial advice and no guarantee of profitability or accuracy. Signed volume is estimated, not exchange-tagged. Indicators describe past price behavior; they do not predict the future. Trading carries risk of loss. Test on out-of-sample data and make your own decisions. The author accepts no liability for any use of this script.
Indicator

EV Edge | AnonycryptousEV Edge | Anonycryptous
Description & user manual
Why this indicator is different;
Most breakout indicators stop at the entry. A box compresses, price breaks out, an arrow appears, and the indicator's job is considered done. What happens next - whether that breakout actually develops into a sustained move or stalls and reverses within a few bars - is left entirely to the trader to monitor manually.
EV Edge treats the moment of entry as the beginning of the analysis, not the end of it.
At its core is a consolidation detection engine that identifies tight, compressed ranges using an ATR-based threshold. When price breaks out of one of these ranges in the direction of the move that led into it - a continuation pattern sometimes described as the right side of a V - a signal fires. This part is familiar territory for breakout-based tools.
What happens afterward is not. Every signal starts with an EV score, a value between 0 and 100 that represents the expected value of the trade as it currently stands. The rule is simple: higher is better, lower is worse - for both long and short trades. A score climbing toward 100 means the trade is developing in your favor. A score falling toward 0 means price is moving against you. This holds regardless of direction. A short trade with an EV score of 85 is developing well. A long trade with an EV score of 12 is going the wrong way.
This score is not fixed at entry. It evolves on every subsequent bar based on how price actually behaves - how far it has moved in the trade's favor relative to ATR, and whether it has retraced back into the consolidation zone it broke from. A trade that continues cleanly in its intended direction sees its EV score climb toward 100. A trade that stalls or reverses back into the consolidation sees its score fall toward 0, with the penalty scaling proportionally to how deep the retracement goes.
The trade is then managed automatically by its own EV score. If the score reaches a configurable extreme - high or low - the trade closes out and the indicator becomes ready for the next signal. If neither extreme is reached within a maximum bar count, the trade times out. Every closed trade is recorded with its entry score, exit score, exit reason, and duration in an optional trade log table, turning the chart into a running record of how setups actually played out rather than a static history of where arrows appeared.
This is the central idea behind EV Edge: a signal is not a single judgment made once. It is a starting hypothesis that is continuously re-evaluated against what price does next.
A note on the colors
EV Edge uses two independent color systems that represent different things, and reading them correctly is essential.
The entry label color - the small triangle marker and its background - reflects trade direction. A long entry uses the bull color. A short entry uses the bear color. This is fixed at the moment of entry and never changes.
The trade zone box uses a separate, monochrome system that reflects how strongly the trade is currently developing, independent of direction. The box is a single configurable color throughout - by default a neutral steel grey - and only its intensity changes. Near the middle of the EV range the box is barely visible. As the EV score moves toward either extreme, the box becomes more opaque. The box answers one question only: how strong is the current reading, regardless of which way it points.
The EV score itself - shown as a number, a ten-segment meter, and a zone label in the dashboard - uses a four-zone color system based purely on score value, with no reference to trade direction:
90 to 100 : amber - the score is approaching the high exit threshold
60 to 90 : green (bull color) - the trade is developing favorably
40 to 60 : gold - neutral territory, no strong reading in either direction
10 to 40 : red (bear color) - the trade is developing poorly
0 to 10 : amber - the score is approaching the low exit threshold
This color system is direction-independent. A short trade with EV 85 shows green because the short is working well. A long trade with EV 14 shows red because the long is working against you. The amber zones at both extremes serve as a visual warning that an automatic exit is approaching, regardless of whether the trade is succeeding or failing. When no trade is active, the EV display is grey.
The text inside entry labels and EV shift labels is rendered in the measurement/brand color, against a background in the bull or bear color matching the trade direction. This keeps the label readable against either background while keeping the directional color as the dominant visual cue.
Important notice
EV Edge generates signals based on price action, volume behavior, and momentum confirmation.
These signals are not financial advice.
They do not predict future price movement.
They do not guarantee profitability.
All trading decisions are made entirely by the user.
Always manage your own risk. Always apply your own judgment.
1. Overview
EV Edge is a consolidation breakout indicator with a self-updating expected value score that tracks every trade from entry to close. It combines breakout detection, dynamic trade evaluation, optional momentum confirmation, multi-timeframe trend context, and a trade outcome log in a single lightweight indicator.
What it includes:
- Consolidation detection using ATR-based range compression
- Breakout signal with optional right-side-of-V continuation filter
- EV score from 0 to 100 that evolves bar by bar based on price drift and retracement depth
- Optional volume component blended into the EV score
- Four-zone color system on the EV score display: amber at the extremes, green in the favorable zone, gold at neutral, red in the unfavorable zone
- Automatic early exit when EV reaches a configurable extreme, with a hard bar-count cap as fallback
- Trade zone box that grows with the active trade and increases in opacity as EV moves away from neutral
- Extreme EV shift labels that appear only on significant single-bar changes or zone crossovers
- Optional VW RSI and MFI confirmation filter for entries, with an independent mini panel showing live values regardless of filter state
- Configurable divergence sensitivity for VW RSI divergence detection (High / Medium / Low)
- Multi-timeframe trend bar across six timeframes with a bull count
- Four independently toggleable EMA lines for visual confluence, with no effect on signals
- Trade log table recording direction, entry EV, exit EV, exit reason, and duration for recent trades
- Fully configurable bull, bear, and measurement colors applied consistently across labels, dashboards, and the trend bar
2. Core calculation
2.1 Consolidation detection
A consolidation range is measured over a configurable lookback period using the highest high and lowest low in that window. This range is compared against an ATR-based average range. When the actual range falls below the average range multiplied by a compression factor, the range is considered compressed. A consolidation is only confirmed once a minimum number of consecutive compressed bars has occurred - this is the V forming.
Lower compression factors demand tighter ranges before a consolidation is recognized. Higher minimum bar counts demand more mature consolidations. Both settings directly affect how often signals occur.
2.2 Breakout signal and the right side of the V
A breakout fires when price closes beyond the consolidation high or low by a configurable buffer, expressed as a multiple of ATR. With the right-side-of-V filter enabled, the breakout must also continue in the same direction as the move that occurred before the consolidation began. A consolidation that formed after an upward move and then breaks upward is a continuation. A consolidation that formed after an upward move and then breaks downward is not, and is ignored with this filter on.
Only one trade is tracked at a time. While a trade is active, new breakout signals are not evaluated. This keeps the chart from filling with overlapping signals and trade zone boxes during volatile, choppy conditions.
2.3 The EV score
Every new signal starts with an EV score of 60. From that point, the score updates on every bar based on two components.
The price component measures drift - how far price has moved in the trade's favor since entry, normalized by ATR - and retracement - whether price has moved back into or past the consolidation zone it broke from. Favorable drift increases the score. A retracement decreases it, and the size of the decrease scales with how deep the retracement goes. A shallow retracement back to the edge of the consolidation costs less than a retracement that pushes well past the original zone.
The optional volume component compares current volume to its moving average. Volume expanding in the direction of the trade supports the price component. Volume that is elevated while price is not moving - an effort without result condition - works against the score even if price has not yet retraced.
Both components are combined using configurable weights, and the result is applied to the running score each bar, clamped between 0 and 100.
2.4 Exits
A trade closes in one of two ways. If the EV score reaches a configurable extreme - high or low - after a minimum number of bars have passed, the trade closes immediately and the result is logged as an EV High or EV Low exit. The minimum bar requirement prevents the first bar or two after entry from closing the trade before it has had a chance to develop.
If neither extreme is reached within a maximum bar count, the trade closes as a Timeout. Either way, the indicator becomes ready to evaluate the next consolidation and breakout immediately.
3. Optional VW RSI and MFI confirmation
EV Edge includes an inline volume weighted RSI and Money Flow Index, calculated independently of any other indicator. The volume weighted RSI multiplies each bar's price change by its relative volume before the RSI calculation, so high-volume bars carry more weight than low-volume bars. The MFI is calculated from typical price multiplied by volume.
The master toggle enables or disables the confirmation filter entirely. When the master is on, the sub-toggles beneath it determine which meters are used: VW RSI, MFI, or both together with AND logic. When the master is off, signals fire without any momentum requirement regardless of the sub-toggle states.
When the confirmation filter is enabled, a long signal requires the selected meter or meters to be above their respective midlines, and a short signal requires them to be below. The filter is disabled by default so that signal frequency with and without confirmation can be compared directly.
VW RSI and MFI will sometimes point in different directions. This is not a fault - they measure related but distinct things. VW RSI weights price change by relative volume and responds quickly to momentum shifts. MFI incorporates the full money flow through typical price and volume and tends to reflect sustained buying or selling pressure. When they agree, the confirmation is stronger. When they disagree, the dashboard shows exactly where each stands so the trader can weigh them independently.
An optional mini panel on the dashboard shows the current VW RSI and MFI values with their percentage meters, zone state, and a Confirms row showing which direction - or directions - they currently support, regardless of whether the filter itself is active. This makes it possible to observe what the filter would do before committing to it.
Divergence detection is built into the VW RSI engine. When a bullish divergence is detected - price making a lower low while VW RSI makes a higher low - a line is drawn on the chart connecting the two pivot points in the bull color. The same applies in reverse for bearish divergences. The pivot window used for detection is configurable through the Divergence Sensitivity setting: High uses a 3-bar window for more frequent signals, Medium uses 5 bars as the default, and Low uses 10 bars for major pivots only. Divergence lines are purely visual and have no effect on signals or the EV score.
An important distinction: the Confirms row and the EV score answer different questions. Confirms reflects what VW RSI and MFI are doing right now - whether the current momentum supports the trade direction. The EV score reflects what price actually did after the signal fired - whether the breakout followed through. These two readings can point in opposite directions and both be correct. A short trade can show Confirms: Short because momentum is currently bearish, while the EV score sits at 15 because price bounced sharply after entry and never moved in the intended direction. The Confirms row describes the current environment. The EV score describes the trade's history since entry.
4. Multi-timeframe trend bar
A separate small panel shows trend direction across six timeframes - 1 minute, 5 minutes, 15 minutes, 1 hour, 4 hours, and daily - based on whether the 9-period EMA is above or below the 21-period EMA on each timeframe. A bull count from 0 to 6 summarizes how many of those timeframes currently agree on an upward trend.
This panel is independent of the signal logic. It provides context for whether a breakout on the current chart is aligned with or against the broader trend structure, without enforcing that alignment as a requirement.
5. EMA visual confluence
Four EMAs - 9, 21, 50, and 200 - can each be toggled on independently, with their own color and line width settings. These are plotted purely for visual reference. They do not feed into the consolidation detection, the EV score, the confirmation filter, or any other calculation. They exist so that price action can be viewed against common moving average levels without affecting how the indicator behaves.
6. Trade log
When enabled, a table records the most recently closed trades - direction, entry EV score, exit EV score, exit reason, and number of bars held. The table holds a configurable number of recent trades, with the newest entry at the top and older entries pushed out once the limit is reached.
Because entry EV is fixed at 60 for every trade, the exit EV and exit reason are what differentiate one trade from another in the log. A trade that exits at EV High after a small number of bars represents a fast, clean continuation. A trade that exits at EV Low after a small number of bars represents a fast failure. A trade that times out without reaching either extreme represents a setup that drifted without committing strongly in either direction.
The trade log does not persist across chart reloads. It reflects the trades that occurred since the indicator was applied to the current chart session.
7. Dashboard
The main dashboard shows the current trade status - long active, short active, or no signal - the live EV score as both a number and a ten-segment meter, the current EV zone, and the number of bars tracked relative to the maximum. The EV score number, meter, and zone text all use the four-zone color system described in the colors section above. When the VW RSI and MFI mini panel is enabled, it appears as additional rows in the same table.
A small blinking indicator - alternating between a filled and hollow dot - appears next to the Status row whenever a trade is active, and disappears when no trade is active. The indicator updates on a bar-by-bar basis, including the live, currently forming bar, so on lower timeframes it provides a continuously refreshing visual cue that the EV engine is actively tracking a trade.
Dashboard position and text size are independently configurable, with tiny, small, and normal size options to suit different chart layouts.
8. Settings reference
8.1 Consolidation detection
- Consolidation lookback: bars used to measure the consolidation range. Default 12.
- Compression factor: how tight the range must be relative to the ATR-based average to qualify as consolidation. Default 0.65.
- ATR length: lookback for the Average True Range used throughout the indicator. Default 14.
- Min bars in consolidation: minimum consecutive compressed bars required. Default 4.
8.2 Breakout signal
- Breakout buffer: extra distance beyond the consolidation edge, as a multiple of ATR, required to confirm a breakout. Default 0.1.
- Require right-side-of-V alignment: breakout must continue in the direction of the pre-consolidation move. Default on.
- Impulse lookback: bars before the consolidation compared to determine the prior move direction. Default 8.
8.3 EV score engine
- Include volume component: blend volume behavior into the EV score. Default on.
- Price action weight and volume weight: relative weighting of the two components. Defaults 0.7 / 0.3.
- Volume MA length: lookback for the volume moving average used in the volume ratio. Default 20.
- EV improving threshold: score at or above this value is classified as Improving. Default 70.
- EV decaying threshold: score at or below this value is classified as Decaying. Default 30.
- Max bars to track: hard cap on how long a trade is tracked before timing out. Default 30.
- Early exit EV high: score at or above this value triggers an immediate EV High close. Default 90.
- Early exit EV low: score at or below this value triggers an immediate EV Low close. Default 5.
- Min bars before early exit: bars that must pass before an extreme score can close the trade. Default 3.
8.4 VW RSI / MFI confirmation filter
- Require confirmation for entries: master toggle for the entire filter. Default off.
- VW RSI length and volume smoothing: lookback periods for the volume weighted RSI calculation. Default 14 each.
- VW RSI confirmation midline: threshold for long versus short confirmation. Default 50.
- Use VW RSI for confirmation: sub-toggle. Default on.
- MFI length: lookback for the Money Flow Index. Default 14.
- MFI confirmation midline: threshold for long versus short confirmation. Default 50.
- Use MFI for confirmation: sub-toggle. Default on.
- Show VW RSI / MFI mini panel: adds informational rows to the dashboard regardless of filter state. Default on.
- VW RSI overbought / oversold levels: visual zone thresholds shown in the dashboard. Defaults 75 / 25.
- Show divergence lines: draws diagonal lines on the chart where VW RSI divergences are detected. Default on.
- Show bullish / bearish divergence: independent toggles per divergence direction. Default on.
- Divergence line width: stroke width for divergence lines. Default 1.
- Divergence sensitivity: pivot window for divergence detection. High = 3 bars, Medium = 5 bars (default), Low = 10 bars.
8.5 Multi-timeframe dashboard
- Show multi-timeframe trend bar: toggle. Default on.
- MTF panel location: corner placement on the chart. Default bottom left.
8.6 EMA visual confluence
- Show EMA 9, 21, 50, 200: independent toggles, all default on.
- Color and width: configurable per EMA.
8.7 Bull / bear colors
- Bull color and bear color: applied to entry label backgrounds, plotted signal markers, dashboard status, VW RSI/MFI confirmations, and the multi-timeframe trend bar.
- Measurement / brand color: applied to the EV score meter when no trade is active, the brand row in both dashboards, and the text inside entry and EV shift labels.
- Signal label transparency: background transparency for entry and EV shift labels. Default 50.
8.8 EV quality colors
- Trade zone box color: single monochrome color for the trade zone box. Default steel grey.
- Scale box intensity with EV extremity: when on, the box becomes more opaque as EV approaches 0 or 100, and more transparent near 50. Default on.
- EV improving / decaying / neutral text colors: used for the Exit EV value in the trade log. Separate from the four-zone dashboard colors.
8.9 Trade log
- Show trade log table: toggle. Default on.
- Number of trades to show: how many recent trades are displayed. Default 5.
- Trade log location: corner placement on the chart.
8.10 Visuals
- Show dashboard, dashboard location, and dashboard size.
- Show consolidation box.
- Show signal labels.
- Show trade zone box.
- Extreme EV shift threshold: minimum single-bar EV change, or a zone crossover, required to display a shift label. Default 15.
9. How to use
9.1 Reading the EV score
The EV score has one rule: higher is better, lower is worse - for both long and short trades. When a long signal fires and the score climbs, the long is working. When a short signal fires and the score drops, the short is not working - price is moving up against the position. The score is direction-independent. It measures how well the trade is developing relative to what was expected at the moment of the breakout, nothing more.
The score is most informative as a trajectory, not a single value. A score climbing steadily from 60 toward 70 and beyond suggests a clean continuation. A score that drops sharply within the first few bars after entry, particularly if it crosses below the decaying threshold, suggests the breakout lacked follow-through. The minimum bars before early exit setting exists so that this initial period can be observed rather than immediately closing the trade on the first adverse tick.
9.2 Reading the four-zone color system
The EV score number, the ten-segment meter, and the EV Zone text all use the same four-zone color logic. When a trade is active, the colors read as follows: green means the trade is progressing well, gold means the score is sitting in neutral territory without a strong signal in either direction, red means the trade is going poorly and the breakout likely lacked follow-through, and amber at either extreme means an automatic exit is approaching. No active trade is grey.
These colors are consistent across both long and short trades. A short showing green is performing correctly. A long showing red is not.
9.3 Reading the trade zone box
The trade zone box appears once a signal fires and grows with the trade's price range on every subsequent bar. Its intensity reflects how far the EV score currently sits from the neutral midpoint - faint near 50, increasingly opaque as the score approaches either 0 or 100. A box that has become noticeably more opaque indicates the EV score has moved decisively toward one of its extremes. The EV Zone text in the dashboard and the four-zone color together tell you which extreme and whether that is favorable or not.
9.4 Using the trade log to evaluate settings
Because every closed trade is recorded with its exit reason and duration, the trade log can be used to assess whether the current settings are producing the expected distribution of outcomes. A log dominated by EV Low exits at short durations may indicate that the breakout filter is too permissive, allowing weak setups through. A log with many Timeout entries may indicate that the early exit thresholds are too extreme to be reached under current market conditions, or that the EV score's sensitivity needs adjustment. Reviewing the log periodically - particularly when testing on a single instrument and timeframe over a consistent period - is the intended way to calibrate the EV score engine to a specific market.
9.5 Using the VW RSI / MFI mini panel before enabling the filter
Because the mini panel shows what the confirmation filter would do without requiring it to be active, it can be left on while running the indicator without the filter enabled. This allows direct observation of how often VW RSI and MFI would have confirmed or rejected the signals that fired, before committing to the filter and reducing signal frequency.
9.6 Using the multi-timeframe bar as context, not as a gate
The multi-timeframe trend bar does not block or filter signals. A breakout signal can fire even when the bull count is low or when the immediate timeframe disagrees with higher timeframes. The intended use is to provide situational awareness - a breakout that aligns with a high bull count carries different context than one that fires while higher timeframes are pointing the other way, even though both will generate the same signal and the same starting EV score.
9.7 Illustrative bull scenario
Educational example only. Not a trading recommendation.
Price consolidates in a tight range for several bars after an upward move. The range compresses below the ATR-based threshold and the minimum bar count is reached. Price closes above the consolidation high by more than the breakout buffer, and the move continues in the same direction as the prior upward impulse - the right side of the V. A long signal fires with an EV score of 60, shown with a bull-colored label. The dashboard switches to LONG ACTIVE with a blinking dot. Over the following bars, price continues higher without returning to the consolidation zone. The EV score climbs past 70, the dashboard color shifts to green, and the trade zone box becomes noticeably more opaque as the score moves away from neutral. The EV Zone text switches to Improving. Within several bars the score reaches 90, the amber warning zone, and the trade closes as an EV High exit, recorded in the trade log.
9.8 Illustrative bear scenario
Educational example only. Not a trading recommendation.
A consolidation forms after a downward move and breaks lower, aligned with the prior impulse. A short signal fires with an EV score of 60, shown with a bear-colored label. On the next bar, price reverses and closes back above the lower boundary of the consolidation it broke from. The retracement penalty is applied, scaled by how far price has moved back into the zone. The EV score drops sharply. The dashboard color shifts to red and the EV Zone text switches to Decaying. The Confirms row in the VW RSI panel may still show Short if momentum meters remain bearish - this is not a contradiction. Confirms reflects current momentum; the EV score reflects what price did since entry. After the minimum bar count has passed, the score drops below 10, entering the lower amber zone, and the trade closes as an EV Low exit, recorded in the trade log as a fast failure.
10. Tested instruments and timeframes
EV Edge has been tested across a range of futures and spot crypto markets, including MNQ, MES, MGC, MCL, MBT, M2K, and SIL futures, as well as BTCUSDT, SOLUSDT, and ETHUSDT on Binance, across the 1 minute, 5 minute, 15 minute, 1 hour, and 4 hour timeframes.
Results by timeframe:
- 1m and 5m: recommended primary timeframes. EV High and EV Low exits fire frequently and the score evolves quickly enough to be actionable for scalping.
- 15m: works well. Max bars setting of 15 to 20 recommended.
- 1H: functional, but overnight and weekend gaps on futures affect the score behavior. Max bars of 10 to 15 recommended. Best used for directional context rather than as the primary trading timeframe.
- 4H: not recommended. The bar count required for meaningful EV evolution exceeds practical limits and most trades time out before the score develops.
EV Edge is designed primarily as a 1m to 15m scalp and intraday tool, with 1H usable for higher-timeframe bias.
11. Tips
The default EV score formula has not been calibrated to any specific instrument or timeframe. The early exit thresholds, the retracement penalty, and the volume weighting are starting points. The trade log exists so that these can be evaluated against real outcomes on the instrument and timeframe actually being traded, rather than assumed to be correct.
Testing on a single instrument and a single timeframe for a sustained period produces a more useful trade log than switching between instruments or timeframes during the test. Mixing conditions makes it difficult to separate the effect of the EV score formula from the effect of changing market behavior.
The right-side-of-V filter and the VW RSI/MFI confirmation filter both attempt to address the same underlying concern - whether a breakout has genuine momentum behind it. Running both at maximum strictness simultaneously may reduce signal frequency more than either filter alone would suggest. Testing each independently before combining them clarifies which filter is contributing more to signal quality.
On futures markets, overnight and weekend gaps can cause single-bar EV score jumps that do not reflect genuine price movement during the session. On the 1H timeframe in particular, a gap open can spike or collapse the drift component in ways that would not occur on a continuous chart. This is expected behavior, not a fault. Keeping the max bars setting lower on higher timeframes reduces the window during which a gap can distort the score history.
The Confirms row and the EV score are not the same measure and should not be read as one. Confirms reflects whether VW RSI and MFI currently support the trade direction. The EV score reflects how price actually moved since the signal fired. They can disagree and both be correct. A trade showing Confirms: Short alongside EV 12 is not contradictory: it means momentum currently supports the short direction, but the price movement since entry has not followed through. Understanding the difference between these two readings is one of the most useful things you can take from the dashboard.
12. Disclaimer
This indicator is provided for educational and informational purposes only. Nothing in this document or in the indicator output constitutes financial advice or any form of recommendation. Trading financial instruments involves substantial risk of loss. Past performance is not indicative of future results. You may lose all of your invested capital.
Anonycryptous accepts no responsibility or liability for any losses incurred as a result of using this indicator.
Indicator

Elaris Mean Reversion ProElaris Mean Reversion Pro
Elaris Mean Reversion Pro is a multi-factor mean reversion indicator designed to help traders identify situations where price has moved significantly away from its statistical mean and may be entering a potential reversion phase.
The indicator combines adaptive deviation bands, volatility measurements, momentum filters, market regime analysis, and optional higher-timeframe confirmation to provide a structured framework for analyzing stretched market conditions.
Unlike simple overbought and oversold tools, Elaris Mean Reversion Pro allows users to customize how extremes are measured through Z-Score, ATR-based, or hybrid deviation models while incorporating optional confirmation layers such as RSI, MFI, volume, ADX, and higher-timeframe trend filters.
Key Features
• Multiple mean calculation methods including EMA, SMA, RMA, WMA, VWMA, and HMA.
• Three deviation models:
* Z-Score Bands
* ATR Bands
* Hybrid Bands
• Mean reversion signal engine with multiple confirmation styles:
* Extreme Touch
* Mean Reclaim
* Candle Rejection
• Optional RSI and MFI extreme-condition filters.
• ADX-based market regime filter to help identify environments where mean reversion conditions may be more relevant.
• Optional volume and volatility filters.
• Higher-timeframe confirmation framework.
• Signal quality scoring system.
• Dynamic mean, deviation bands, and reversion zones.
• Built-in dashboard displaying:
* Market state
* Z-Score
* Distance from mean
* Momentum readings
* Regime status
* Higher-timeframe bias
• Alert conditions for:
* Long mean reversion signals
* Short mean reversion signals
* Upper extreme zones
* Lower extreme zones
How It Works
The indicator calculates a central mean and measures how far price has deviated from that mean using statistical or volatility-based methods.
When price reaches an extreme deviation zone, the indicator evaluates additional confirmation factors such as candle behavior, momentum conditions, volatility, volume, and trend regime before generating a signal.
Signals are intended to highlight potential mean reversion conditions and should be evaluated alongside the trader's own market analysis and risk management process.
Non-Repainting
This indicator uses confirmed bar logic and higher-timeframe requests with lookahead disabled. Signals are generated using closed-bar information and do not intentionally repaint historical signals.
Notes
Mean reversion techniques may behave differently across various market conditions. Strong directional trends, high-impact news events, and volatility expansions can influence market behavior and should always be considered when interpreting indicator outputs.
This tool is designed for market analysis and educational purposes only and does not constitute financial advice.
Indicator

Volume Weighted RSI PRO | AnonycryptousVolume Weighted RSI Pro | Anonycryptous
Description & user manual
Why this indicator is different
Standard RSI treats every bar equally. A bar where 100 lots traded and a bar where 100,000 lots traded produce the same RSI value if the price change was the same. That is a fundamental problem. Price moves on low volume are noise. Price moves on high volume are institutional participation. RSI cannot tell the difference.
Volume Weighted RSI Pro fixes this at the calculation level.
Instead of averaging raw price changes, every gain and loss is multiplied by its relative volume before entering the RSI calculation. A strong move on elevated volume pushes the oscillator harder than the same move on thin participation. A drift in price on below-average volume barely registers. The result is an RSI that reflects who was actually behind the move — not just that a move happened.
But volume-weighted RSI alone is one perspective. The indicator adds a second independent layer through the Money Flow Index — a separate oscillator that weights typical price by volume rather than price change. When both VW RSI and MFI agree on an extreme reading, the confluence is structurally different from either line alone. One can be driven by a single large candle. Two separate calculation methods arriving at the same conclusion is harder to dismiss.
And then there are the liquidity levels.
Most RSI-based indicators live in isolation from price structure. They show you when the oscillator is extended, but not where on the price chart that extension corresponds to meaningful levels. Volume Weighted RSI Pro draws the nearest swing highs and lows directly on the price chart — the levels where stops cluster, where institutions defend positions, and where reversals tend to form. Each level shows the volume ratio at the moment it was created. Each level disappears automatically when price closes through it, and the indicator immediately identifies the next relevant level below or above.
The divergence engine connects oscillator behavior with price structure by drawing lines, endpoint markers, and a highlighted box on the price chart that spans the exact bars involved. Not just a signal — a spatial map of what happened and where.
This is an RSI indicator that knows where it is on the chart.
Important notice
Volume Weighted RSI Pro generates signals based on oscillator behavior, volume analysis, and price structure detection.
These signals are not financial advice.
They do not predict future price movement.
They do not guarantee profitability.
All trading decisions are made entirely by the user.
Always manage your own risk. Always apply your own judgment.
1. Overview
Volume Weighted RSI Pro is a multi-layer oscillator built around a volume-weighted RSI calculation. It combines momentum analysis, divergence detection, volume flow confirmation, and liquidity level mapping in a single indicator across both the oscillator pane and the price chart.
What it includes:
- Volume weighted RSI using relative volume to scale price change contributions
- Money Flow Index as a second independent momentum layer
- EMA signal line with configurable length and crossover markers
- Divergence detection with RSI pane lines and mainchart box visualization
- Liquidity level lines on the price chart from confirmed swing highs and lows
- Volume ratio label per liquidity level showing institutional activity at formation
- Automatic level mitigation: levels disappear when price closes through them
- OB/OS zone boxes with per-zone volume intensity tracking
- Gradient glow fill between the RSI line and midline
- OB/OS exit signals and signal line crossover markers
- Bar coloring and mainchart background based on RSI position
- Live dashboard with RSI value, volume ratio, zone, divergence, signal, and liquidity levels
- Seven alerts covering divergence, exits, and signal line crossovers
2. Core calculation
2.1 Volume weighted RSI
Standard RSI sums gains and losses over a lookback period using Wilder's smoothing (RMA). Volume Weighted RSI Pro applies the same structure but multiplies each bar's price change by its relative volume — the ratio of bar volume to the smoothed volume average — before the RMA smoothing step.
A bar with twice the average volume contributes twice as much to the gain or loss accumulation. A bar with half the average volume contributes half as much. This means the oscillator level reflects participation quality, not just price displacement. In practical terms: trending moves on rising volume push the oscillator to extremes faster. Pullbacks on thin volume barely move it. This creates a cleaner, more institutionally-aware reading than standard RSI.
The volume weighted mode can be toggled off to revert to standard RSI behavior for direct comparison.
2.2 Standard RSI reference line
A standard RSI line is plotted as a secondary reference in the same pane. Its color and width are configurable. Divergence between the volume weighted and standard lines reveals moments where volume is distorting the picture — a large move on thin participation that standard RSI registers but the VW version largely ignores, or vice versa.
2.3 Signal line
An EMA of the volume weighted RSI value acts as a signal line, similar in concept to the signal line in a MACD. The default length is 9. When the VW RSI crosses above the signal line, momentum is accelerating to the upside. When it crosses below, momentum is decelerating. Crossover markers appear at the exact cross point and can be toggled on or off. The signal line is most useful as a filter — only take a setup if the RSI and signal line agree on direction.
2.4 Money Flow Index
The MFI is calculated using typical price ((high + low + close) / 3) multiplied by volume, producing separate positive and negative money flow sums that are then converted to an index between 0 and 100. It shares the same scale as the VW RSI, making direct visual comparison possible.
The MFI responds differently from VW RSI because it weights price level rather than price change. Elevated MFI without elevated VW RSI suggests buying pressure at current levels without strong directional momentum. Both indicators in overbought territory simultaneously is a stronger condition than either alone.
3. Divergence detection
Divergence is detected by comparing pivots in the volume weighted RSI against pivots in price over a configurable lookback window
Bearish divergence: price makes a higher high while VW RSI makes a lower high. Momentum is weakening as price extends — a structural warning.
Bullish divergence: price makes a lower low while VW RSI makes a higher low. Selling pressure is exhausting even as price continues lower — a structural opportunity.
Sensitivity controls the pivot lookback window:
- High: 3-bar pivots. More signals, more false positives.
- Medium: 5-bar pivots. Balanced default.
- Low: 10-bar pivots. Fewer signals, higher quality.
When a divergence confirms, two things are drawn simultaneously. In the RSI pane: a solid line connecting the two pivot RSI values. On the price chart: a box spanning the full price range of the bars involved in the divergence. This makes the spatial relationship between the oscillator event and the price structure immediately visible.
The divergence box does not confirm a trade. It confirms that a structural disagreement between price and momentum occurred, and where on the chart it happened.
4. Liquidity levels
Liquidity levels are drawn on the price chart at confirmed swing highs and lows using a pivot detection engine. They represent the price levels where stop orders are likely to cluster — below swing lows for buy stops and above swing highs for sell stops. These are the levels that institutional participants use as targets when running liquidity.
Each level is a horizontal line that starts at the pivot bar and extends to the right in real time. The nearest level is fully opaque. Additional levels fade with distance from current price.
Each level displays a volume ratio label at its origin — the bar's volume at the time of pivot formation relative to the recent average. A level formed on 2.1x average volume is more institutionally significant than one formed on 0.7x volume. This context is part of reading the level.
When price closes through a level, it is removed immediately. The indicator repopulates from the remaining valid pivots. There is no manual cleanup and no visual clutter from levels that have already been swept.
The detail level setting controls how aggressively levels are detected:
- Minimal: wide pivot lookback, only the most significant structural highs and lows qualify.
- Standard: balanced detection, practical default across most timeframes.
- Full: tighter pivot lookback, more levels are identified.
The dashboard shows the nearest bull side level (BSL) and bear side level (SSL) by price, updated in real time.
5. OB/OS zone tracking
When the VW RSI enters overbought or oversold territory, the indicator begins accumulating the total volume transacted during that period. When price exits the zone, a filled box is drawn over the duration of the zone on the RSI pane.
The box includes a volume intensity label showing how the average volume inside the zone compared to the baseline average. A zone with 1.8x average volume indicates elevated institutional activity during the extreme reading — the extension was not just price drift but active participation. A zone below 1.0x is thin and less meaningful.
OB/OS zones are off by default.
6. Visual guide
RSI pane elements:
- Bright green/red RSI line — volume weighted RSI, color intensity increases toward OB/OS extremes
- Grey reference line — standard RSI, configurable color and width
- Gold line — signal line (EMA of VW RSI)
- Purple line — MFI
- Gradient glow fill — color intensity increases from midline toward the RSI line, creating a visual depth effect that reflects how extended the oscillator is
- OB/OS background — deepens in red or green when RSI is in extreme territory
- ▲ marker — RSI exiting oversold territory
- ▼ marker — RSI exiting overbought territory
- ✕ marker — RSI/signal line crossover (when enabled)
- Divergence line — solid colored line between the two pivot RSI values
Mainchart elements:
- Horizontal lines — liquidity levels, color and opacity by distance from current price
- Volume label at origin — volume ratio at pivot formation bar
- Divergence box — spans the full price range of the divergence bars
- Background color — subtle green above RSI 50, subtle red below
- Bar coloring — gradient intensity based on RSI position
7. Dashboard reference
The dashboard is positioned bottom right by default and updates on every bar close.
VW RSI — current VW RSI value, colored by position.
Vol ratio — current bar volume relative to the smoothed average. Values above 1.5x are highlighted in gold.
Zone — current RSI zone: overbought, oversold, or neutral.
Divergence — active divergence state if detected on the most recent pivot.
Signal — most recent signal condition.
— Liquidity —
Near BSL — nearest bull side liquidity level below current price.
Near SSL — nearest sell side liquidity level above current price.
Liq levels — count of active levels on each side.
Mode — VW (volume weighted) or STD (standard RSI mode).
Anonycryptous — indicator brand and version.
8. Alerts
Seven alert conditions are available:
- Bullish divergence: price lower low with VW RSI higher low confirmed.
- Bearish divergence: price higher high with VW RSI lower high confirmed.
- OS exit signal: RSI crosses back above the oversold level.
- OB exit signal: RSI crosses back below the overbought level.
- Any divergence: fires on either divergence type.
- Signal cross up: VW RSI crosses above the signal line.
- Signal cross down: VW RSI crosses below the signal line.
9. Settings reference
9.1 RSI settings
- RSI length: lookback period for the VW RSI calculation. Default 14.
- Volume smoothing: lookback for the volume moving average. Default 14.
- Volume weighted mode: toggle between volume weighted and standard RSI.
- Show signal line: toggle the EMA signal line.
- Signal line length: EMA period for the signal line. Default 9.
- Show signal crossovers: toggle ✕ markers at signal line crossovers. Default off.
- Show MFI line: toggle the Money Flow Index line.
- MFI length: lookback for MFI calculation. Default 14.
- MFI color: default brand purple.
- MFI line width: 1 to 4. Default 2.
- Overbought level: threshold for OB signals and zone tracking. Default 70.
- Oversold level: threshold for OS signals and zone tracking. Default 30.
9.2 Divergence
- Sensitivity: pivot lookback window — high (3), medium (5), low (10).
- Show bullish divergence.
- Show bearish divergence.
- Divergence box on mainchart: draws the price range box on the price chart.
- Div line width: stroke weight of divergence lines. 1 to 4. Default 2.
9.3 Liquidity levels
- Show liquidity levels: toggle all liquidity lines on the price chart.
- Detail level: minimal, standard, or full pivot sensitivity.
- Pivot lookback: swing detection window. Default 10.
- Max levels each side: maximum lines shown above and below current price. Default 2.
9.4 OB/OS zones
- Show OB/OS zones: toggle zone boxes in the RSI pane. Default off.
- Volume intensity label: show per-zone volume ratio label.
- Zone transparency: fill opacity for OB/OS zone boxes.
9.5 Visuals
- Bull color: primary bull color across all elements.
- Bear color: primary bear color across all elements.
- Bull div color: color for bullish divergence lines and box.
- Bear div color: color for bearish divergence lines and box.
- Std RSI color: color of the standard RSI reference line.
- Std RSI width: stroke weight of the reference line.
- Bar coloring: gradient bar color based on RSI position.
- Signal size: size of OB/OS exit markers — tiny, small, or normal.
- Show background color: subtle mainchart background based on RSI direction.
- Background transparency: opacity of the mainchart background.
9.6 Dashboard
- Show dashboard.
- Position: top left, top right, bottom left, or bottom right.
- Size: tiny, small, or normal.
10. How to use
10.1 Reading divergence
Divergence is not a signal to enter immediately. It is a warning that the relationship between momentum and price is breaking down. The most effective approach is to wait for the divergence box to appear on the price chart and then look for a second confirmation — a signal line crossover, an OB/OS exit marker, or a price reaction at a nearby liquidity level — before treating the setup as actionable.
Divergence on its own can persist for many bars before price reacts. Use it as directional context, not as a trigger.
10.2 Using liquidity levels
The liquidity lines show where the market has unfinished business — swing levels that formed on meaningful volume and have not yet been revisited. When the VW RSI is approaching overbought or showing bearish divergence and price is simultaneously approaching a sell-side liquidity level above, those two conditions are pointing at the same structural event from different angles.
The volume ratio label at each level is particularly useful. A level formed on 0.6x average volume is a weak level that may not generate a meaningful reaction. A level formed on 2.5x average volume suggests a move was initiated or defended with institutional size. Treat these differently.
10.3 Using VW RSI and MFI together
When both lines are in overbought territory simultaneously, the condition is stronger than either alone. VW RSI is extended on momentum. MFI confirms that money flow at current price levels is also elevated. The two calculations are independent — their agreement is not trivial.
When they diverge — VW RSI overbought while MFI is not — one of the components is not confirming the other. This does not mean the move is wrong, but the confluence is weaker.
10.4 OB/OS zone volume
When the zone volume label shows above 1.5x, the extreme RSI reading occurred during elevated participation. That tells you the extension was not just mechanical drift — there was active buying or selling pressure behind it. An exit from that zone after a high-volume OB/OS period carries more weight than an exit from a thin zone.
10.5 Illustrative bull scenario
Educational example only. Not a trading recommendation.
VW RSI drops into oversold on above-average volume. A bull-side liquidity level sits 0.8% below current price, formed three sessions ago on 2.1x volume. VW RSI begins making a higher low while price makes a lower low — bullish divergence is confirmed. A divergence box appears on the price chart. The RSI crosses back above the oversold level, firing a ▲ marker. The signal line crossover fires shortly after. Three separate conditions align: oversold exit, bullish divergence, and signal line confirmation.
10.6 Illustrative bear scenario
Educational example only. Not a trading recommendation.
Price rallies into a sell-side liquidity level visible on the chart at 2.2x formation volume. VW RSI is in overbought territory while MFI is also elevated. Price makes a higher high but VW RSI makes a lower high — bearish divergence is drawn on the RSI pane and a box appears on the price chart covering the divergence range. RSI crosses back below overbought. A ▼ marker fires. The setup has divergence, OB exit, and a liquidity level all at the same location.
11. Tips
The volume ratio in the dashboard is one of the most underused readings. A vol ratio below 0.7 means current price action is thin — institutions are not participating. Signals that fire on low volume ratio are less reliable than those that fire on 1.5x or above.
Signal line crossovers are most useful as filters. Toggle them on during active sessions to see where momentum flips are occurring relative to the rest of the setup. Too many crossovers on a given session usually means the market is ranging — reduce position size or wait for the RSI to expand toward an extreme before taking the cross seriously.
The standard RSI reference line reveals when volume weighting is changing the picture. If the VW RSI is significantly above the standard line, it means recent price movement was driven by above-average volume. If the VW RSI is below the standard line, price moved on thin participation — the market did not commit to the direction.
Liquidity level count in the dashboard tells you how many valid structural references remain. When the count drops — because levels are being swept — it means the market is clearing stops. That is meaningful context for the direction of the current move.
12. Disclaimer
This indicator is provided for educational and informational purposes only. Nothing in this document or in the indicator output constitutes financial advice or any form of recommendation. Trading financial instruments involves substantial risk of loss. Past performance is not indicative of future results. You may lose all of your invested capital.
Anonycryptous accepts no responsibility or liability for any losses incurred as a result of using this indicator. Indicator

Indicator

Divergence Stack Scanner [AGPro Series]Divergence Stack Scanner
🔹 Overview
Divergence Stack Scanner scans five independent momentum and volume oscillators simultaneously — RSI, MACD Histogram, CCI, MFI, and OBV — and grades every confirmed pivot by how many of them show regular divergence at the same time. The result is a 0 to 5 STACK score that isolates rare, high-conviction reversal zones which single-divergence tools simply cannot surface.
Most divergence indicators track one oscillator at a time. Strong reversals, however, tend to leave fingerprints across momentum and volume at once. This tool quantifies that confluence in a single, objective number you can act on.
🔸 Unique Edge
What separates this script from the crowded divergence space:
1. Five-oscillator confluence in one engine — not one divergence, five divergences graded together.
2. Strict versus Window classification — a 5/5 STRICT stack (all five on the exact same pivot) is marked with a star flash, while a 5/5 WINDOW stack (all five within a small bar tolerance) is tagged separately. The distinction matters because strict stacks are statistically rarer and sharper.
3. Pressure Zones — a rectangular, SR-style zone is drawn forward from each qualifying pivot, so the reversal level stays visible long after the signal fires.
4. Rolling win-rate panel — the last N decided signals are evaluated N bars forward, and the win percentage is displayed live on the panel.
5. Per-oscillator live state — you see at a glance which oscillators are already in divergence and how long ago they triggered.
🔹 Methodology
Pivots are detected using the standard PulseWire pivot method with a configurable lookback (default 5 bars each side, confirmed, non-repainting).
When a pivot is confirmed, the script compares the current pivot price and oscillator value to the previous same-direction pivot:
- Regular bullish divergence: price prints a lower low while the oscillator prints a higher low.
- Regular bearish divergence: price prints a higher high while the oscillator prints a lower high.
This comparison runs independently for RSI, MACD Histogram, CCI, MFI, and OBV. Each oscillator stores the bar index of its most recent divergence. The stack engine then counts how many oscillators have fired within a tolerance window of the current pivot:
- Strict stack (window = 0): all counted oscillators fired on the exact same pivot bar.
- Window stack (window = 1 to N bars): oscillators fired within N bars of each other.
Pressure zones are drawn only when the stack meets a configurable minimum (default 4/5). Zone height is ATR-scaled so it stays proportional across instruments and timeframes. A proximity filter prevents label clutter: once a label is drawn in a given direction, a new label in the same direction within a short window is only drawn if its stack level is strictly higher.
🔸 Signals & Alerts
On-chart signals:
- ★ N/5 STACK label (filled color) — strict same-bar stack at level N.
- N/5 NEAR label (lighter color) — window stack (near-miss of strict).
- Pressure zone rectangle — drawn forward from the pivot for qualifying stacks.
Alerts available:
- 5/5 Strict Stack (bull and bear, separate) — the rarest and sharpest signal.
- Minimum Stack threshold — fires whenever the stack reaches your configured minimum level.
All alerts use alert.freq_once_per_bar_close and include ticker plus timeframe in the message.
🔹 Key Inputs
Core Engine:
- Pivot Lookback — bars each side to confirm a pivot (default 5).
- RSI, MACD, CCI, MFI lengths — standard defaults, all configurable.
Stack Configuration:
- Minimum Stack Level — display threshold (default 3/5).
- Window Tolerance — bar tolerance for near-stacks (default 3).
- Win-Rate Lookback — number of recent signals used for rolling win rate (default 20).
- Win Evaluation Bars — forward bars to decide win or loss (default 10).
Pressure Zones:
- Minimum Stack for Zone (default 4/5) — keeps the chart premium and uncluttered.
- Zone Extend and Height (ATR%) — tune the visual footprint to your taste.
- Max Active Zones — oldest zones are automatically trimmed.
Panel and Theme:
- Location (6 anchors), Dark or Light theme, font size presets.
- Fully brand-consistent AGPro color palette built in.
🔸 How to Use
- Treat 5/5 STRICT stacks as the headline signal. They are rare by construction and typically appear at genuine inflection points.
- Use 4/5 stacks as early-warning context around support, resistance, or higher-timeframe levels.
- Read the per-oscillator live state on the panel. When RSI, MACD, CCI, MFI are all in the same direction and OBV is the last holdout, a full stack is often imminent.
- Pressure zones work well as re-entry or invalidation levels after the initial signal fires.
- The rolling win rate is a sanity check for the current asset and timeframe — if it degrades meaningfully, raise the minimum stack level or widen the pivot lookback.
🔹 Limitations and Transparency
- This is a confluence tool, not a standalone trading system. Divergence by nature can persist in strong trends before any reversal.
- The engine is pivot-based and therefore delayed by the pivot lookback. Labels appear on the bar the pivot is confirmed, not on the pivot itself.
- Win rate is computed on the last N decided signals on the current chart. It is not a backtest, it is an evolving statistic and it does not include slippage, spread, or position sizing.
- Window stacks are lower-confidence than strict stacks by design. The visual distinction is intentional.
- Session-based "Today's Max" uses calendar-day rollover.
🔸 Risk Disclosure
This indicator is a technical analysis tool for research and education. It is not financial advice, not a signal service, and not a trading strategy. Past patterns do not guarantee future behavior. You are solely responsible for your trading decisions, risk management, and position sizing. Always combine any indicator with independent analysis, higher-timeframe context, and strict risk controls.
🔹 Technical Notes
- Pine Script v6, overlay indicator.
- Fully non-repainting. All divergences are evaluated only on confirmed pivots.
- Drawing objects (labels, boxes) are capped to avoid resource overruns.
- MPL 2.0 licensed — open source. Indicator

Indicator

Indicator

_Trinity Matrix_
Short description
A structured multi-layer oscillator built around a refined Trinity Wave core, MFI regime columns, confidence scoring, divergence filtering, and TF / HTF context.
Full publication description
Trinity Matrix is a multi-layer oscillator designed to read continuation, reversal quality, regime strength, and divergence context inside a single panel.
It combines a refined Trinity Wave core, MFI regime structure, confidence scoring, mode-based signal filtering, divergence logic, and a compact TF / HTF dashboard into a unified workflow.
The name is a nod to layered market context: not a single signal, but a structured matrix of wave state, regime strength, confidence, and divergence.
Core Structure
Trinity Wave core with additional smoothing and soft limiting to reduce extreme spikes while preserving directional character
MFI Columns to separate baseline participation from stronger expansion phases
Strong zone highlighting to visually distinguish stronger bullish and bearish regime expansion
Confidence engine that blends Trinity Wave continuation and MFI continuation into a normalized directional score
Signal modes for different levels of selectivity: None, Early, Standard, and Strict
ATR-gated divergence filtering for cleaner divergence structures
TF / HTF confidence dashboard for comparing active timeframe conviction against a selected higher timeframe
Built-in alerts for buy, strong buy, elite buy, sell, strong sell, and elite sell conditions
How to Read It
Trinity Wave is the main directional layer. Green indicates bullish state, red indicates bearish state.
MFI Columns show regime participation.
White columns = baseline MFI flow
Shiny white columns = stronger bullish expansion
Orange columns = stronger bearish expansion
Average MFI bands help show where positive or negative regime strength is building relative to recent memory.
Confidence Dashboard summarizes directional conviction on both the active timeframe and the selected higher timeframe.
Row 1 = TF / HTF labels
Row 2 = confidence percentage
Row 3 = qualitative tag: Weak / Moderate / Strong
Signal Modes
None hides signal output
Early is faster and more aggressive
Standard is more balanced
Strict applies the strongest filtering and usually produces the fewest signals
Divergence Module
The divergence layer uses Trinity Wave turning points, confidence filtering, pivot distance control, and optional ATR gate filtering.
It can draw on the oscillator and, if enabled, on price as well.
The goal is not to maximize divergence count, but to keep the structures more selective and readable.
Alerts
This script includes separate alert conditions for:
TW Buy
TW Buy Strong
TW Buy Elite
TW Sell
TW Sell Strong
TW Sell Elite
Suggested Use
Trinity Matrix works best as a structured reading tool rather than a one-click decision engine.
A practical workflow is:
Read Trinity Wave direction and location
Check whether MFI is in baseline flow or strong expansion
Use confidence and HTF context to judge continuation or reversal quality
Use signal mode based on your desired aggressiveness
Use divergence as a contextual filter, not as a standalone trigger
Important Notes
Signal frequency changes significantly with the selected signal mode
HTF confidence reflects the live state of the selected higher timeframe
Divergence output is intentionally filtered and selective
This is an indicator framework, not a full trading strategy
Attribution
Core WaveTrend-style formulation was adapted from the open-source WaveTrend Oscillator by LazyBear, then extended with additional smoothing, soft limiting, MFI regime logic, confidence scoring, divergence filtering, dashboard structure, and alert workflow.
Acknowledgement
Built through many rounds of testing, refinement, and iteration — with a little help from ChatGPT and CodeGPT along the way.
Disclaimer
For educational and analytical use only. Not financial advice. Indicator

Phantom Whale Hunter [JOAT]Phantom Whale Hunter
Introduction
The Phantom Whale Hunter is an advanced open-source institutional footprint tracking system that combines Chaikin Money Flow, Money Flow Index, On-Balance Volume, VWAP analysis, and Accumulation/Distribution to detect institutional buying and selling pressure. This indicator reveals when large institutional players (whales) are accumulating or distributing positions, providing traders with insights into smart money positioning before major price moves occur.
Unlike basic volume indicators, the Phantom Whale Hunter provides multi-dimensional institutional flow analysis through money flow calculations, volume-weighted analysis, cumulative volume tracking, and phase detection. The indicator is designed for traders who understand that institutional money moves markets and that detecting whale footprints early provides significant trading advantages.
Why This Indicator Exists
This indicator addresses the need for systematic institutional flow analysis. By combining five distinct money flow methodologies with phase detection, it reveals:
Chaikin Money Flow (CMF): Measures buying/selling pressure based on close position within range
Money Flow Index (MFI): Volume-weighted RSI showing money flow strength
On-Balance Volume (OBV): Cumulative volume indicator tracking institutional accumulation/distribution
VWAP Analysis: Volume-weighted average price with deviation bands
Accumulation/Distribution (A/D): Cumulative indicator measuring money flow into/out of security
Institutional Flow Index: Composite measure combining all five components
Phase Detection: Classifies market as Strong Accumulation, Accumulation, Neutral, Distribution, or Strong Distribution
Smart Money Divergence: Detects when price and flow move in opposite directions
Core Components Explained
1. Chaikin Money Flow (CMF)
CMF measures the relationship between close position and volume:
Money Flow Volume: ((Close - Low) - (High - Close)) / (High - Low) × Volume
CMF Calculation: Sum of MFV over period / Sum of volume over period
CMF Smoothing: 7-period EMA for noise reduction
Interpretation: CMF > 0 = buying pressure, CMF < 0 = selling pressure
CMF values above +0.1 indicate strong buying pressure, while values below -0.1 indicate strong selling pressure.
2. Money Flow Index (MFI)
MFI is a volume-weighted momentum indicator:
Typical Price: (High + Low + Close) / 3
Raw Money Flow: Typical Price × Volume
Positive Flow: Money flow when typical price rises
Negative Flow: Money flow when typical price falls
Money Ratio: Sum of positive flow / Sum of negative flow
MFI: 100 - (100 / (1 + Money Ratio))
MFI above 80 indicates overbought with high volume (potential distribution), while MFI below 20 indicates oversold with high volume (potential accumulation).
3. On-Balance Volume (OBV)
OBV tracks cumulative volume flow:
Calculation: Add volume on up days, subtract volume on down days
Cumulative: Running total from start of data
Normalization: Scaled to 0-100 range using 100-bar high/low
Zero-Centering: Subtract 50 for composite integration
Rising OBV with rising price confirms uptrend (accumulation). Falling OBV with rising price warns of distribution.
4. VWAP (Volume-Weighted Average Price)
VWAP calculates the average price weighted by volume:
Calculation: Sum(Typical Price × Volume) / Sum(Volume)
Daily Reset: VWAP resets at start of each trading day
Standard Deviation: Measures price dispersion from VWAP
Deviation Bands: VWAP ± (StdDev × Multiplier)
Price vs VWAP: Percentage distance from VWAP
Price above VWAP indicates bullish institutional positioning. Price below VWAP indicates bearish institutional positioning. Large deviations often mean-revert.
5. Accumulation/Distribution (A/D) Line
A/D measures cumulative money flow:
Money Flow Multiplier: ((Close - Low) - (High - Close)) / (High - Low)
Money Flow Volume: Multiplier × Volume
A/D Line: Cumulative sum of money flow volume
Smoothing: EMA smoothing (default 14) for trend identification
Normalization: Scaled to 0-100 range, then zero-centered
Rising A/D with rising price confirms accumulation. Falling A/D with rising price signals distribution (bearish divergence).
6. Institutional Flow Index Calculation
All five components are combined into a unified flow index:
Flow Index = (CMF × 50 + (MFI - 50) + (OBV - 50) + (A/D - 50)) / 4
This composite index ranges from approximately -50 to +50, with:
Flow Index > 30 = Strong institutional buying
Flow Index > 10 = Institutional buying
Flow Index -10 to +10 = Neutral/balanced
Flow Index < -10 = Institutional selling
Flow Index < -30 = Strong institutional selling
7. Phase Detection System
The indicator classifies institutional positioning into five phases:
Strong Accumulation (Phase 2): Flow Index > 30, CMF > 0.1, MFI > 50
Accumulation (Phase 1): Flow Index > 10, CMF > 0
Neutral (Phase 0): Flow Index between -10 and +10
Distribution (Phase -1): Flow Index < -10, CMF < 0
Strong Distribution (Phase -2): Flow Index < -30, CMF < -0.1, MFI < 50
Phase classification helps identify when institutions are actively positioning.
8. Smart Money Divergence Detection
Divergences occur when price and flow move in opposite directions:
Price Momentum: 14-period rate of change in price
Flow Momentum: 14-period rate of change in Flow Index
Bullish Divergence: Price falling (momentum < 0), Flow rising (momentum > 0)
Bearish Divergence: Price rising (momentum > 0), Flow falling (momentum < 0)
Smart money divergences indicate institutions positioning against current price trend, often preceding reversals.
9. Institutional Pressure Detection
The indicator identifies strong institutional buying/selling:
Buy Pressure: CMF > 0, MFI > 50, OBV > 50, Volume Surge
Sell Pressure: CMF < 0, MFI < 50, OBV < 50, Volume Surge
Volume Surge: Current volume > average volume × 2.25
Anti-Overlap: Minimum 25 bars between pressure signals
Institutional pressure with volume confirmation indicates significant whale activity.
10. Flow Velocity and Acceleration
The indicator tracks flow momentum:
Flow Velocity: Change in Flow Index (first derivative)
Flow Acceleration: Change in velocity (second derivative)
Accelerating flow indicates increasing institutional participation. Decelerating flow warns of waning institutional interest.
Visual Elements
Institutional Flow Line: Main line showing composite flow with phase-based coloring (green = accumulation, red = distribution, yellow = neutral)
Component Lines: Four thin lines showing CMF, MFI, OBV, and A/D (all normalized)
Zero Line: Horizontal line at zero
Threshold Lines: Dashed lines at +30 (strong accumulation), +10 (accumulation), -10 (distribution), -30 (strong distribution)
Zone Fills: Shaded areas above +30 (green) and below -30 (red)
Volume Surge Background: Purple background when volume surges occur
Smart Money Divergence Circles: Small circles marking divergence points
Institutional Pressure Triangles: Triangles marking strong buy/sell pressure
Flow Velocity Histogram: Shows rate of change in flow
Information Dashboard: Displays phase, flow index, CMF, MFI, OBV, A/D, volume ratio, price vs VWAP, flow velocity, and signal status
How to Use This Indicator
Step 1: Check Current Phase
Monitor the dashboard for institutional phase (Strong Accumulation, Accumulation, Neutral, Distribution, Strong Distribution).
Step 2: Analyze Flow Index
Flow Index > 20 = institutional buying, Flow Index < -20 = institutional selling. Trade in direction of institutional flow.
Step 3: Confirm with Components
Check CMF, MFI, OBV, and A/D for confirmation. All four positive = strongest accumulation signal.
Step 4: Monitor Volume Ratio
Volume surges (> 2x average) with positive flow confirm institutional buying. Volume surges with negative flow confirm institutional selling.
Step 5: Check Price vs VWAP
Price above VWAP with positive flow = bullish institutional positioning. Price below VWAP with negative flow = bearish institutional positioning.
Step 6: Watch for Smart Money Divergences
Divergences at extreme flow levels often precede reversals. Purple circles mark these critical points.
Step 7: Look for Institutional Pressure
Triangles mark strong institutional buy/sell pressure with volume confirmation. These are high-probability signals.
Best Practices
Trade in direction of institutional phase - don't fight whale positioning
Wait for Strong Accumulation/Distribution phases for highest conviction
Confirm flow signals with volume surges - flow without volume may be weak
Use smart money divergences as early reversal warnings
Monitor flow velocity - accelerating flow indicates increasing institutional participation
Combine with price action and support/resistance for entry timing
Be patient - institutional accumulation/distribution can take time
Use higher timeframe flow for stronger significance
Input Parameters
Chaikin Money Flow:
CMF Length: Period for CMF calculation (default: 20)
Money Flow Index:
MFI Length: Period for MFI calculation (default: 14)
MFI Overbought: Threshold for overbought (default: 80)
MFI Oversold: Threshold for oversold (default: 20)
Volume Configuration:
Volume MA Length: Period for average volume (default: 20)
Surge Threshold: Multiplier for volume surges (default: 2.0x)
Show Volume Profile: Toggle volume display (default: enabled)
VWAP Analysis:
VWAP Std Dev: Standard deviation multiplier (default: 2.0)
Accumulation/Distribution:
A/D Smoothing: EMA smoothing period (default: 14)
Phase Threshold: Threshold for phase classification (default: 0.5)
Visual Configuration:
Accumulation/Distribution/Neutral/Smart Money Colors: Customizable colors
Originality Statement
This indicator is original in its comprehensive institutional flow approach. While individual components (CMF, MFI, OBV, VWAP, A/D) are established concepts, this indicator is justified because:
It combines five distinct money flow methodologies into a unified institutional flow index
The phase detection system classifies institutional positioning systematically
Smart money divergence detection identifies when institutions position against price
Institutional pressure detection with volume confirmation reveals whale activity
Flow velocity and acceleration tracking predict institutional momentum changes
Integration of VWAP analysis provides institutional price positioning context
The comprehensive dashboard presents all institutional flow metrics simultaneously
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Trading involves substantial risk of loss. Institutional flow analysis does not guarantee profitable trades. Whale activity does not guarantee price direction. Always use proper risk management and never risk more than you can afford to lose.
-Made with passion by officialjackofalltrades Indicator

AG Pro MFI Flow Imbalance [AGPro Series]AG Pro MFI Flow Imbalance
Overview
AG Pro MFI Flow Imbalance is a directional money-flow study built to evaluate whether buying pressure and selling pressure are developing in a balanced way or becoming meaningfully one-sided. Instead of using the classical Money Flow Index as a simple overbought/oversold gauge, this script reframes money flow as an imbalance problem. The objective is not to predict future price with certainty, and it is not presented as a standalone trading system. Its role is to help traders inspect how strongly flow is leaning to one side, how persistent that imbalance has become, and whether the condition is expanding, stabilizing, fading, or returning toward balance.
This publication is designed around a very specific analytical question: is money flow distributed relatively evenly between both sides, or is participation clustering in a way that suggests directional dominance? That is the core problem the script is trying to organize visually. In practical terms, the script separates positive and negative money flow, normalizes the relationship between them, smooths the result for readability, and then classifies the current state using threshold bands, persistence logic, event labels, and a compact summary panel. The result is a tool focused on flow asymmetry rather than on generic oscillator levels.
This distinction is important because many money-flow and volume-based studies are ultimately used as broad momentum proxies. That is not the purpose here. AG Pro MFI Flow Imbalance is built to track directional imbalance itself. The central read is not simply “high” or “low”; the central read is whether flow is bullish or bearish, whether that condition is weak or strong, whether it is becoming more one-sided or less one-sided, and whether the move is persistent enough to deserve more attention.
Within the AG Pro catalog, this script is intentionally solving a different problem than the other tools. It is not a break-and-retest study, not a reclaim tool, not a trendline or structure-mapping script, not a trend-quality score, not a session-based framework, not a cumulative OBV-style divergence tool, and not an RSI pressure oscillator. Those tools ask different questions. This script focuses on directional flow asymmetry: how unevenly money flow is being allocated between bullish and bearish participation over a rolling window. That difference is deliberate and central to the design.
What the script does
The script computes a directional money-flow relationship using typical price and volume, then compares positive flow and negative flow over a configurable lookback. That relationship is converted into a normalized imbalance score. A smoothed score line is then used to reduce noise and improve interpretability. The study also tracks whether the current imbalance is inside a neutral band, above a strong threshold, or in an extreme zone. It further evaluates persistence, meaning whether the imbalance has remained outside the neutral band for enough bars to be treated as more than a brief fluctuation.
The visual structure is built around several coordinated layers:
- a histogram that shows directional imbalance strength,
- a signal line for smoother state tracking,
- an optional raw score for users who want to inspect unsmoothed swings,
- threshold zones that separate neutral, strong, and extreme conditions,
- a subtle directional tint to keep the pane readable at a glance,
- optional event labels for selected state changes,
- and a compact panel summarizing state, bias, imbalance, strength, persistence, flow mode, MFI regime, and threshold status.
The script also includes alert conditions for directional starts, strong-threshold transitions, extreme imbalance events, fading conditions, and balance restoration. These events are not promises of future performance. They are structured notifications describing the current state of the internal flow model.
Unique edge
The unique edge of this script is not that it “improves” MFI by making stronger claims. Its edge is conceptual. Classical MFI is often read primarily as an overbought/oversold oscillator. AG Pro MFI Flow Imbalance uses MFI-related inputs as a flow framework, but the main output is a directional asymmetry engine. The question is not “is MFI high or low?” The question is “how skewed is money flow, how persistent is that skew, and is the current skew expanding or fading?”
That is why the classical MFI layer is treated as secondary context rather than as the primary engine. In this script, the MFI regime is an auxiliary read that can support or fail to support the main imbalance state. The main analytical product remains the normalized imbalance score and the way that score behaves through time.
How this differs from other AG Pro scripts
This point deserves to be explicit.
AG Pro MFI Flow Imbalance is not a structure script. It does not map swing highs, swing lows, break points, reclaim levels, retest quality, support-resistance interaction, or breakout geometry. Users looking for structural confirmation should not expect this tool to replace scripts built for structural analysis.
It is not a cumulative pressure-divergence script. It does not frame the market through OBV-style accumulation paths or through price-versus-cumulative-volume disagreement. Its emphasis is current directional flow imbalance over a rolling window, not cumulative divergence logic.
It is not an RSI pressure tool. It does not try to express internal price pressure through RSI-derived compression or momentum-pressure logic. The model here is flow allocation, not RSI pressure mapping.
It is not a trend-quality or regime-classification tool. While strong one-sided flow can sometimes align with directional trends, this script is not built to classify broad market regimes on its own. It is a flow diagnostic, not a complete regime engine.
It is not a dashboard or screener. It is a single-study analytical tool focused on one chart at a time, designed to help interpret the quality and persistence of directional money flow in context.
Because of those boundaries, this publication should not be read as a renamed variant of earlier AG Pro concepts. Its design problem, internal framing, visual hierarchy, and interpretation model are distinct.
Methodology
At a conceptual level, the script begins with typical price and volume to form raw money flow. It then separates that flow into positive and negative components based on directional change. Those components are aggregated over a lookback period and compared through a normalized formulation so the result can be interpreted as a directional imbalance score rather than as a raw cumulative total.
That normalized score is then smoothed for readability. Persistence logic is applied to distinguish short-lived pushes from conditions that remain outside the neutral band for multiple bars. The script then classifies the output using three broad layers of interpretation:
1. direction: bullish, bearish, or neutral,
2. strength: neutral, moderate, strong, or extreme,
3. behavior: expanding, fading, stabilizing, or balanced.
A secondary classical MFI context layer is also displayed in the panel. This is intentionally subordinate to the main engine. Its purpose is to tell the user whether the classical MFI backdrop is broadly supportive of the current imbalance read, not to replace the imbalance model.
How to read it
A positive histogram indicates bullish directional flow imbalance. A negative histogram indicates bearish directional flow imbalance. The further the score moves away from the neutral band, the more one-sided the flow condition becomes according to the script’s current settings.
The signal line is there to help users judge whether the imbalance is strengthening, flattening, or reversing. The raw score can also be displayed for users who want to compare unsmoothed behavior with the smoothed model.
The neutral band is important because it separates relatively balanced participation from meaningful directional skew. Movement beyond the strong threshold suggests a more assertive one-sided condition. Movement into the extreme zone signals a more stretched imbalance state. None of these states should be interpreted in isolation. A strong bullish imbalance is not automatically a bullish trade signal, and a strong bearish imbalance is not automatically a bearish trade signal. They are context states.
Persistence is also important. A one-bar excursion outside the neutral band does not carry the same informational weight as an imbalance that has remained active across several bars. That is why the panel includes a persistence read and why the optional event labels are intentionally restricted to selected events rather than every minor fluctuation.
Signals and alerts
The script includes structured event logic for the following types of conditions:
- bullish directional imbalance started,
- bearish directional imbalance started,
- bullish imbalance strengthening above the strong threshold,
- bearish imbalance strengthening above the strong threshold,
- bullish extreme imbalance,
- bearish extreme imbalance,
- imbalance fading,
- and balance restored.
These alerts describe what the internal model is detecting. They do not guarantee that price will continue in the same direction, reverse, or reach any target. Their function is organizational: they help users identify when the script’s flow state changes materially.
Key inputs
The main controls are MFI Length, Imbalance Lookback, Smoothing Length, Signal Length, Persistence Bars, Neutral Threshold, Strong Threshold, and Extreme Threshold. These settings alter how sensitive the model is to short-term changes and how quickly it escalates a condition from neutral to strong or extreme.
Visual controls allow users to show or hide the histogram, signal line, raw score, threshold zones, bias tint, MFI guides, summary panel, and event labels. Label behavior can also be filtered through event mode, size, spacing, and transparency settings so the pane can remain readable without becoming over-annotated.
Practical use
This script is generally most useful when the user wants to inspect whether directional participation is broadening or weakening under the surface. For example, a user may observe price moving higher while checking whether the flow imbalance remains supportive, is fading, or never became strong in the first place. Likewise, when price weakens, the script can help distinguish between shallow bearish flow and more persistent bearish dominance.
It can also be used as a filter alongside other tools. A trader using structural tools, trend tools, or volatility tools may find it useful to ask whether those reads are accompanied by balanced flow, strengthening directional skew, fading imbalance, or a return toward neutrality. In that role, AG Pro MFI Flow Imbalance functions as a context layer rather than as a one-click decision engine.
Limitations and transparency
This script does not know market intent, external news, hidden liquidity, or order-book behavior. It works only with the price and volume data available on the chart and the transformations applied to that data inside the model. Different symbols, exchanges, sessions, liquidity profiles, and volatility regimes can all change how the output behaves.
The study also does not eliminate the tradeoff between sensitivity and stability. Shorter settings may react faster but can become noisier. Longer settings may produce smoother states but react later. Threshold placement matters as well. If thresholds are too loose, the script may classify too many minor swings as meaningful. If thresholds are too strict, it may ignore useful early changes.
Users should also remember that strong imbalance is not inherently bullish or bearish in a simple predictive sense. A strong condition can persist, fade, stall, or reverse depending on context. The script is descriptive and analytical. It is not a guarantee engine.
Why it may be useful to traders
The usefulness of this publication comes from clarity, not from exaggerated claims. Many traders already work with price structure, trend tools, moving averages, or oscillators. What is often less explicit is whether money flow is becoming more balanced or more one-sided while those other reads are developing. This script offers a structured way to inspect that question and to keep the answer visually organized.
By focusing on directional money-flow asymmetry, persistence, threshold behavior, and event transitions, the study provides a clear framework for discussing flow conditions without collapsing everything into a generic overbought/oversold interpretation.
Risk disclosure
This script is an analytical indicator. It is not financial advice, not a promise of future results, and not a substitute for risk management, market context, or independent judgment. It does not guarantee profitable trades, trend continuation, reversals, or improved performance. Use it as one input among others. Indicator

Oscillators with DivergencesIf you do enjoy this indicator, check out my Ultimate Indicator! It is another collection of indicators all into one but that is for price chart indicators like Donchian, Keltner, EMAs, VWAP, Super Trend, etc.
This is a culmination of hundreds of hours (maybe even a thousand, honestly) of work spent working with dozens of indicators and now taking all of the ones I like the most and combining them into one so you can easily switch between them. On top of that, I have my own custom divergence code that can look back up to five pivots!
There's the following indicators all wrapped into this one:
MACD
RSI
CCI
Volume-Weighted MACD
MFI
Stochastic
Stochastic RSI
I could not get a working method of looking back several pivots from other people's code so I took a 1-pivot lookback method and copied out several times and made necessary changes to work properly. It will also draw an "early divergence" the moment it's happening rather than waiting the normal 5 candles to show. Once the 5 candles have passed, it will pick the furthest back divergence as the one to stay.
Let's say you have the divergences set to 3 pivot points. If a divergence happens that goes back 1 pivot point, but later a 3 pivot divergence overlaps it, the 1 pivot will get removed after the 3 pivot early divergence is confirmed after its 5 candles have passed. Just put it on the chart and you'll see, it sounds crazy to explain.
I've added a bunch of tooltips to explain each setting. Please read them if you have questions. I've also added notes into my code if you do choose to use it for your own purposes or make changes. I wish you luck haha, it's a bit of a mess. Some things were commented out but elft in there just beacuse I never know when I want to re-enable it or just see what the original code was. Indicator

Indicator

Cluster Money Flow Index [UAlgo]Cluster Money Flow Index is a zone based MFI structure tool designed to detect repeated Money Flow Index turning points and group them into meaningful reaction areas. Instead of treating every isolated MFI pivot as a standalone event, the script searches for clusters of nearby pivots that occur around similar MFI levels. When enough touches accumulate in the same area, the indicator promotes that region into a live zone.
The main idea is simple. If MFI repeatedly turns down from a similar high region, that area can behave like an overbought supply style zone inside the oscillator. If MFI repeatedly turns up from a similar low region, that area can behave like an oversold demand style zone. By clustering these repeated reactions, the script attempts to map oscillator structure in the same way traders often map support and resistance on price.
What makes this indicator especially useful is that the zones are not static. They can expand when fresh touches appear, they gain visual strength as more reactions accumulate, and they can later be invalidated if MFI decisively breaks beyond them. This creates a much more dynamic view than a simple overbought line, oversold line, or ordinary pivot marker.
The script also includes a smoothed MFI reference, optional center lines, zone labels, a live dashboard, and alert conditions when MFI enters active cluster zones. This makes the indicator useful both for structural oscillator analysis and for workflow monitoring.
In practical use, Cluster Money Flow Index can help highlight repeated MFI rejection areas, repeated MFI support areas, transition zones near the middle range, and regions where oscillator behavior has historically clustered before reversal or pause.
🔹 Features
🔸 Pivot Based MFI Structure Detection
The script detects confirmed MFI pivot highs and pivot lows using user defined left and right pivot settings. This means clusters are built only from confirmed oscillator turning points rather than from every small fluctuation.
🔸 Cluster Logic Instead of Single Pivot Logic
A new pivot does not automatically create a new zone. The script first checks whether that pivot is close enough to an existing valid cluster. If it is, the cluster gains another touch. If it is not, a new cluster is created.
🔸 Adaptive Proximity Threshold
Cluster sensitivity is based on MFI volatility. The script calculates the standard deviation of raw MFI and multiplies it by the user selected proximity multiplier. This makes zone grouping adapt to the current oscillator environment.
🔸 Minimum Touch Confirmation
A cluster is displayed only after it reaches the required minimum number of touches. This helps filter out weak one time reactions and focuses attention on repeated oscillator behavior.
🔸 Optional Zone Expansion
When enabled, the zone can expand with each new retest. If a fresh pivot extends beyond the current cluster boundary, the top or bottom is updated and the center is recalculated. This allows the zone to evolve naturally as more data arrives.
🔸 Dynamic Zone Strength Visualization
Zones become slightly more visible as touch count increases. This gives stronger clusters more visual weight and helps the user quickly distinguish weak from strong oscillator regions.
🔸 Overbought, Oversold, and Mid Context
Zone color is chosen from the zone center. Clusters centered high in the MFI range use the overbought color, clusters centered low use the oversold color, and clusters near the middle range use the mid color.
🔸 Optional Center Line and Labels
Each displayed cluster can include a center line and an information label showing whether the zone is an upper or lower type cluster, its approximate center level, and its total touch count.
🔸 Invalidation Logic
A zone remains valid until MFI breaks clearly beyond it. Upper clusters are invalidated if MFI pushes decisively above the zone. Lower clusters are invalidated if MFI drops decisively below it.
🔸 Dashboard Summary
A built in dashboard can show current MFI state, number of active upper and lower zones, strongest cluster strength, and the nearest upper and lower cluster centers.
🔸 Alert Support
Alerts are provided for:
MFI entering an upper cluster zone,
MFI entering a lower cluster zone,
MFI crossing above 80,
and MFI crossing below 20.
🔹 Calculations
1) Calculating Raw and Smoothed MFI
float rawMFI = ta.mfi(hlc3, mfiLen)
float smoothedMFI = ta.ema(rawMFI, mfiSmooth)
This is the starting point of the indicator.
The script first calculates the standard Money Flow Index from hlc3 using the selected MFI length. Then it applies an EMA smoothing pass to create a softer reference line.
The raw MFI is used for all pivot detection, clustering, invalidation, zone interaction, and alerts. The smoothed MFI is mainly a visual aid that helps the user see the broader oscillator path more clearly.
So the indicator always builds its logic from raw MFI structure while also giving the user a smoother secondary guide.
2) Defining the Cluster Object
type MFICluster
float top
float bottom
float center
bool isOB
int touches
int firstBarTime
int lastTouchTime
int firstBarIdx
bool isValid
bool isDisplayed
box zoneBox
line centerLine
label infoLabel
This object stores the full lifecycle of one MFI cluster zone.
It contains:
the zone top,
the zone bottom,
the center level,
whether the zone came from an upper pivot or lower pivot,
how many touches it has,
when it first formed,
when it was last touched,
whether it is still valid,
whether it has already been drawn,
and its visual objects.
So the script is not just plotting shapes. It is managing structured oscillator zones that have state, memory, and display properties.
3) Calculating the Adaptive Proximity Threshold
float mfiStd = ta.stdev(rawMFI, 50)
float proximity = math.max(2.0, mfiStd * proxMult)
This is the sensitivity engine of the clustering logic.
The script measures the standard deviation of raw MFI over the last fifty bars. It then multiplies that volatility measure by the user selected proximity multiplier. Finally, it enforces a minimum threshold of 2.0.
This means a new pivot is considered close enough to an existing cluster only if it lies within a volatility adjusted distance from the cluster center.
So the zone grouping automatically adapts to how noisy or how compressed the MFI environment currently is.
4) Detecting Confirmed MFI Pivot Highs and Lows
float mfiPH = ta.pivothigh(rawMFI, pivotLeft, pivotRight)
float mfiPL = ta.pivotlow(rawMFI, pivotLeft, pivotRight)
This is the pivot discovery step.
The script finds confirmed pivot highs and pivot lows directly on the raw MFI series. A pivot high becomes an upper type candidate cluster. A pivot low becomes a lower type candidate cluster.
Because the pivots are confirmed using both left and right bars, the script avoids reacting too early to temporary oscillator wiggles.
So all clustering logic is based on confirmed structure rather than live unconfirmed turns.
5) Checking Whether a Pivot Belongs to an Existing Cluster
method checkProximity(MFICluster this, float pivotVal, bool isOB, float threshold) =>
bool result = false
if this.isOB == isOB and this.isValid
if math.abs(pivotVal - this.center) <= threshold
result := true
result
This method decides whether a new pivot should strengthen an existing cluster.
A pivot can only join a cluster if:
the cluster is of the same type,
the cluster is still valid,
and the distance between the pivot value and the cluster center is less than or equal to the current threshold.
This is important because upper pivot highs are never mixed with lower pivot lows, and stale invalidated clusters are ignored.
So this method is the actual grouping filter that turns repeated nearby pivots into one shared zone.
6) Adding a New Touch to a Cluster
method addTouch(MFICluster this, float pivotVal, int pTime, bool shouldExpand) =>
this.touches += 1
this.lastTouchTime := pTime
if shouldExpand
if pivotVal > this.top
this.top := pivotVal
if pivotVal < this.bottom
this.bottom := pivotVal
this.center := (this.top + this.bottom) / 2.0
int(na)
Once a pivot is assigned to a cluster, this method updates the cluster state.
The touch count is incremented and the last touch time is refreshed. If zone expansion is enabled, the script also checks whether the new pivot extends above the current top or below the current bottom. If it does, the cluster boundaries are widened and the center is recalculated.
So clusters do not have to remain frozen. They can evolve as new oscillator reactions appear.
7) Creating a New Cluster When No Match Exists
if not wasClustered
float zoneHalf = math.max(proximity * 0.15, 0.8)
float zTop = pVal + zoneHalf
float zBot = pVal - zoneHalf
MFICluster newCl = MFICluster.new(
top = zTop,
bottom = zBot,
center = pVal,
isOB = isOB,
touches = 1,
firstBarTime = pTime,
lastTouchTime= pTime,
firstBarIdx = pBarIdx,
isValid = true,
isDisplayed = false)
If the new pivot does not belong to any existing valid cluster, the script creates a fresh cluster.
The initial zone width is determined from the current proximity threshold. Specifically, the script takes fifteen percent of that threshold and applies it equally above and below the pivot center, while enforcing a minimum half size of 0.8.
So every new cluster begins as a compact seed zone around one confirmed pivot and can later grow through repeated touches.
8) Minimum Touch Display Rule
if this.touches >= minT
This is the first major visual gate inside the drawing logic.
A cluster is not drawn just because it exists internally. It becomes visible only when its touch count reaches the user selected minimum touches threshold.
This helps reduce noise by hiding weak single touch or low confidence zones until repeated oscillator interaction has been proven.
So display is based on structural repetition, not just first occurrence.
9) Zone Strength and Opacity Calculation
f_calcOpacity(int touches, int baseOp) =>
float strength = math.min((touches - 1) / 8.0, 1.0)
int result = int(baseOp + (strength * 15))
math.min(result, 40)
This function converts touch count into visual intensity.
The script measures strength from the number of touches relative to a capped scale. Then it adds that strength bonus to the base opacity setting, while also imposing an upper limit.
This means zones with more touches appear slightly stronger and easier to notice than weaker zones.
So touch count influences not only logic, but also visual emphasis.
10) Zone Color Selection
f_zoneColor(float center) =>
center >= 70 ? obColor : center <= 30 ? osColor : midColor
This is the color classification rule.
If the cluster center is at or above 70, the zone uses the overbought color.
If the cluster center is at or below 30, the zone uses the oversold color.
Anything in between uses the mid color.
This is important because a cluster may come from an upper or lower pivot, but its actual center still determines how extreme its oscillator location really is.
So the visual color reflects where the cluster sits inside the MFI range.
11) Drawing the Zone Box
this.zoneBox := box.new(
left=this.firstBarTime, top=this.top, right=time, bottom=this.bottom,
border_color=borderCol, border_width=bWidth, bgcolor=fillCol,
xloc=xloc.bar_time)
Once the cluster qualifies for display, the script draws a box from the first touch time to the current bar time, with the cluster’s top and bottom as boundaries.
So the zone is not a single point marker. It becomes a persistent horizontal oscillator region that extends over time.
This makes the MFI structure much easier to interpret as a live area rather than isolated pivot dots.
12) Drawing the Optional Center Line
if drawCenter
this.centerLine := line.new(
x1=this.firstBarTime, y1=this.center, x2=time, y2=this.center,
color=color.new(baseCol, zoneOpacity - 5), style=line.style_dotted,
width=1, xloc=xloc.bar_time)
If enabled, the script also draws a center line through the middle of the cluster.
This gives the user a clean reference for the average reaction level inside the zone, which can be useful when the zone expands and becomes wider over time.
So the center line acts like an equilibrium guide inside the cluster.
13) Drawing the Info Label
string typeStr = this.isOB ? "OB" : "OS"
string lblText = typeStr + " · " + str.tostring(math.round(this.center, 1)) + " | ×" + str.tostring(this.touches)
this.infoLabel := label.new(
x=time, y=this.isOB ? this.top : this.bottom,
text=lblText, textcolor=textCol,
style=label.style_none, size=f_labelSize(lSize),
xloc=xloc.bar_time, textalign=text.align_right)
The label contains three pieces of information:
the cluster type,
the approximate center level,
and the touch count.
This means a user can immediately see whether the zone is an upper or lower cluster, where it is centered, and how strong it is based on repeated reactions.
So the label turns the zone into an interpretable structural object instead of only a colored band.
14) Updating Existing Displayed Zones
box.set_right(this.zoneBox, time)
box.set_bgcolor(this.zoneBox, fillCol)
box.set_border_color(this.zoneBox, borderCol)
box.set_border_width(this.zoneBox, bWidth)
box.set_top(this.zoneBox, this.top)
box.set_bottom(this.zoneBox, this.bottom)
Once a zone is already displayed and still valid, the script updates it on every bar.
It extends the right edge to the latest time, refreshes the fill and border styling, and updates the top and bottom in case the zone expanded after new touches.
So visible zones remain live and adaptive rather than remaining frozen in their original shape.
15) Zone Invalidation Logic
method invalidate(MFICluster this, float mfiVal) =>
bool broken = false
if this.isOB
if mfiVal > this.top + 2
broken := true
else
if mfiVal < this.bottom - 2
broken := true
if broken
this.isValid := false
broken
This method decides when a cluster has failed.
For upper type clusters, invalidation occurs if MFI pushes clearly above the zone top by more than two MFI points.
For lower type clusters, invalidation occurs if MFI falls clearly below the zone bottom by more than two MFI points.
This extra buffer is important because it avoids invalidating zones on tiny marginal touches.
So the script requires a decisive break beyond the zone before it stops treating that cluster as active structure.
16) Visual Handling of Invalidated Zones
else
box.set_bgcolor(this.zoneBox, color.new(baseCol, math.max(zoneOpacity + 20, 95)))
box.set_border_color(this.zoneBox, color.new(baseCol, math.max(zoneOpacity + 20, 95)))
if not na(this.centerLine)
line.set_style(this.centerLine, line.style_dashed)
line.set_color(this.centerLine, color.new(baseCol, 80))
When a cluster becomes invalid, the script does not delete it immediately. Instead, it fades the zone heavily and softens the center line.
This allows the user to keep the historical context of where the zone existed while also clearly seeing that it is no longer considered valid.
So invalidated zones remain on the pane as context, but not as active structure.
17) Detecting Whether MFI Is Inside an Active Cluster
if cl.isValid and cl.touches >= minTouches
if cl.isOB and rawMFI >= cl.bottom and rawMFI <= cl.top + 5
inOBZone := true
if not cl.isOB and rawMFI <= cl.top and rawMFI >= cl.bottom - 5
inOSZone := true
This block checks whether the current raw MFI value has entered a valid displayed cluster zone.
For upper clusters, the script allows a small tolerance above the zone.
For lower clusters, it allows a small tolerance below the zone.
This produces the conditions used by the entry alerts. So the alerts are not tied merely to MFI crossing 80 or 20. They can also trigger when MFI enters historically clustered oscillator reaction areas.
18) Dashboard Metrics
int obZoneCount = 0
int osZoneCount = 0
int strongMax = 0
float nearOB = na
float nearOS = na
if cl.touches > strongMax
strongMax := cl.touches
if cl.touches >= minTouches
if cl.center >= 70
obZoneCount += 1
else if cl.center <= 30
osZoneCount += 1
The dashboard summarizes the live structure.
It counts how many active displayed zones are centered in overbought and oversold territory, finds the highest touch count among all clusters, and tracks the nearest upper and lower cluster centers relative to current MFI.
So the dashboard gives a quick structural overview without requiring the user to visually inspect every zone one by one.
19) MFI State Classification for the Dashboard
string mfiState = rawMFI >= 80 ? "OVERBOUGHT" : rawMFI <= 20 ? "OVERSOLD" : rawMFI >= 50 ? "BULLISH" : "BEARISH"
This line classifies the current oscillator state into four broad conditions.
At or above 80 is treated as overbought.
At or below 20 is treated as oversold.
Between 50 and 80 is treated as bullish.
Between 20 and 50 is treated as bearish.
This gives the dashboard an easy to read directional context in addition to the cluster statistics.
20) Alert Conditions
alertcondition(inOBZone, title="MFI Entered OB Cluster Zone", message="Cluster MFI: Price entered an overbought cluster zone — watch for reversal")
alertcondition(inOSZone, title="MFI Entered OS Cluster Zone", message="Cluster MFI: Price entered an oversold cluster zone — watch for reversal")
alertcondition(ta.crossover(rawMFI, 80), title="MFI Crossed Above 80", message="Cluster MFI: MFI crossed above 80 — overbought territory")
alertcondition(ta.crossunder(rawMFI, 20), title="MFI Crossed Below 20", message="Cluster MFI: MFI crossed below 20 — oversold territory")
The script provides four alert types.
Two alerts are structural cluster alerts:
entering an upper cluster,
and entering a lower cluster.
Two alerts are classic threshold alerts:
crossing above 80,
and crossing below 20.
So the user can monitor both traditional MFI extremes and the more advanced cluster based structure. Indicator

3D Money Flow Index [UAlgo]3D Money Flow Index is a visual enhancement of the Money Flow Index that transforms a classic momentum oscillator into a pseudo 3D ribbon rendered inside its own pane. Instead of displaying MFI as only a single flat line, the script builds a front surface, a back surface, connecting edges, and shaded faces, then projects those elements through a camera style transformation using configurable yaw and pitch angles. The result is a depth based MFI visualization that makes momentum shifts, expansion, compression, and reversals much more expressive than a standard oscillator plot.
The indicator runs in a separate pane ( overlay=false ) and combines several components into one visual framework:
A custom MFI style calculation
A 3D ribbon built from projected historical MFI values
Optional dynamic ribbon depth based on volatility
Buy and sell markers when MFI crosses key threshold levels
Regular bullish and bearish divergence detection using MFI pivots versus price pivots
Projected guide levels for 80, 50, and 20
This makes the script useful for traders who want both analysis and presentation. It keeps the familiar MFI logic at the core, but wraps it in a more intuitive spatial display that can help visually separate trend persistence, reversal attempts, and divergence structures.
Educational tool only. Not financial advice.
🔹 Features
🔸 1) 3D Ribbon Style MFI Visualization
The core feature of the script is a pseudo 3D MFI ribbon. For each historical bar inside the selected history length, the indicator creates a front and back layer around the same MFI value, connects those layers with side edges, and fills the face between them. This gives the oscillator a ribbon like body rather than a single thin line.
The ribbon is projected into the pane using time for the horizontal axis and MFI value for the vertical axis, which creates a clean depth illusion without leaving the oscillator panel.
🔸 2) Adjustable Camera Style Projection
The script includes two visual controls that change how the ribbon appears in space:
Yaw Angle changes the left right visual rotation of the ribbon
Pitch Angle changes the vertical tilt of the ribbon
These controls allow the user to choose a flatter, more technical display or a more dramatic perspective oriented look.
🔸 3) Configurable Ribbon Depth
The Ribbon Depth setting controls how thick the 3D body appears along the synthetic Z axis. Lower values create a thinner ribbon, while higher values create a deeper and more dramatic structure.
This is especially useful when adapting the visualization for different screen sizes or preferred chart density.
🔸 4) Optional Dynamic Volatility Based Depth
When enabled, the script automatically scales ribbon depth using current ATR relative to its longer average. This means the visual thickness expands during higher volatility and compresses during quieter periods.
The result is a ribbon that can communicate both oscillator behavior and relative volatility regime at the same time.
🔸 5) Custom Money Flow Index Calculation
Instead of using the built in ta.mfi() , the script calculates its own MFI style series from positive and negative money flow sums derived from price change and volume. This gives the indicator full internal control over the oscillator values used by the 3D engine, divergence logic, and threshold signals.
🔸 6) Buy and Sell Threshold Markers
The script generates event markers when MFI crosses important momentum thresholds:
Buy style event when MFI crosses above 20
Sell style event when MFI crosses below 80
These events are rendered as small 3D boxes attached to the ribbon, which keeps the signal presentation consistent with the indicator’s depth based design.
🔸 7) Regular Divergence Detection
The indicator can detect regular divergence by comparing MFI pivots to price pivots:
Bearish divergence when price makes a higher high but MFI makes a lower high
Bullish divergence when price makes a lower low but MFI makes a higher low
Divergence is optional and can be turned on or off through the settings.
🔸 8) 3D Aligned Divergence Lines
When a divergence is detected, the script draws a thicker line between the two MFI pivot points, positioned on the ribbon’s front face so the divergence appears visually attached to the 3D structure instead of floating away from it.
It also draws dotted connector lines from the divergence line back to the ribbon body, reinforcing the spatial relationship.
🔸 9) Historical Ribbon Length Control
The History Length input limits how many bars of 3D ribbon are drawn. This helps balance visual richness with performance and keeps the pane from becoming overcrowded.
🔸 10) Gradient Color Mapping by MFI Level
The ribbon is colored dynamically using a gradient based on MFI value:
Lower readings lean bearish
Higher readings lean bullish
This means the ribbon itself functions as a live regime map, not just a structural shape.
🔸 11) Projected Guide Levels
The script draws perspective aligned guide levels for:
80
50
20
These are not flat horizontal pane lines. They are projected using the same camera logic as the ribbon, which keeps the entire display visually coherent.
🔸 12) Full Last Bar Redraw for Visual Consistency
All 3D objects are deleted and rebuilt on the last bar. This ensures that the current camera angles, ribbon depth, divergence set, and markers are always rendered consistently with the latest data.
🔸 13) Object Based Design for Maintainability
The script uses several custom types:
Point3D for synthetic 3D coordinates
Point2D for projected time / value coordinates
Camera for projection controls
DivLine for stored divergence events
This makes the visual engine and signal logic more structured and easier to extend.
🔹 Calculations
1) Custom MFI Style Calculation
The script computes money flow using separate positive and negative sums based on the change in the selected source:
float upper = math.sum(volume * (ta.change(src) <= 0 ? 0 : src), length)
float lower = math.sum(volume * (ta.change(src) >= 0 ? 0 : src), length)
Then it computes an MFI style output:
float ratio = lower == 0 ? 0 : upper / lower
100.0 - (100.0 / (1.0 + ratio))
Interpretation:
Positive source changes contribute to the upper flow sum.
Negative source changes contribute to the lower flow sum.
The resulting ratio is converted into an oscillator style value on a 0 to 100 scale.
Important implementation note:
This is a custom MFI style calculation, not the built in PulseWire MFI function. The script uses its own edge case handling when lower == 0 .
2) Volatility Based Depth Scaling
The dynamic depth option uses ATR relative to a longer ATR average:
float atr = ta.atr(14)
float avg_atr = ta.sma(atr, 100)
float depth_scaler = use_dynamic_depth ? math.max(0.5, math.min(2.5, atr / avg_atr)) : 1.0
Interpretation:
If current ATR is above its longer average, the ribbon becomes deeper.
If current ATR is below its longer average, the ribbon becomes thinner.
The multiplier is clamped between 0.5 and 2.5 for stability.
3) 3D Coordinate Model
Each ribbon segment uses synthetic 3D coordinates:
x represents bars back in history
y represents the MFI value
z represents the ribbon depth offset
For each bar, the ribbon creates:
A front point at z = -depth / 2
A back point at z = depth / 2
This creates the geometry needed for the front edge, back edge, side edge, and face fill.
4) Camera Projection Logic
The script projects each 3D point into 2D coordinates using yaw and pitch rotations:
float x1 = p.x * math.cos(rad_yaw) - p.z * math.sin(rad_yaw)
float z1 = p.x * math.sin(rad_yaw) + p.z * math.cos(rad_yaw)
float y1 = p.y * math.cos(rad_pitch) - z1 * math.sin(rad_pitch)
Then it converts the projected coordinates into chart coordinates:
int proj_time = int(ref_time - (x1 * time_step))
float proj_price = y1
Interpretation:
The script does not use true 3D rendering. It uses geometric projection math to simulate depth within normal chart objects.
5) Time Step Mapping
The horizontal spacing of projected points is derived from current chart time:
int dt = time - time
if bar_index == 0
dt := 60000
This lets the projected ribbon stay aligned with the current timeframe interval.
6) Ribbon Segment Construction
For each bar pair in the selected history window, the script creates:
Front line from point A front to point B front
Back line from point A back to point B back
Connector line from point A front to point A back
A filled face polygon between the front and back edges
This produces the actual ribbon body. The fill is created only for recent segments to stay within object limits:
if i < 90
...
polylines.push(polyline.new(points, ... fill_color=face_col ...))
7) Gradient Color Logic for the Ribbon
The ribbon color is mapped from current MFI value:
color base_col = color.from_gradient(val_a, 20, 80, col_bear, col_bull)
Interpretation:
Lower MFI values shift toward the bearish color.
Higher MFI values shift toward the bullish color.
Midrange values naturally blend between the two.
8) Buy and Sell Signal Logic
The script defines simple threshold crossing events:
bool sig_buy = ta.crossover(mfi_val, 20)
bool sig_sell = ta.crossunder(mfi_val, 80)
Interpretation:
Buy event means MFI rises back above the lower threshold, which can suggest recovery from oversold pressure.
Sell event means MFI falls back below the upper threshold, which can suggest rejection from overbought pressure.
These are event markers, not standalone entry guarantees.
9) 3D Marker Drawing
When a buy or sell signal occurs, the script draws a small 3D box marker using the same projection engine as the ribbon. The marker is built from four projected corners and connected with line segments so it appears attached to the ribbon structure.
This keeps the signal styling consistent with the rest of the indicator.
10) Pivot Detection for Divergence
The divergence engine finds pivot highs and lows on the MFI series:
float ph = ta.pivothigh(mfi_val, piv_len, piv_len)
float pl = ta.pivotlow(mfi_val, piv_len, piv_len)
Each pivot is aligned to its true pivot bar using:
int curr_piv_bar = bar_index - piv_len
This ensures divergence anchors are placed at the actual turning points, not the later confirmation bar.
11) Bearish Divergence Logic
When an MFI pivot high is confirmed, the script compares it with the prior MFI pivot high:
bool bear_div = (curr_price_high > last_price_ph) and (curr_piv_val < last_ph_val)
Interpretation:
Price makes a higher high
MFI makes a lower high
If true, a bearish divergence line is stored.
12) Bullish Divergence Logic
When an MFI pivot low is confirmed, the script compares it with the prior MFI pivot low:
bool bull_div = (curr_price_low < last_price_pl) and (curr_piv_val > last_pl_val)
Interpretation:
Price makes a lower low
MFI makes a higher low
If true, a bullish divergence line is stored.
13) Divergence Storage and Cleanup
Detected divergences are stored in an array of DivLine objects. Older divergence entries are removed once they fall too far outside the active visual window:
if (bar_index - divergences.get(0).start_bar) > (history_len + 100)
divergences.shift()
This prevents old divergence structures from accumulating forever.
14) 3D Aligned Divergence Rendering
When a divergence is drawn, the script places it on the front face of the ribbon by using:
float z_offset = -current_depth / 2.0
This is an important visual detail because it keeps the divergence line attached to the ribbon surface rather than offset in empty space.
The script also draws dotted connector lines from the divergence line endpoints back to the ribbon center plane, reinforcing the 3D attachment.
15) Projected Guide Level Rendering
The indicator draws projected guide levels at 80, 50, and 20 using the same projection method:
draw_grid_line(80, color.red)
draw_grid_line(50, color.gray)
draw_grid_line(20, color.green)
This keeps the threshold references visually aligned with the ribbon perspective instead of using flat horizontal lines that would break the illusion.
16) Full Last Bar Rebuild Process
On the last bar, the script:
Deletes all existing lines, polylines, and labels
Recreates the camera
Rebuilds the ribbon over the selected history length
Replots signal markers
Renders divergence lines
Draws guide levels
This full redraw approach ensures visual consistency whenever the latest bar changes, the camera angles change, or volatility depth changes. Indicator

MFI Distribution [UAlgo]MFI Distribution is a statistics focused Money Flow Index indicator that combines a live MFI oscillator with a forward projected distribution histogram and normality diagnostics. Instead of only showing the current MFI line, the script collects a rolling history of MFI values, studies their distribution over a configurable lookback period, and visualizes the result as a histogram in the oscillator pane.
The indicator is designed for traders who want to understand how MFI behaves as a distribution , not only where it is on the current bar. It provides a compact statistical framework that helps answer questions such as:
Is MFI clustering around a narrow regime or spread across the full range
Is the recent MFI behavior skewed toward strong buying or selling pressure
Does the MFI sample look approximately normal, or is it fat tailed / asymmetric
How extreme is the current reading relative to the recent distribution
To support this, the script includes:
A live MFI line with dynamic gradient coloring
Overbought and oversold visual zones with gradient fills
A histogram of MFI frequency distribution over the selected lookback
An optional Gaussian curve overlay for visual comparison
A statistical dashboard with mean, standard deviation, skewness, kurtosis, and Jarque Bera normality test results
The histogram is drawn into the future area of the pane, so it does not interfere with the live MFI trace while still remaining visually aligned to the 0 to 100 oscillator scale.
Educational tool only. Not financial advice.
🔹 Features
🔸 1) Live MFI Oscillator with Regime Aware Coloring
The script plots a standard MFI line and colors it dynamically based on level behavior:
High MFI values transition toward red tones
Low MFI values transition toward green tones
Mid range values remain purple
This makes the oscillator easier to read at a glance, especially during sustained overbought or oversold conditions.
🔸 2) Overbought and Oversold Zone Visualization
The indicator includes standard MFI reference levels at 80 and 20, then adds gradient fills that become visible when the MFI pushes into extreme zones. This provides better visual emphasis for momentum extremes without cluttering the chart.
🔸 3) Rolling MFI History Collection for Statistical Analysis
The script maintains an internal array of the latest MFI values up to the user defined lookback length. This rolling sample is used to compute all distribution statistics and histogram frequencies on the last bar.
This design keeps the indicator responsive while ensuring the displayed distribution reflects the most recent market behavior.
🔸 4) Forward Projected MFI Distribution Histogram
A histogram is drawn in the oscillator pane using bins over the fixed MFI range from 0 to 100. Each bin counts how many MFI observations fall inside that interval during the lookback window.
The histogram is projected to the right of current price action in the pane, giving users a clean distribution panel without covering the live MFI line.
🔸 5) Configurable Histogram Resolution and Width
Users can control:
Lookback period used for distribution analysis
Number of histogram bins
Visual width of the histogram in future bars
This makes the tool flexible for both high level regime reading and finer distribution inspection.
🔸 6) Optional Gaussian Curve Overlay
When enabled, the script overlays a theoretical normal distribution curve using the sample mean and sample standard deviation. The curve is normalized to the histogram height so users can visually compare the empirical MFI distribution against a bell curve shape.
This is useful for quickly spotting asymmetry, multimodal clustering, or fat tail behavior.
🔸 7) Full Statistical Summary Dashboard
A built in dashboard table displays:
Mean
Standard Deviation
Skewness
Kurtosis (excess kurtosis)
Jarque Bera statistic
Pass / Fail normality status (95% threshold logic)
This turns the indicator into a compact quantitative diagnostic panel, not only a visual oscillator.
🔸 8) Jarque Bera Normality Test Classification
The script evaluates whether the MFI sample is approximately normal using a Jarque Bera style test and a fixed chi square threshold (95% confidence, 2 degrees of freedom). It then marks the result as PASS (Normal) or FAIL (Non Normal).
This helps traders distinguish between more stable oscillator regimes and structurally distorted ones.
🔸 9) Histogram Color Theme Based on Normality Result
The histogram automatically changes style depending on the test result:
Teal themed histogram when normality test passes
Red themed histogram when normality test fails
This creates an immediate visual signal of distribution quality without needing to read the dashboard first.
🔸 10) Last Bar Only Heavy Processing for Efficiency
Statistical calculations, histogram drawing, and dashboard refresh are performed only on the last bar. This reduces object churn and improves performance while preserving real time utility.
🔸 11) Object Based Drawing Management
The script uses custom types to organize logic:
DistributionStats for statistical values and normality output
HistoDrawer for histogram bars, curve lines, and labels
This makes the code structured and easier to extend with future features such as percentiles, z scores, or alternate tests.
🔹 Calculations
1) MFI Calculation
The script computes Money Flow Index from a user selected source and length:
mfi_val = ta.mfi(mfi_src, mfi_len)
This value is plotted in the oscillator pane and colored dynamically according to level.
2) Rolling History Buffer for Distribution Sampling
Each valid MFI value is pushed into a rolling array used for statistical analysis:
if not na(mfi_val)
mfi_history.push(mfi_val)
if mfi_history.size() > lookback
mfi_history.shift()
This ensures the sample size is capped at the selected lookback and continuously refreshed with recent values.
3) Sample Variance and Standard Deviation
The script computes sample variance using the classic n minus 1 denominator:
sum_sq_diff / (n - 1)
Standard deviation is then calculated as:
stats.stdev := math.sqrt(variance_val)
Using sample variance is appropriate here because the lookback window is treated as a sample of recent market behavior.
4) Sample Skewness Calculation
Skewness is computed from standardized deviations and corrected for sample size:
(n * sum_cube_diff) / ((n - 1) * (n - 2))
Interpretation:
Positive skew suggests more mass on lower values with a right tail toward high MFI prints
Negative skew suggests more mass on higher values with a left tail toward low MFI prints
5) Excess Kurtosis Calculation
The script calculates excess kurtosis , where a normal distribution is centered around 0:
float term1 = (n * (n + 1) * sum_quad_diff) / ((n - 1) * (n - 2) * (n - 3))
float term2 = (3 * math.pow(n - 1, 2)) / ((n - 2) * (n - 3))
term1 - term2
Interpretation:
Positive excess kurtosis suggests heavier tails or more peaked behavior
Negative excess kurtosis suggests flatter distribution behavior
6) Jarque Bera Normality Test
The script uses skewness and excess kurtosis to compute the Jarque Bera statistic:
stats.jb_stat := (n / 6.0) * (math.pow(stats.skew, 2) + 0.25 * math.pow(stats.kurt, 2))
Then it compares the result against a 95 percent chi square critical value (2 degrees of freedom):
stats.is_normal := stats.jb_stat < 5.991
Important note:
The code defines a jb_p_value field in the stats type, but this version does not explicitly calculate or display a p value. The pass / fail logic is threshold based.
7) Fixed MFI Range Histogram Binning (0 to 100)
The histogram always bins data over the full MFI range:
float min_val = 0.0
float max_val = 100.0
float bin_size = (max_val - min_val) / bins
Each MFI value is mapped to a bin index:
int bin_idx = math.floor(val / bin_size)
The index is clamped so values at boundaries stay valid:
if bin_idx >= bins
bin_idx := bins - 1
if bin_idx < 0
bin_idx := 0
This makes the histogram consistent across symbols and timeframes.
8) Frequency Counting and Peak Detection
For each binned MFI observation, the script increments a frequency counter and tracks the highest bin count:
int new_count = frequencies.get(bin_idx) + 1
frequencies.set(bin_idx, new_count)
if new_count > max_freq
max_freq := new_count
The maximum frequency is later used to normalize histogram bar heights.
9) Histogram Rendering Geometry
The histogram is drawn as boxes in the oscillator pane, projected to the right of the last bar:
int start_bar = bar_index + 5
float base_y = 10.0
float available_height = 80.0
This effectively uses the MFI pane vertical range from about 10 to 90 for histogram height visualization, keeping it aligned with the oscillator scale.
Each bin is mapped to x coordinates using its MFI interval and the user selected histogram width:
int x_left = start_bar + math.round((bin_val_start / 100.0) * chart_width_bars)
int x_right = start_bar + math.round((bin_val_end / 100.0) * chart_width_bars)
Each frequency is mapped to a vertical height using:
float bar_height_val = (freq / max_freq) * available_height
10) Histogram Color Logic from Normality Result
The histogram color theme is selected from the Jarque Bera pass / fail result:
Teal palette when stats.is_normal is true
Red palette when stats.is_normal is false
This creates a direct link between statistical classification and visual presentation.
11) Gaussian Curve Overlay Calculation
The script defines a normal probability density function:
(1.0 / (sigma * math.sqrt(2.0 * math.pi))) * math.exp(-0.5 * math.pow((x - mu) / sigma, 2))
For curve plotting:
It samples points across the histogram width
Maps each x position back to an MFI value from 0 to 100
Computes the PDF at that MFI value using the sample mean and standard deviation
Scales the PDF by the theoretical peak so the curve fits the histogram height
Key normalization idea:
float pdf_peak = normal_pdf(stats.mean, stats.mean, stats.stdev)
float current_y = base_y + (pdf_val / pdf_peak) * available_height
This makes the Gaussian curve visually comparable to the empirical histogram, even though one is a density and the other is raw frequency.
12) Dashboard Table Metrics
On the last bar, the script updates a table with the computed statistics:
Mean
StdDev
Skewness
Kurtosis
Jarque Bera statistic and normality classification
The result cell color changes based on normality:
Green for PASS (Normal)
Red for FAIL (Non Normal)
This gives traders a compact quantitative summary next to the visual distribution.
13) Overbought and Oversold Gradient Fills
The script adds gradient fills that appear when MFI moves beyond standard thresholds:
fill(plot_mfi, p_ob, 100, 80, ...)
fill(plot_mfi, p_os, 20, 0, ...)
This helps contextualize whether the current MFI reading is extreme while the histogram and dashboard describe the broader behavior of the recent MFI sample. Indicator
