Trend Lite [SolQuant]The Trend Lite indicator provides single-timeframe trend detection using Smoothed Moving Average (SMMA) analysis. It displays trend direction on the current timeframe with color-coded gradient fills, making it easy to identify bullish and bearish conditions at a glance.
This is the free version of Trend MTF , offering the core trend detection engine on a single timeframe without the multi-timeframe overlays, pressure zone detection, or market maker candle identification available in the full version.
█ USAGE
Reading the Trend
A smoothed moving average band is displayed on the chart. When the SMMA close is above the SMMA open, the band is bullish (default: blue). When below, it is bearish (default: magenta). A gradient fill extends from the band toward price, growing more visible as the trend strengthens.
The gradient effect provides an intuitive visual cue — a deep, saturated fill means price is moving firmly in the trend direction, while a fading fill suggests the trend may be weakening.
Candle Coloring
Optional candle coloring modes allow the chart candles to reflect the current trend direction or remain a neutral default color.
█ DETAILS
The Smoothed Moving Average is a recursive moving average calculated as: SMMA = (Previous SMMA * (Length - 1) + Current Source) / Length. Both the close and open values are smoothed with the SMMA, then fetched from a scaled-up timeframe using a configurable resolution multiplier. Trend direction is determined by comparing SMMA(close) to SMMA(open).
An additional EMA(10) is applied to the SMMA values for final smoothing before display.
█ SETTINGS
• Enable Candle Coloring: Toggle candle coloring on or off.
• Color Trend Candles: Color candles by trend direction.
• Resolution Multiplier: Scales the timeframe for SMMA calculation (default: 6). Higher = smoother.
• SMMA MA Period: Smoothing period for the SMMA (default: 12).
• Bull / Bear Color: Customizable trend colors.
This indicator is a trend-detection tool and does not constitute financial advice. Past performance does not guarantee future results.
Buscar en scripts para "bear"
stelaraX - Moving Average MultistelaraX – Multi MA
stelaraX – Multi MA is a flexible moving average indicator that allows the use of up to four independently configurable moving averages on a single chart. Each moving average can be customized by type, length, source, color, and line width, making the indicator suitable for a wide range of trading styles and timeframes.
The indicator is designed to provide a clear overview of trend direction, dynamic support and resistance, and moving average interactions.
Core logic
The script supports multiple moving average calculation methods:
* Simple Moving Average (SMA)
* Exponential Moving Average (EMA)
* Weighted Moving Average (WMA)
* Hull Moving Average (HMA)
* Volume Weighted Moving Average (VWMA)
* Running Moving Average (RMA)
Each of the four moving averages can be enabled or disabled individually and calculated from any price source.
Crossover signals
The indicator can generate crossover signals between any two selected moving averages:
* bullish crossover when the fast MA crosses above the slow MA
* bearish crossover when the fast MA crosses below the slow MA
Crossover signals are displayed directly on the chart using directional markers and can be enabled or disabled as needed.
MA cloud
An optional moving average cloud can be displayed between two selected moving averages:
* bullish cloud when the faster MA is above the slower MA
* bearish cloud when the faster MA is below the slower MA
Cloud colors and transparency are fully customizable.
Visualization
The indicator plots up to four moving average lines directly on the chart.
Additional visual features include:
* optional MA crossover markers
* optional moving average cloud
* optional bar coloring based on price position relative to selected moving averages
Bar colors reflect basic trend conditions when price is above or below selected averages.
Alerts
Alert conditions are available for:
* bullish and bearish moving average crossovers
* price crossing above or below selected moving averages
* price crossing above or below the long-term moving average
Alerts trigger only on confirmed crossover conditions.
Use case
This indicator is intended for:
* trend identification and confirmation
* moving average crossover strategies
* dynamic support and resistance analysis
* multi-timeframe trend alignment
* general market structure visualization
Disclaimer
This indicator is provided for educational and technical analysis purposes only and does not constitute financial advice or trading recommendations. All trading decisions and risk management remain the responsibility of the user.
stelaraX - PSAR Trend StrategystelaraX – PSAR Trend Strategy
stelaraX – PSAR Trend Strategy is a rule-based trend-following strategy built around the Parabolic SAR indicator. The strategy automatically evaluates trend direction by tracking the position of the PSAR relative to price and enters positions when a confirmed trend flip occurs.
The logic is intentionally minimal and transparent, making the strategy suitable for backtesting, parameter studies, and trend behavior analysis across different markets and timeframes.
Core logic
The strategy calculates the Parabolic SAR using three user-defined parameters:
* start value
* increment
* maximum acceleration factor
A trend flip is defined as:
* bullish when PSAR switches from above price to below price
* bearish when PSAR switches from below price to above price
When a bullish flip is detected, the strategy opens a long position.
When a bearish flip is detected, the strategy opens a short position.
Position sizing is based on a percentage of account equity and is set to 100 percent by default.
Visualization
The script plots the Parabolic SAR directly on the chart using circular markers:
* green when PSAR is below price
* red when PSAR is above price
Buy and sell labels are placed on the chart at the moment a trend flip occurs to clearly mark entry points.
Note: To hide strategy order arrows, disable “Show Orders on Chart” in the script settings under Properties.
Alerts
Alert conditions are included for:
* buy signals when PSAR flips bullish
* sell signals when PSAR flips bearish
Alerts use the active ticker symbol and trigger only on confirmed flip conditions.
Use case
This strategy is intended for:
* trend-following backtests
* studying Parabolic SAR trend behavior
* evaluating PSAR parameter sensitivity
Disclaimer
This strategy is provided for educational and technical analysis purposes only and does not constitute financial advice or trading recommendations. All trading decisions and risk management remain the responsibility of the user.
HeikenAshi Trend [SolQuant]The HeikenAshi Trend indicator displays smoothed Heikin-Ashi candles as a trend overlay with optional multi-timeframe layers. By applying double EMA smoothing to Heikin-Ashi calculations, it filters out market noise to reveal the underlying trend direction with clarity.
Standard Heikin-Ashi candles already smooth price data by averaging, but they can still produce whipsaws in choppy markets. This indicator adds two layers of exponential smoothing — first on the raw OHLC data, then on the resulting HA values — creating a clean trend ribbon that changes color only on meaningful trend shifts.
█ USAGE
Reading the Trend Ribbon
The indicator draws a filled "ribbon" representing the smoothed Heikin-Ashi candle body. When the smoothed HA close is above the smoothed HA open, the ribbon is bullish (default: blue). When below, it is bearish (default: magenta). The body fill uses a semi-transparent color, while the wick range is filled with a lighter shade, creating a layered visual effect.
Color changes from bull to bear (or vice versa) represent confirmed trend shifts after the double smoothing has absorbed enough price data. This filtering eliminates most false signals that occur with raw candles or single-smoothed indicators.
Multi-Timeframe Overlays
Two higher timeframe overlays are available: 15-minute and 1-hour. When enabled, each draws its own smoothed HA ribbon on the chart, allowing traders to see trend alignment across timeframes at a glance.
For example, on a 1-minute chart: the current TF ribbon shows micro-trend direction, the 15-minute overlay shows short-term trend, and the 1-hour overlay shows the dominant trend. When all three agree, the setup carries higher conviction.
Each MTF overlay includes its own additional smoothing parameter to control how quickly the higher timeframe data adapts to the lower timeframe chart.
Optional Raw Candles
A Show Candles toggle displays the actual smoothed HA candle bodies and wicks alongside the ribbon fills, providing more traditional candlestick-style visualization for traders who prefer that format.
█ DETAILS
Double Smoothing Process
The calculation follows a three-step pipeline:
1 — EMA Smoothing of OHLC: Raw open, high, low, and close values are each smoothed with an EMA of configurable length.
2 — Heikin-Ashi Transformation: The smoothed OHLC values are converted into Heikin-Ashi format — HA Close = (O+H+L+C)/4, HA Open = recursive average of prior HA Open and HA Close.
3 — Second EMA Smoothing: The resulting HA values are smoothed again with a second EMA pass, producing the final displayed values.
This double-smoothing approach significantly reduces lag compared to using very long single-pass smoothing, while achieving comparable noise reduction.
Multi-Timeframe Data
Higher timeframe HA values are fetched using request.security() and then optionally smoothed with an additional EMA on the current timeframe. This extra smoothing (configurable per MTF) controls the visual transition between higher timeframe candle updates, preventing the "staircase" effect common with raw MTF data.
█ SETTINGS
Main Settings
• EMA Length: Period for the first EMA smoothing pass (default: 10). Higher values create smoother but slower trend detection.
• Smoothing Length: Period for the second EMA pass on HA values (default: 10).
• Bullish / Bearish Color: Customizable trend colors.
Multi-Timeframe
• Show 15min Bars: Enable the 15-minute smoothed HA overlay.
• Show 1hr Bars: Enable the 1-hour smoothed HA overlay.
• MTF Transparency: Controls the opacity of MTF overlays.
• 15min / 1hr Smoothing: Additional smoothing applied to each MTF layer.
• Show Candles: Display traditional candle bodies alongside the ribbon.
This indicator is a trend-visualization tool using smoothed Heikin-Ashi calculations. Heikin-Ashi values are synthetic and do not represent actual traded prices. It does not constitute financial advice and past performance does not guarantee future results.
AC TrendPulse
AC TrendPulse , by AC Trading
A context-aware trend strength and momentum indicator designed for active traders who need to know not just which way the trend is going, but how hard it's pushing and whether it's still accelerating or running out of gas.
What It Shows
TrendPulse displays a normalized histogram that tells you three things at a glance:
Direction — Above zero = bullish regime, below zero = bearish regime
Strength — Taller bars = stronger trend separation
Momentum State — Bright bars = trend accelerating, dim bars = trend fading
The Dead Zone
Unlike indicators that flip-flop on every tiny wiggle, TrendPulse includes a configurable dead zone around zero. The indicator won't commit to calling a regime until price action pushes through with conviction. No more false signals in choppy, range-bound markets.
Context-Aware Messaging
The indicator doesn't just show you data — it interprets it. Dynamic text adapts to what the trend is actually doing:
Accelerating trends get aggressive warnings ("DON'T FIGHT IT")
Fading trends soften the tone ("BUT FADING")
Exhausted trends (5+ bars of deceleration) flip to opportunity mode ("watch for reversal setups")
This prevents the classic mistake of blindly following a "strong trend" signal right into a reversal.
Divergence Detection
Automatic detection of classic divergences between price swings and momentum swings:
Bearish Divergence — Price makes a higher high while momentum makes a lower high (orange)
Bullish Divergence — Price makes a lower low while momentum makes a higher low (cyan)
Divergence lines are drawn directly on the histogram for clean visual confirmation.
Visual Features
Color-coded histogram (acceleration state)
Signal line for momentum smoothing
Regime strip along zero line
Background tinting by regime
Momentum dots on signal line crosses
Flip labels when regime changes
Level escalation markers
Alerts
Regime flip (bullish/bearish)
Strong trend entry
Divergence detection
Settings
Fully configurable EMA periods, thresholds, dead zone width, and visual toggles. Works on any instrument and timeframe.
-------------------------------------------------------------------------------------------------------------------
Built for futures traders who are tired of fighting the trend and need a tool that will scream in your face.
WaveTrend Oscillator [SolQuant]The WaveTrend Oscillator indicator is a multi-timeframe WaveTrend implementation that displays oscillator signals from up to four timeframes simultaneously: 1-minute, 5-minute, 15-minute, and 1-hour. It identifies overbought and oversold conditions across timeframes and highlights alignment signals when multiple timeframes agree on direction.
█ USAGE
Reading WaveTrend Signals
Each enabled timeframe displays its own WaveTrend oscillator line in the indicator panel. Overbought and oversold levels are marked with horizontal reference lines. When the WaveTrend crosses above the oversold level, it generates a bullish signal; when it crosses below the overbought level, it generates a bearish signal.
Alignment Signals
Star markers appear when multiple timeframes simultaneously reach overbought or oversold conditions. This multi-timeframe alignment indicates stronger potential turning points, as the market has reached an extreme on more than one time horizon.
Crossover Signals
Standard WT1/WT2 crossover signals are available on each timeframe. Bullish crossovers (WT1 crossing above WT2) and bearish crossovers (WT1 crossing below WT2) are marked with triangle shapes. When these crossovers occur in overbought or oversold territory, they carry more significance.
Auto-Hide Logic
To prevent chart clutter, higher timeframe oscillator lines are automatically hidden when the chart timeframe exceeds them. For example, if you are on a 15-minute chart, the 1-minute and 5-minute oscillators are hidden since their data would be meaningless at that resolution.
█ DETAILS
The WaveTrend oscillator is calculated in three steps:
1 — An EMA of the typical price (HLC3) is computed over the channel length
2 — The absolute deviation from this EMA is smoothed with another EMA
3 — The normalized difference (CI) is smoothed with an EMA of the average length to produce WT1, and a simple SMA of WT1 produces WT2
For each higher timeframe, the full calculation is performed on that timeframe's data using request.security(), then both WT1 and WT2 values are brought down to the chart timeframe.
█ SETTINGS
WaveTrend
• Channel Length: EMA period for the price channel (default: 9).
• Average Length: EMA period for final smoothing (default: 12).
• Overbought / Oversold Level: Threshold levels for signal generation.
Timeframes
• Show 1m / 5m / 15m / 1H: Toggle each timeframe's display.
• Timeframe Colors: Customizable colors for each oscillator line.
Signals
• Show Alignment Stars: Display multi-TF alignment markers.
• Show Crossovers: Display WT1/WT2 crossover triangles.
This is an oscillator-based tool and does not constitute financial advice. Overbought and oversold conditions do not guarantee reversals. Past performance does not guarantee future results.
Trend MTF [SolQuant]The Trend MTF indicator provides multi-timeframe trend detection using Smoothed Moving Average (SMMA) analysis. It displays trend direction across five timeframes simultaneously — Current, 5-minute, 15-minute, 1-hour, and 4-hour — with gradient fills that make trend alignment immediately visible.
The core idea is that when multiple timeframes agree on direction, the probability of a sustained move increases. Rather than switching between charts, this indicator layers trend information from all relevant timeframes onto a single view, with each timeframe's trend band expanding from price when active.
█ USAGE
Reading Multi-Timeframe Trends
Each enabled timeframe displays a smoothed moving average line. When the SMMA close is above the SMMA open for a given timeframe, that timeframe is bullish (colored in the bull color). When below, it is bearish. Gradient fills extend from the trend line toward price, creating a visual "cloud" that grows as the trend strengthens.
Traders can quickly assess trend alignment: when all enabled timeframes show the same color, the market is in strong directional agreement. Mixed colors indicate conflicting trends across timeframes, suggesting caution or range-bound conditions.
Pressure Zone Detection
The indicator includes Keltner Channel-based pressure detection. When price closes beyond the 2.618x ATR Keltner bands, candles are colored in a distinct "pressure" color (default: orange). This highlights overextended conditions where price has moved significantly beyond its normal volatility range, which often precedes reversals or consolidation.
Market Maker Candle Detection
Candles with extreme volume — defined as 500% or more of the recent average volume — are flagged as potential "market maker" activity. These candles receive a distinct color (default: yellow) and triangle markers above or below the bar. Extreme volume events often coincide with institutional positioning and can signal important turning points.
Candle Coloring Modes
Three candle coloring modes can be layered by priority:
1 — Market Maker candles (highest priority) — extreme volume events
2 — Pressure candles — overextended Keltner zone
3 — Trend candles — colored by current timeframe trend direction
4 — Default — neutral color when no conditions are met
█ DETAILS
SMMA Calculation
The Smoothed Moving Average (SMMA) is a recursive moving average that gives more weight to recent data while maintaining a longer memory than a standard SMA. For each timeframe, both SMMA(close) and SMMA(open) are calculated and then fetched from the corresponding higher timeframe using request.security(). The trend direction is determined by comparing these two values.
Resolution Multiplier
The timeframe resolution is calculated dynamically. A Resolution Multiplier (default: 6) scales the current chart timeframe to create the SMMA calculation timeframe. For example, on a 1-minute chart with a 6x multiplier, the Current TF SMMA uses a 6-minute resolution. The fixed timeframes (5m, 15m, 1H, 4H) are similarly scaled.
Gradient Fill Logic
For each timeframe, a price anchor switches between the EMA of the low (bullish) or EMA of the high (bearish). A gradient fill extends from the SMMA line toward this anchor, creating a visual representation of trend strength. The fill is only shown when the trend line is beyond the current price range, preventing visual clutter during weak trends.
█ SETTINGS
Candles
• Enable Candle Coloring: Master toggle for all candle coloring.
• Show Pressure Candles: Highlight candles in the Keltner pressure zone.
• Show Market Maker Candles: Flag extreme volume (500%+) events.
• Color Trend Candles: Color candles by trend direction instead of default.
• MM Volume Lookback: Period for calculating average volume for market maker detection.
SMMA
• Resolution Multiplier: Scales the timeframe for SMMA calculations. Higher values produce smoother, slower trends.
• SMMA MA Period: The smoothing period for the SMMA. Higher values reduce noise.
Timeframes
• Show Current TF / 5m / 15m / 1H / 4H: Toggle individual timeframe displays.
• MTF Fill Transparency: Controls the opacity of higher-timeframe fills.
This indicator is a trend-detection tool and does not constitute financial advice. Multi-timeframe alignment does not guarantee future price direction. Past performance does not guarantee future results.
Swing Trader's DCR/WCRHere is the description formatted with simple tags, ready to copy and paste into your TradingView script description or personal notes.
Swing Trader's DCR/WCR Dashboard
This script creates a real-time dashboard on your chart to measure the Closing Range —a critical metric for verifying breakouts and momentum. It answers the question: "Who won the battle today, the bulls or the bears?"
The Logic
The script calculates the position of the Close relative to the High/Low range:
0%: Closed at the absolute low (Max Bearish)
50%: Closed in the middle (Neutral/Indecision)
100%: Closed at the absolute high (Max Bullish)
How to Read the Signals
The dashboard uses a high-contrast "Dark Mode" theme for instant readability:
STRONG (Dark Green): The stock is closing in the Top 25% of its range. This is your primary confirmation for breakouts. It signals that institutions are buying into the close.
WEAK (Dark Red): The stock is closing in the Bottom 25% of its range. This is a warning sign. If a stock breaks out but closes "WEAK," it is likely a failed breakout (or "Squat").
Trading Strategy Use Cases
Breakout Confirmation: Only trust breakouts that show a "STRONG" DCR signal.
Multi-Timeframe Check: Ensure both DCR (Day) and WCR (Week) are Green to confirm the trend is aligned on multiple timeframes.
End-of-Day Execution: Use this in the last 15 minutes of the session to filter out noise and enter trades with the highest conviction.
Synthetic Max Pain [SolQuant]The Synthetic Max Pain indicator calculates estimated "max pain" price levels using modeled open interest distributions. Max pain is the price at which the largest number of leveraged positions would face maximum loss — a concept borrowed from options theory and adapted for perpetual futures markets.
The indicator projects two key levels: MP Long (support) and MP Short (resistance), representing the zones where long and short positions respectively face the most pain. These levels are recalculated at each anchor period reset and can be displayed across multiple timeframes simultaneously.
█ USAGE
Reading Max Pain Levels
Two horizontal lines are displayed for each enabled timeframe anchor:
• MP Long (Support): The price level where the highest concentration of modeled put/short open interest sits below the anchor price. Price tends to find support near this level as market makers may defend it.
• MP Short (Resistance): The price level where the highest concentration of modeled call/long open interest sits above the anchor price. Price tends to face resistance here.
When price trades between MP Long and MP Short, it is within the "max pain range" — the zone where the most positions remain profitable. Breaks beyond these levels can signal directional moves as liquidations cascade.
Multi-Timeframe Anchors
Four anchor timeframes can be enabled simultaneously: Hourly, 4-Hour, Daily, and Weekly. Each recalculates its levels when a new period begins using that period's opening price as the anchor. Shorter timeframes provide intraday levels, while longer timeframes frame the broader structure.
Stacking multiple timeframes reveals confluence zones where max pain levels from different anchors overlap — these tend to be stronger support/resistance areas.
Midline
An optional midline plots the average of the primary timeframe's MP Long and MP Short, representing the theoretical equilibrium point where market maker pain is balanced.
Historical vs Current Mode
In Current mode (default), only the latest levels are drawn as horizontal lines extending back a configurable number of bars. In Historical mode, levels are plotted as step lines across the entire chart history, allowing backtesting and pattern recognition of how price interacts with max pain levels over time.
█ DETAILS
Synthetic OI Modeling
Since TradingView does not provide granular strike-level open interest data, this indicator constructs a synthetic model. It generates a strike ladder centered on the anchor price and distributes modeled open interest across strikes using a Gaussian (bell curve) distribution.
The distribution is offset from at-the-money to simulate realistic OI concentration in out-of-the-money options/positions, with an additional boost for slightly OTM strikes where retail positioning typically clusters.
Put and Call Bias
The Put Bias and Call Bias parameters act as multipliers on their respective OI distributions. A Put Bias greater than 1.0 amplifies the modeled short OI, pushing the MP Long level further from the anchor (more bearish skew). A Call Bias greater than 1.0 does the same for long OI. These parameters allow the model to reflect the market's directional lean.
OI Spread
The OI Spread parameter controls how concentrated or dispersed the modeled open interest is around the anchor price. A lower spread creates tighter max pain levels closer to the anchor, while a higher spread pushes them further away. This should be tuned based on the asset's typical volatility.
Payoff Calculation
For each strike in the ladder, the indicator calculates the standard option payoff functions — max(settlement - strike, 0) for calls and max(strike - settlement, 0) for puts — weighted by the modeled OI at that strike. The strikes with peak OI below and above the anchor become MP Long and MP Short respectively.
█ SETTINGS
Strike Configuration
• Strike Increment: Distance between modeled strikes. Should scale with asset price (e.g., $1-2 for SOL, $500-1000 for BTC).
• Number of Strikes: Total strikes in the ladder. More strikes cover a wider price range.
• Auto Strike Increment: Automatically sets increment to approximately 1% of price.
Max Pain Model
• OI Spread %: Controls how spread out the modeled OI distribution is.
• Put Bias: Multiplier for short-side OI (higher = more bearish skew).
• Call Bias: Multiplier for long-side OI (higher = more bullish skew).
Anchor Timeframes
• Show Hourly / 4 Hour / Daily / Weekly: Enable multiple anchor timeframes simultaneously.
Display
• Show MP Long / MP Short / Midline: Toggle individual level visibility.
• Show Historical Levels: Switch between current-only and full-history display.
• Line Width: Visual thickness of level lines.
This indicator uses a synthetic model to estimate max pain levels. It does not use actual exchange open interest data at the strike level. The modeled levels are approximations based on statistical distributions and should be used as one factor among many in a trading analysis framework. It does not constitute financial advice and past performance does not guarantee future results.
stelaraX - Chart PatternsstelaraX – Chart Patterns
stelaraX – Chart Patterns is a technical analysis indicator that automatically detects and visualizes classical chart patterns using pivot-based market structure analysis.
The script is designed to assist traders in identifying price structures objectively across all instruments and timeframes.
The detection logic is fully rule-based and relies on confirmed pivot highs and pivot lows, reducing false positives and avoiding repainting assumptions.
Supported chart patterns
Reversal patterns
Double Top
Double Bottom
Triple Top
Triple Bottom
Head and Shoulders
Inverse Head and Shoulders
Rising Wedge
Falling Wedge
Continuation patterns
Bull Flag
Bear Flag
Ascending Triangle
Descending Triangle
Symmetrical Triangle
Rectangle / Channel
Patterns are validated using pivot relationships, tolerance-based price symmetry, and confirmation through closing prices.
Pattern visualization
When a pattern is detected, the indicator automatically draws relevant support, resistance, trendlines, and necklines.
Pattern boundaries are projected forward using slope calculations to reflect potential continuation zones.
Each detected structure is classified as bullish, bearish, or neutral and displayed using a configurable color scheme.
Optional on-chart labels show the pattern name directly at the structure completion point.
Dashboard
An optional on-chart dashboard provides a compact overview of the current market structure.
Displayed information includes the active pattern, directional bias, timeframe, pivot count, and the most recent pivot levels.
The dashboard position can be configured for any chart corner.
Settings and customization
Pivot length and pattern lookback are fully adjustable.
Price symmetry is controlled via a tolerance setting.
Each pattern type can be enabled or disabled individually.
Display options include pivot points, pattern lines, labels, and dashboard visibility.
All colors can be customized.
Alerts
Alert conditions are available for every supported pattern and trigger when a valid structure is detected.
Disclaimer
This indicator is intended for technical analysis only and does not provide financial advice or trading signals.
All trading decisions and risk management remain the responsibility of the user.
HeikenAshi Trend Lite [SolQuant]The HeikenAshi Trend Lite indicator displays double-smoothed Heikin-Ashi candles on the current timeframe as a trend overlay. By applying two passes of EMA smoothing to Heikin-Ashi calculations, it filters out market noise to reveal clean trend direction.
This is the free version of HeikenAshi Trend , providing the core double-smoothed HA trend visualization on a single timeframe without the multi-timeframe overlays available in the full version.
█ USAGE
Reading the Trend
The indicator draws a filled ribbon representing the smoothed Heikin-Ashi body. When the smoothed HA close is above the smoothed HA open, the ribbon is bullish. When below, it is bearish. The body uses a semi-transparent fill, while the wick range is drawn with a lighter shade, creating a layered visual.
Color changes represent confirmed trend shifts after double smoothing has absorbed enough price data. This filtering eliminates most false signals from choppy conditions.
█ DETAILS
The calculation follows three steps:
1 — EMA smoothing of raw OHLC values
2 — Heikin-Ashi transformation of the smoothed values
3 — Second EMA pass on the resulting HA values
This double-smoothing approach reduces noise effectively while maintaining less lag than equivalent single-pass smoothing with very long periods.
█ SETTINGS
• EMA Length: Period for the first EMA smoothing pass (default: 10).
• Smoothing Length: Period for the second EMA pass (default: 10).
• Bullish / Bearish Color: Customizable trend colors.
• Show Candles: Display traditional HA candle bodies alongside the ribbon.
This indicator uses synthetic Heikin-Ashi values that do not represent actual traded prices. It does not constitute financial advice. Past performance does not guarantee future results.
MANMANDER SNIPER NO1MANMANDER SNIPER NO1 is a multi-layer analytical indicator designed to help traders visualize market structure, momentum behavior, and potential reaction zones within a single integrated system.
The script combines oscillator-based analysis, trend filtering, divergence detection, structural zones (POI/Trap), and visual alerts to provide a clearer understanding of market conditions. The goal of the indicator is to improve chart awareness and assist decision-making by presenting market information in a structured and visual format.
This indicator is intended for analytical and educational purposes only and does not provide financial advice.
Key Features
• Multi Engine Momentum Core
Multiple calculation engines allow users to adapt oscillator behavior to different market environments and volatility conditions:
Classic Plasma (RSI-based structure)
Quantum Pulse (MACD-style momentum)
Time Warp Flux
Hyper Streak
Nebula Hybrid
Gravity Flow
Warp Vector
Each engine interprets price momentum differently, allowing flexibility across assets and timeframes.
• RSI Energy Zones (Overbought / Oversold)
The indicator highlights momentum extremes using background zones and optional alerts when RSI enters overbought or oversold areas.
These zones are intended to identify potential exhaustion or extended momentum conditions and should be interpreted alongside trend and market structure.
• RSI-Based Support & Resistance Tracking
Historical price levels are created when RSI reaches extreme zones and extended forward as dynamic support and resistance references.
The system identifies:
Breakouts beyond historical levels
Liquidity sweeps and rejections
This feature helps visualize how price reacts around historically significant areas.
• POI & Trap Zones (Supply / Demand Concept)
The script detects impulse-based supply and demand areas and converts them into Points of Interest (POI).
When price revisits these areas, Trap Zones may be generated to highlight potential retest regions. These zones are intended for observation and analysis rather than automatic trade entries.
• Regular Divergence Detection
Bullish and bearish divergence is detected by comparing price pivots with oscillator pivots. Divergence may indicate weakening momentum or possible shifts in market behavior.
An optional real-time shadow mode provides early visual indication during live bar formation.
• Trend & Momentum Filters
Optional filters help reduce signals during low-quality market conditions:
EMA 200 trend direction filter
EMA 50 medium trend filter
Momentum EMA comparison
ADX strength filter
RSI safety filter
Users can adjust filters to balance signal frequency and confirmation strength.
• Multi-Level Signal System
Signals are categorized to provide context rather than a single binary entry:
NOW — Immediate reaction signals
SNIPER — Deep momentum signals
PRIME — Main filtered signals
FAST — Faster signals with lighter filtering
FOLLOW TREND — Trend continuation signals
Users may select which signal types align with their trading approach.
• Command Console Dashboard
A built-in dashboard summarizes current market conditions, including:
Trend direction
Momentum state
Strength measurement (ADX)
RSI condition status
Divergence scanning status
This allows quick interpretation of market context without multiple indicators.
• Alert & Notification System
Alerts can be configured for:
RSI entering extreme zones
Divergence detection
Creation of new POI or Trap zones
Price interaction with zones
BUY / SELL / EXIT conditions
Alert messages can optionally be forwarded to external systems through webhooks. Any automation or execution is fully controlled and managed by the user.
Recommended Usage
Test different engines depending on asset and timeframe.
Combine signals with price action and structural analysis.
Increase filter strength during sideways markets.
Perform manual backtesting before live usage.
This indicator is designed to support analysis, not replace trader judgment.
Best Market Conditions
Trending markets with clear momentum
Markets with recurring structure reactions
Medium to higher timeframes where noise is reduced
Performance may vary depending on market volatility and user configuration.
Important Notes & Limitations
Some features rely on pivot calculations and may update during live bar formation.
Visual elements or signals may change before candle close.
Using alerts set to “Once Per Bar Close” is recommended for more stable behavior.
No analytical tool can provide consistent accuracy in all market conditions.
Risk Disclaimer
Trading involves substantial risk and may result in loss of capital. This script is provided for educational and analytical purposes only and does not constitute financial advice. Users are solely responsible for their trading decisions, risk management, and any external integrations connected to alerts.
Always test in a demo environment before using in live trading conditions.
Key Price Levels V1📌 Key Price Levels V1 – FVG Confluence Tool
Key Price Levels V1 is a clean, price-action focused indicator that plots automatic key price levels and shows Fair Value Gaps (FVG / Imbalance) only when they form near those levels.
The goal is simple: reduce noise and highlight only high-probability, level-based opportunities.
This tool is designed for:
Forex
Gold (XAUUSD)
Indices (US30, NAS100, SPX, etc.)
With manual scaling control, you can adapt it to any market.
🔧 Main Features
✅ Plots 6 Key Levels
3 levels above current price
3 levels below current price
Lines extend left & right across the chart
Price labels shown on the right side (no candle overlap)
✅ Fair Value Gap (FVG / Imbalance) Detection
Shows Bullish & Bearish FVG
Filters FVGs so they appear ONLY near key levels
Keeps chart clean and focused on high-quality zones
✅ Manual Scaling Control
Toggle: Use Pip/Tick Scaling
ON → Best for Forex (inputs in pips)
OFF → Best for Gold & Indices (inputs in price/points)
✅ Customizable Inputs
Step Size (distance between levels)
Near Distance (how close FVG must be to a level)
Levels Mode: 00, 50, or Auto
Label offset (push labels to the right side)
⚙️ How to Set It Up
🔹 For Forex (EURUSD, GBPUSD, etc.)
Turn ON: Use Pip/Tick Scaling
Example settings:
Step Size = 50 → 50 pips grid
Near Distance = 20 → 20 pips filter
🔹 For Gold (XAUUSD)
Turn OFF: Use Pip/Tick Scaling
Example settings:
Step Size = 1.0
Near Distance = 0.2
🔹 For Indices (US30, NAS100, etc.)
Turn OFF: Use Pip/Tick Scaling
Example settings:
Step Size = 50 or 100
Near Distance = 10
🧠 Trading Concept (Built-in Rules)
Use this indicator as a confluence tool, not alone.
✅ Trade only New York Time: 02:30 to 07:00 (London Open)
✅ If FVG forms on a key price level → follow the trend on 5–15 min
✅ If a wick sweeps a price level → look for strong rejection
✅ If you get BPR on a price level → strong trend continuation signal
✅ If price is rejecting between two levels → wait for CISD
✅ Enter on Imbalance (FVG) → Target next price level or long wick liquidity
🎯 Best Use Case
Mark important price levels automatically
Wait for liquidity sweep / displacement
Enter using FVG near a level
Target the next key level
Keep risk tight, structure-based
⚠️ Disclaimer
This indicator is for educational and analytical purposes only.
It does not provide financial advice. Always use proper risk management and confirm with your own trading plan.
Ultimate Open Marker with Time ZonesYour Ultimate Open Marker with Time Zones:
Preset Market Opens:
NY Open (9:30 AM ET) - default
London Open (8:00 AM GMT)
Frankfurt Open (9:00 AM CET)
Tokyo Open (9:00 AM JST)
Hong Kong Open (9:30 AM HKT)
Sydney Open (10:00 AM AEST)
Custom Time Zone Option:
18 major time zones to choose from:
Set any hour (0-23) and minute (0-59) for your custom open
Custom label text (e.g., "RTH Start", "Open", etc.)
Works on every timeframe including custom ones.
Marker Settings:
- Default: Sky blue flag with background highlight and time label for the NY open as default. You can change all that in the settings.
- Various marker shape options: Triangle, Diamond, Label Flag, Arrow Up/Down, Arrow this, Arrow that... So you can pick whatever annoys you the least lol
- Auto-positioning: above bear candles, below bull candles (default) - or always above/below
- 5 sizes from tiny to huge
- Vertical offset fine-tuning - you can move your marker closer to the bar if you like, or farther from it
Vertical Lines Options:
- Line ON the 9:30 bar
- Line BEFORE the 9:30 bar (so on 5min you'd see a line on 9:25, on 15min on 9:15, etc. - this way you can see the open candle well)
Time Label Option: Default "9:30 EST" label (customizable text, color, size)
Automatically shows the open time and timezone abbreviation
For custom: shows your label + time + timezone (e.g., "Open 9:30 AM ET")
Date Label Option: Four format options:
- MM/DD/YY (American)
- DD/MM/YY (European)
- DD Mon. 'YY (Written, like "04 Feb. '26")
- Mon DD, YYYY (Full)
Plus optional day of week (short or full)
Bonus: Background highlight option for the open bar
Let me know if you need any adjustments.
Thanks. : )
Ultimate NY 9:30 Open MarkerYour ultimate New York Open Marker... So you can analyze your charts when everybody else sleeps or parties, you crazy chart people!
Works on every timeframe including custom ones.
Customizable in settings:
Marker Settings:
- Default: Sky blue flag with background highlight and time label for the NY open as default. You can change all that in the settings.
- Various marker shape options: Triangle, Diamond, Label Flag, Arrow Up/Down, Arrow this, Arrow that... So you can pick whatever annoys you the least lol
- Auto-positioning: above bear candles, below bull candles (default) - or always above/below
- 5 sizes from tiny to HUGE
- Vertical offset fine-tuning - you can move your marker closer to the bar if you like, or farther from it
Vertical Lines Options:
- Line ON the 9:30 bar
- Line BEFORE the 9:30 bar (so on 5min you'd see a line on 9:25, on 15min on 9:15, etc. - this way you can see the open candle well)
- Solid, dotted, dashed, pick your poison
Time Label Option: "9:30 EST" label (customizable text, color, size)
Date Label Option: Four format options:
- MM/DD/YY (American)
- DD/MM/YY (European)
- DD Mon. 'YY (Written, like "04 Feb. '26")
- Mon DD, YYYY (Full)
Plus optional day of week (short or full)
Bonus: Background highlight option for the open bar
The indicator handles DST automatically via the "America/New_York" timezone and works on any timeframe including custom ones.
This is a repost, apparently you can't use caps in the title. Sorry about that.
Let me know if you'd like any adjustments.
Thanks. : )
WMA 200 Trend Filter with EMA 50 Cross & Dynamic Zones═══════════════════════════════════════════════════════════════
📊 WMA 200 TREND FILTER WITH EMA 50 CROSS & DYNAMIC SUPPLY/DEMAND ZONES
═══════════════════════════════════════════════════════════════
🎯 PURPOSE & ORIGINALITY
This indicator was created to solve a specific problem with traditional moving average crossover systems: they generate too many false signals during choppy, sideways markets. By combining a 200-period Weighted Moving Average (WMA) as a directional filter with a 50-period Exponential Moving Average (EMA) for timing, and adding volatility-adjusted supply/demand zones, this script provides a more robust signal generation system.
📈 WHY THIS SPECIFIC COMBINATION?
✦ 200 WMA (Not EMA) for Trend Direction
The Weighted Moving Average gives more weight to recent prices compared to a Simple Moving Average, but is less reactive than an Exponential Moving Average. This makes it ideal as a TREND FILTER because it smooths out noise while still responding to genuine directional shifts. The 200-period length is a widely-watched institutional level that often acts as dynamic support/resistance.
✦ 50 EMA for Entry Timing
The Exponential Moving Average responds faster to price changes, making it suitable for identifying short-term momentum shifts within the larger trend. The 50-period length provides a balance between responsiveness and reliability.
✦ Dynamic ATR-Based Supply/Demand Zones
Unlike fixed-percentage zones, these zones adapt to current market volatility using the Average True Range (ATR). When a signal triggers, the indicator plots a shaded zone based on ATR that represents potential support (demand) or resistance (supply) levels. This helps traders visualize where price might react after a signal.
🔧 HOW IT WORKS
The indicator uses a DUAL-CONDITION SIGNAL SYSTEM:
LONG SIGNALS (Green "BUY" label) appear when:
1. Price crosses ABOVE the 50 EMA (bullish momentum)
2. AND price is already ABOVE the 200 WMA (confirming uptrend)
This ensures you're only taking long positions when both short-term momentum AND long-term trend are aligned upward.
SHORT SIGNALS (Red "SELL" label) appear when:
1. Price crosses BELOW the 50 EMA (bearish momentum)
2. AND price is already BELOW the 200 WMA (confirming downtrend)
This ensures you're only taking short positions when both short-term momentum AND long-term trend are aligned downward.
SUPPLY/DEMAND ZONES are calculated as follows:
- When a SHORT signal triggers, a SUPPLY ZONE is created from the recent high, extending downward by (ATR × box_width_multiplier)
- When a LONG signal triggers, a DEMAND ZONE is created from the recent low, extending upward by (ATR × box_width_multiplier)
- These zones dynamically change color based on the 200 WMA direction (green tint when WMA is rising, red tint when falling)
📊 VISUAL ELEMENTS
- 200 WMA: Thick line that turns LIME when rising (uptrend) and RED when falling (downtrend)
- 50 EMA: Blue line for reference
- Supply Zones: Shaded areas above price showing potential resistance
- Demand Zones: Shaded areas below price showing potential support
- Signal Labels: "BUY" appears below candles, "SELL" appears above candles
⚙️ CUSTOMIZABLE SETTINGS
1. WMA Source: Choose which price (close, open, hl2, etc.) to calculate the 200 WMA
2. WMA Length: Adjust the lookback period (default: 200)
3. EMA Length: Adjust the signal line period (default: 50)
4. Supply/Demand Box Width: Controls zone size as a multiplier of ATR (1-10, default: 2.5)
📚 HOW TO USE THIS INDICATOR
This is an EDUCATIONAL TOOL for understanding trend-aligned momentum trading. Suggested usage:
1. Identify the major trend using the 200 WMA color (green = uptrend, red = downtrend)
2. Wait for price to cross the 50 EMA in the direction of the trend
3. Use the supply/demand zones as potential areas for:
- Profit targets
- Stop loss placement
- Areas to watch for continuation or reversal
IMPORTANT: Signals labeled "BUY" and "SELL" are for educational demonstration only and should not be interpreted as direct trading advice. Always confirm signals with additional analysis, risk management, and your own trading plan.
⚠️ LIMITATIONS & BEST USE CASES
WORKS BEST IN:
- Trending markets (strong directional moves)
- Higher timeframes (4H, Daily, Weekly)
- Liquid instruments with clear trends
LESS EFFECTIVE IN:
- Ranging/choppy markets (generates fewer signals by design)
- Very low timeframes (1m, 5m) where noise increases
- Low-volume instruments with erratic price action
🔔 ALERT FUNCTIONALITY
Built-in alerts available for:
- Long Cross Alert: "Price Crossed Up 50 EMA"
- Short Cross Alert: "Price Crossed Down 50 EMA"
📖 EDUCATIONAL CONCEPTS
This indicator demonstrates:
- Trend filtering using slower moving averages
- Momentum confirmation using faster moving averages
- Volatility-adjusted zone calculation using ATR
- Multi-condition signal logic to reduce false signals
⚖️ DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice, investment advice, trading advice, or any other sort of advice. Past performance of any trading system or methodology is not indicative of future results. Trading involves substantial risk of loss and is not suitable for all investors. Always do your own research and consult with a qualified financial advisor before making trading decisions.
═══════════════════════════════════════════════════════════════
💡 If you find this helpful, please leave a comment or boost!
Questions? Reply below and I'll help explain any aspect of the logic.
═══════════════════════════════════════════════════════════════
QMF- Market Structure & Signal Suite [BullByte]QUANTUM MOMENTUM FUSION - Market Structure and Signal Suite
OVERVIEW
Quantum Momentum Fusion is a comprehensive market analysis framework built around a multi-dimensional momentum oscillator. This indicator was designed to give traders a complete analytical workspace in a single tool, combining momentum measurement, market structure identification, trendline analysis, divergence detection, and multi-timeframe context into one unified system.
The core philosophy behind QMF is that successful trading decisions come from understanding multiple aspects of market behavior simultaneously, not from relying on any single indicator or signal. The oscillator serves as the analytical foundation, and every other component builds upon it to create a complete picture of current market conditions.
This description will walk through each component of the indicator, explaining what it measures, why that information matters, and how to interpret what you see on the chart. Whether you are an experienced trader familiar with oscillator analysis or newer to technical indicators, each section aims to make the concepts accessible and practical.
THE QUANTUM ENGINE: UNDERSTANDING THE CORE OSCILLATOR (why its original and not a mashup)
At the heart of this indicator is the Quantum Momentum Fusion oscillator, displayed in its own pane below the price chart. Unlike traditional oscillators that measure a single aspect of price behavior, the QMF oscillator synthesizes four distinct market dimensions into one unified reading.
WHAT IS AN OSCILLATOR
For those less familiar with the term, an oscillator is a technical indicator that fluctuates between defined boundaries, typically showing whether an asset is experiencing strong buying pressure, strong selling pressure, or neutral conditions. The QMF oscillator moves between 0 and 100, with 50 representing the neutral midpoint.
When the oscillator is high (above 70), it suggests the market has experienced significant upward momentum and may be approaching exhaustion. When low (below 30), it suggests the market has experienced significant downward momentum and may be due for a bounce. The space between these extremes represents normal market fluctuation.
THE FOUR DIMENSIONS
What makes the QMF oscillator different from standard momentum indicators is that it combines four separate measurements into its calculation. Each dimension captures a different aspect of market behavior:
VELOCITY DIMENSION
This measures how quickly momentum itself is changing. Think of it like acceleration in a car. Knowing the car is moving forward (direction) is useful, but knowing whether the driver is pressing the accelerator or the brake (acceleration) tells you what is likely to happen next. The velocity dimension calculates the rate of change of the rate of change, providing early warning when momentum is about to shift direction. In practical terms, this can show momentum weakening before price actually reverses.
Why it matters: Price can continue in one direction for a while even after the underlying momentum starts to fade. By measuring acceleration, you can identify potential turning points earlier than with simple momentum indicators.
How it appears: This dimension is calculated internally and combined with the others. You do not see it separately, but its effect shows in the oscillator responding earlier to momentum shifts.
VOLUME DIMENSION
This measures price movement weighted by trading volume. A price move accompanied by high volume has different significance than the same price move on low volume. High volume suggests conviction and participation from larger traders. Low volume suggests the move may lack follow-through.
The volume dimension multiplies price change by a volume ratio (current volume compared to average volume), giving greater weight to moves that have volume confirmation behind them.
Why it matters: Volume often precedes price. Strong volume on a move suggests institutional participation and increases the probability that the move will continue. Weak volume on a move suggests it may be easily reversed.
How it appears: Moves with strong volume conviction will push the oscillator more definitively, while low-volume moves will have muted effect on the reading.
VOLATILITY DIMENSION
This normalizes price movement against the current volatility environment. Markets go through periods of high volatility (large price swings) and low volatility (small price swings). A 1% move during a low volatility period is more significant than a 1% move during a high volatility period.
The volatility dimension divides price change by Average True Range (ATR), which measures typical price range. This tells you whether current movement is significant relative to what is normal for this market right now.
Why it matters: Without volatility normalization, the oscillator would react the same way to all price moves regardless of context. By adjusting for volatility, the oscillator identifies moves that are genuinely significant versus normal noise within the current regime.
How it appears: During quiet markets, smaller price moves can still register as significant if they exceed normal volatility. During volatile markets, the oscillator will not overreact to moves that are within expected range.
SESSION DIMENSION
This tracks where price is positioned relative to the session Volume Weighted Average Price (VWAP). VWAP represents the average price at which trading has occurred during the session, weighted by volume. Institutional traders often use VWAP as a benchmark for fair value.
When price is consistently above VWAP, it suggests buyers are willing to pay above average prices, indicating accumulation. When price is consistently below VWAP, it suggests sellers are accepting below average prices, indicating distribution.
Why it matters: VWAP positioning provides insight into whether institutional traders are likely accumulating or distributing. Price repeatedly returning to and bouncing from VWAP can indicate support, while price repeatedly failing at VWAP can indicate resistance.
How it appears: The session dimension contributes bullish readings when price maintains above VWAP and bearish readings when price maintains below VWAP.
ADAPTIVE WEIGHTING
The four dimensions are combined using configurable weights, and the system can operate in Adaptive Mode. When Adaptive Mode is enabled, the indicator automatically adjusts its sensitivity based on the current volatility regime. During high volatility periods, sensitivity increases to capture larger moves. During low volatility periods, sensitivity decreases to filter out noise.
This means the oscillator adapts to changing market conditions without requiring manual adjustment.
READING THE OSCILLATOR: DISPLAY MODES AND ZONES
The QMF oscillator can be displayed in four different visual formats. Each shows the same underlying data but presents it differently based on trader preference.
ENERGY CANDLES
This mode displays the oscillator as candlestick-style candles. Just as price candles show open, high, low, and close for price, energy candles show these values for the QMF oscillator.
Green candles indicate the oscillator closed higher than it opened (bullish momentum). Red candles indicate the oscillator closed lower than it opened (bearish momentum). The body size shows how much the oscillator moved during the period. Larger bodies indicate stronger momentum conviction.
This format is useful for traders who are comfortable reading candlestick patterns and want to apply similar visual analysis to the oscillator.
QMF LINE
This mode displays the oscillator as a traditional line chart with a signal line overlay. The main QMF line shows current momentum. The signal line is a smoothed average of the QMF that helps identify direction changes.
When the QMF line is above the signal line, momentum is bullish. When below, momentum is bearish. Crossovers between the two lines can indicate momentum shifts.
This format is familiar to traders who use indicators like MACD and prefer clean line-based visualization.
IMPULSE BARS
This mode displays the oscillator as a histogram centered on the 50 midline. Bars above 50 indicate bullish momentum, bars below 50 indicate bearish momentum. Bar height shows momentum strength.
The color intensity changes based on momentum direction. Bars that are increasing in the bullish direction show brighter color. Bars that are decreasing show muted color. This makes it easy to see momentum acceleration and deceleration at a glance.
HEIKIN FLOW
This mode applies Heikin-Ashi smoothing to the energy candles. Heikin-Ashi is a Japanese technique that averages price data to create smoother trends with fewer reversals.
The result is cleaner visual trends that are easier to follow, though with slightly more lag than standard energy candles. This format is useful for identifying sustained momentum moves without getting distracted by minor fluctuations.
OSCILLATOR ZONES
Regardless of display mode, the oscillator pane includes horizontal reference lines that define important zones:
Midline at 50: The neutral point. When the oscillator is above 50, overall momentum is bullish. When below 50, overall momentum is bearish.
Overbought level at 70: When the oscillator crosses above this level, the market is showing strong bullish momentum. However, this also means prices have risen significantly and bearish reversal probability increases the longer the oscillator stays elevated.
Oversold level at 30: When the oscillator crosses below this level, the market is showing strong bearish momentum. However, this also means prices have fallen significantly and bullish reversal probability increases.
Extreme overbought at 85: Maximum bullish exhaustion. At this level, almost all short-term buying pressure has been expended. Reversal probability is high.
Extreme oversold at 15: Maximum bearish exhaustion. At this level, almost all short-term selling pressure has been expended. Reversal probability is high.
Understanding these zones helps you assess the current market condition before looking at any other indicator components.
MARKET STRUCTURE: DYNAMIC SUPPORT AND RESISTANCE
The second major component of the indicator is market structure analysis through dynamic support and resistance levels. Unlike price-based support and resistance, these levels are calculated directly on the oscillator.
WHAT ARE OSCILLATOR-BASED S/R LEVELS
When the QMF oscillator reaches a high point and then reverses lower, that high point becomes a resistance level on the oscillator. When the oscillator reaches a low point and then reverses higher, that low point becomes a support level.
These levels represent momentum thresholds that the market has previously found difficult to exceed. They answer the question: At what momentum reading has the oscillator historically reversed?
WHY THIS MATTERS
Oscillator support and resistance provides different information than price support and resistance. Price S/R tells you where buyers and sellers have previously entered the market. Oscillator S/R tells you what level of momentum the market has been able to sustain.
If the oscillator approaches its resistance level, it suggests momentum is reaching the upper bounds of what has been achievable recently. Either momentum will break through (indicating unusually strong conditions) or it will reverse (indicating normal mean reversion).
Similarly, if the oscillator approaches support, it suggests momentum is reaching exhaustion levels that have previously triggered bounces.
HOW IT APPEARS ON THE CHART
Resistance is displayed as a horizontal red line with a RES label on the oscillator pane. Support is displayed as a horizontal cyan line with a SUP label. These lines update dynamically as new pivots form.
When the oscillator breaks through these levels, markers appear:
R with up arrow: Resistance level broken, indicating unusually strong bullish momentum
S with down arrow: Support level broken, indicating unusually strong bearish momentum
R with checkmark: Resistance held, price rejected at this level
S with checkmark: Support held, price bounced from this level
The dashboard also shows current S/R status: whether the oscillator recently broke resistance, broke support, is currently at resistance, is currently at support, or is in clear space between levels.
AUTOMATED TRENDLINES: MOMENTUM TREND STRUCTURE
The third major component is automated trendline detection on the oscillator. This identifies trending behavior in momentum itself, separate from price trends.
WHAT ARE OSCILLATOR TRENDLINES
Just as you can draw trendlines on a price chart connecting swing lows (uptrend) or swing highs (downtrend), the indicator draws trendlines on the oscillator connecting pivot points.
Support trendlines connect oscillator pivot lows and project forward with a flat or rising slope. These show upward trending momentum where each pullback finds support at a higher level.
Resistance trendlines connect oscillator pivot highs and project forward with a flat or falling slope. These show downward trending momentum where each rally faces resistance at a lower level.
WHY THIS MATTERS
Price trends and momentum trends do not always align. Price can continue making higher highs while momentum makes lower highs, a condition called bearish divergence. Momentum trendlines help visualize this behavior.
When momentum is making higher lows (rising support trendline), it suggests underlying strength even if price is consolidating. When momentum is making lower highs (falling resistance trendline), it suggests underlying weakness even if price is holding.
Breaks of these trendlines often precede price moves. If a falling momentum resistance trendline breaks upward, it suggests bearish pressure is releasing and bullish momentum may follow. If a rising momentum support trendline breaks downward, it suggests bullish pressure is failing and bearish momentum may follow.
HOW IT APPEARS ON THE CHART
Support trendlines appear in blue/cyan, resistance trendlines appear in pink/magenta. Lines extend forward from the most recent pivot point to show projected levels.
Small circle markers can optionally appear at each pivot point used to construct the trendlines, helping you verify the anchor points.
When the oscillator breaks through a trendline, markers appear:
TL with up arrow: Resistance trendline broken upward (bullish breakout)
TL with down arrow: Support trendline broken downward (bearish breakdown)
Trendline strength is calculated based on three factors: how many pivot points validate the line, how recently it formed, and the angle of the slope. Stronger trendlines have more touches, formed recently, and have moderate slopes. You can filter trendlines by strength to show only the most significant ones.
Optional trendline zones can display a shaded area around each trendline rather than just a single line, showing a zone of influence rather than a precise level.
DIVERGENCE: WHEN PRICE AND MOMENTUM DISAGREE
The fourth major component is divergence detection, which identifies discrepancies between price action and oscillator behavior.
WHAT IS DIVERGENCE
Divergence occurs when price makes a new high or low, but the oscillator fails to confirm it. This disagreement between price and momentum often precedes reversals.
There are four types of divergence:
REGULAR BULLISH DIVERGENCE
Price makes a lower low (new low point below the previous low), but the oscillator makes a higher low (its low point is above its previous low). This suggests that despite price going lower, selling momentum is actually weakening. The implication is that sellers are losing conviction and a bounce or reversal may be approaching.
Visual example: Imagine price drops from 100 to 95, bounces to 97, then drops again to 93. At the same time, the oscillator drops to 25, bounces to 35, then drops only to 30. Price made a lower low (93 vs 95) but the oscillator made a higher low (30 vs 25). This is regular bullish divergence.
REGULAR BEARISH DIVERGENCE
Price makes a higher high (new high point above the previous high), but the oscillator makes a lower high (its high point is below its previous high). This suggests that despite price going higher, buying momentum is actually weakening. The implication is that buyers are losing conviction and a pullback or reversal may be approaching.
HIDDEN BULLISH DIVERGENCE
Price makes a higher low (its low point is above its previous low), but the oscillator makes a lower low (new low below its previous low). This occurs during uptrends and suggests the trend will continue. Price is holding higher but momentum briefly dipped further, indicating a temporary pullback within a larger uptrend.
HIDDEN BEARISH DIVERGENCE
Price makes a lower high (its high point is below its previous high), but the oscillator makes a higher high (new high above its previous high). This occurs during downtrends and suggests the trend will continue. Price is staying lower but momentum briefly spiked higher, indicating a temporary bounce within a larger downtrend.
Regular divergence suggests reversal. Hidden divergence suggests continuation.
HOW IT APPEARS ON THE CHART
When divergence is confirmed, labels appear on the oscillator:
BULL DIV: Regular bullish divergence confirmed
BEAR DIV: Regular bearish divergence confirmed
H-BULL: Hidden bullish divergence confirmed
H-BEAR: Hidden bearish divergence confirmed
Dotted lines connect the pivot points on the oscillator to show the divergence pattern. Regular divergence uses solid colored lines, hidden divergence uses dashed lines.
The dashboard shows divergence status in real-time:
CHECKING BULL: A potential bullish divergence pattern is forming but not yet confirmed
CHECKING BEAR: A potential bearish divergence pattern is forming but not yet confirmed
BULL CONFIRMED: Bullish divergence has been validated
BEAR CONFIRMED: Bearish divergence has been validated
NONE: No divergence currently active
Divergence strength is calculated from the magnitude of the oscillator discrepancy. Only divergences meeting the minimum strength threshold are displayed to filter out minor, less significant patterns.
FLOW RIBBONS: VISUALIZING MOMENTUM ALIGNMENT
The fifth major component is the Flow Ribbon system, which displays multiple moving averages of the QMF oscillator to visualize momentum trend and alignment.
WHAT ARE FLOW RIBBONS
Flow ribbons consist of three Exponential Moving Averages (EMAs) applied to the QMF oscillator values. Think of them as smoothed versions of the oscillator at different speeds:
Fast Ribbon : Responds quickly to momentum changes, showing recent momentum direction
Medium Ribbon: Balances responsiveness with smoothness, showing intermediate momentum
Slow Ribbon: Moves slowly and shows longer-term momentum context
When these three lines are plotted together with filled area between them, they create a visual ribbon that expands and contracts based on momentum conditions.
WHY RIBBON ALIGNMENT MATTERS
The relationship between these three averages tells you about momentum structure:
BULLISH ALIGNMENT (Fast above Medium above Slow)
When the ribbons are stacked with fast on top, medium in middle, and slow on bottom, momentum is aligned bullishly across multiple timeframes. Short-term momentum leads, with medium and long-term momentum confirming. This is the strongest bullish configuration.
BEARISH ALIGNMENT (Fast below Medium below Slow)
When the ribbons are inverted with fast on bottom, medium in middle, and slow on top, momentum is aligned bearishly across multiple timeframes. Short-term momentum leads downward, with medium and long-term momentum confirming. This is the strongest bearish configuration.
MIXED/TRANSITIONING
When the ribbons are not properly stacked, momentum is in transition. This often occurs during consolidation, trend changes, or choppy conditions. Trading during mixed ribbon states carries higher uncertainty.
RIBBON EXPANSION AND CONTRACTION
Beyond alignment, the distance between the fast and slow ribbon provides additional information:
EXPANDING RIBBON
When the gap between fast and slow ribbon is increasing, momentum is accelerating. In a bullish alignment with expansion, upward momentum is strengthening. In a bearish alignment with expansion, downward momentum is strengthening. Expansion confirms trend conviction.
CONTRACTING RIBBON
When the gap between fast and slow ribbon is decreasing, momentum is decelerating. The current trend may be losing steam. Contraction often precedes consolidation or reversal. It serves as an early warning that the current move may be exhausting.
HOW IT APPEARS ON THE CHART
The fast ribbon appears as a thicker line, the slow ribbon as a thinner line. The area between them fills with color:
Green fill: Bullish ribbon alignment
Red fill: Bearish ribbon alignment
Gray fill: Neutral or transitioning state
The dashboard shows ribbon state as BULL, BEAR, or NEUT, and indicates whether ribbons are expanding (EXP) or contracting (CON).
Ribbon crossovers occur when the fast ribbon crosses the slow ribbon, signaling potential momentum shifts. These crossovers are confirmed only after the bar closes to prevent false signals from intrabar movement.
REVERSAL CLOUDS: PROBABILITY ZONES
The sixth major component is the Reversal Cloud system, which visualizes zones where momentum reversals have elevated probability.
WHAT ARE REVERSAL CLOUDS
Reversal clouds are shaded areas around the QMF oscillator that indicate probability zones for mean reversion. They answer the question: How far from average has momentum extended, and what is the probability it will revert?
When the oscillator moves far from its normal range, it creates stretched conditions. Like a rubber band pulled to its limit, the probability increases that it will snap back toward center. Reversal clouds visualize these stretched conditions.
CLOUD CALCULATION METHODS
Five different calculation methods are available, each with different characteristics:
DYNAMIC BOLLINGER
Uses statistical standard deviation to create bands that adapt to oscillator volatility. When the oscillator is volatile, bands widen. When the oscillator is calm, bands narrow. This method identifies moves that are statistically significant relative to recent oscillator behavior.
GOLDEN RATIO
Applies Fibonacci proportions (0.214 and 0.786) to the oscillator range. These ratios appear throughout nature and markets. Some traders believe these proportions have psychological significance in market behavior.
ADAPTIVE HALO
Scales cloud width based on price ATR rather than oscillator volatility. This connects cloud width to actual price volatility, making the clouds wider during volatile price action and narrower during calm periods.
VOLATILITY SQUEEZE
Uses short-term standard deviation to create bands that contract during low volatility and expand during high volatility. This method is particularly useful for identifying potential breakout conditions when volatility is compressed.
ICHIMOKU RSI
Applies concepts from Ichimoku Kinko Hyo equilibrium theory to create balanced zones. Uses multiple lookback periods to establish equilibrium levels where the oscillator tends to find balance.
HOW TO READ THE CLOUDS
The oscillator moves through the cloud area as momentum fluctuates:
When QMF enters the upper cloud region, it indicates extended bullish momentum. The higher into the cloud, the greater the probability of bearish reversal through mean reversion.
When QMF enters the lower cloud region, it indicates extended bearish momentum. The deeper into the cloud, the greater the probability of bullish reversal through mean reversion.
Cloud opacity adjusts based on reversal probability. More opaque coloring indicates higher reversal probability. Subtle coloring indicates lower reversal probability.
IMPORTANT UNDERSTANDING
Clouds show probability zones, not certainty. Price can remain in extreme zones longer than expected, particularly during strong trends. Clouds are most useful when combined with other components like divergence, S/R breaks, and ribbon alignment rather than used in isolation.
MULTI-TIMEFRAME ANALYSIS: SEEING THE BIGGER PICTURE
The seventh major component is Multi-Timeframe (MTF) analysis, which calculates QMF values across multiple timeframes to assess momentum alignment at different time perspectives.
WHY MULTIPLE TIMEFRAMES MATTER
The timeframe you trade on shows only one perspective of market momentum. A bullish signal on a 15-minute chart may occur within a larger bearish trend on the 4-hour chart. Understanding momentum context from higher timeframes helps you assess whether you are trading with or against the larger flow.
When multiple timeframes align in the same direction, the probability of a successful trade increases. When timeframes conflict, the situation is more uncertain and requires additional caution.
HOW MTF ANALYSIS WORKS
The indicator calculates the full QMF oscillator independently on four configurable timeframes. By default, these are set to 5-minute, 15-minute, 60-minute (1 hour), and 240-minute (4 hour), but you can configure them to any timeframes that suit your trading style.
For each timeframe, the system determines the current momentum bias:
OB - Overbought: QMF above 70, indicating extended bullish momentum that may reverse
B+ - Strong Bullish: QMF above 55 and above its signal line, indicating solid bullish momentum
B - Bullish: QMF above its signal line, indicating mild bullish momentum
N - Neutral: QMF near 50 with no clear direction
S - Bearish: QMF below its signal line, indicating mild bearish momentum
S+ - Strong Bearish: QMF below 45 and below its signal line, indicating solid bearish momentum
OS - Oversold: QMF below 30, indicating extended bearish momentum that may reverse
ALIGNMENT SCORING
The dashboard displays an alignment score showing how many of the four timeframes agree with each directional bias. This appears as a fraction like 3/4 or 2/4.
4/4 Bullish: All four timeframes show bullish readings - maximum bullish alignment
3/4 Bullish: Three timeframes bullish, one diverging - strong bullish alignment
2/4: Split between bullish and bearish - no clear alignment, use caution
3/4 Bearish: Three timeframes bearish, one diverging - strong bearish alignment
4/4 Bearish: All four timeframes show bearish readings - maximum bearish alignment
Higher alignment scores indicate more reliable momentum context. Trading with 3/4 or 4/4 alignment in your favor provides better odds than trading against alignment or during mixed conditions.
NON-REPAINTING MTF DATA
The multi-timeframe data uses proper request.security settings with lookahead disabled and gaps handled correctly. This ensures the MTF readings you see in backtesting match what you would see in real-time trading, with no future data leakage that could create misleading results.
LIVE MOMENTUM SCORING: REAL-TIME MARKET ASSESSMENT
The eighth major component is the Live Momentum Scoring system, which provides continuous real-time feedback on current market conditions.
WHAT IS LIVE MOMENTUM SCORING
Unlike signals which only appear when specific patterns complete, live momentum scores update every bar to show the current balance between bullish and bearish factors. This answers the question: Right now, how do the bullish factors compare to the bearish factors?
The system evaluates six categories for each direction and adds up points:
ZONE POSITION (0-25 points)
Rewards positioning in favorable oscillator zones. Deep oversold positioning adds points to the bullish score. Deep overbought positioning adds points to the bearish score. Extreme zones receive maximum points, moderate zones receive partial points, neutral zones receive zero.
DIVERGENCE (0-20 points)
Rewards active or forming divergence patterns. Confirmed divergence receives full points. Forming (checking) divergence receives partial credit. No divergence receives zero points.
TREND ALIGNMENT (0-20 points)
Rewards proper EMA stacking and trend MA positioning. Full bullish EMA stack (fast above medium above slow above trend MA) receives maximum bullish points. Partial alignment receives partial points.
MOMENTUM DIRECTION (0-15 points)
Rewards current momentum direction and acceleration. Accelerating momentum in the favorable direction receives maximum points. Simple directional momentum receives moderate points. Histogram turning (early reversal signs) receives partial points.
RIBBON STATE (0-10 points)
Rewards proper ribbon alignment and expansion. Aligned and expanding ribbons receive maximum points. Aligned but contracting ribbons receive moderate points. Mixed ribbons receive zero points.
MULTI-TIMEFRAME (0-10 points)
Rewards higher timeframe alignment. 4/4 alignment receives maximum points, scaling down as alignment decreases.
READING THE LIVE SCORES
The dashboard displays current scores for both directions:
BULL: Shows bullish score as percentage (0-100) and letter grade (A through D)
BEAR: Shows bearish score as percentage (0-100) and letter grade (A through D)
BIAS: Shows which direction currently dominates (BULL, BEAR, or NEUTRAL if close)
Grade thresholds:
A Grade: 70% or higher - Strong momentum factors aligned
B Grade: 50-69% - Moderate momentum factors present
C Grade: 30-49% - Some momentum factors but incomplete
D Grade: Below 30% - Weak or missing momentum factors
The dominant bias shows which direction currently has stronger factors. When one side leads by more than 10 points, it shows that direction. Otherwise, it shows NEUTRAL indicating balanced or mixed conditions.
WHY LIVE SCORING MATTERS
Live scores help you understand current market conditions even when no signal has fired. You can see momentum building or fading in real-time. A rising bullish score suggests conditions are improving for potential long opportunities. A rising bearish score suggests conditions are deteriorating.
This continuous feedback helps with:
- Anticipating potential signals before they fire
- Assessing whether to act on signals that do fire
- Understanding why a signal did or did not appear
- Monitoring open positions for changing conditions
THE DASHBOARD: YOUR ANALYSIS CONTROL CENTER
The dashboard provides a comprehensive real-time summary of all indicator components in one organized table. It displays on the price chart using force overlay so it remains visible regardless of which pane you are focused on.
DASHBOARD LAYOUT
The dashboard can be configured in three detail levels:
COMPACT MODE
Shows only essential information: QMF value, zone status, S/R status, and volume. Uses minimal screen space for traders who want the indicator to remain unobtrusive.
STANDARD MODE
Shows balanced detail including QMF values, zone status, last signal information, grade statistics, divergence status, S/R and volume status, live momentum scores, and MTF panel. Suitable for most traders.
FULL MODE
Shows maximum detail including everything in Standard mode plus EMA structure, ribbon state, volatility regime, signal statistics breakdown, and trendline counts. For traders who want complete information access.
DASHBOARD ROWS EXPLAINED
Row 1 - HEADER
Shows indicator name for identification.
Row 2 - QMF VALUES
Displays three values:
- QMF with directional arrow showing current oscillator value and whether it is rising, falling, or unchanged
- SIG showing the signal line value
- Histogram value with plus or minus sign showing the difference between QMF and signal line
Row 3 - PROGRESS BAR
Visual representation of oscillator position from 0 to 100 using text characters. Provides quick visual reference without needing to look at the oscillator pane.
Row 4 - ZONE STATUS
Text classification of current zone with color coding:
- EXTREME OB (red): Oscillator at or above extreme overbought level
- OVERBOUGHT (light red): Oscillator in overbought zone
- BULLISH (light green): Oscillator above 55 but below overbought
- NEUTRAL (gray): Oscillator between 45 and 55
- BEARISH (light red): Oscillator below 45 but above oversold
- OVERSOLD (light blue): Oscillator in oversold zone
- EXTREME OS (blue): Oscillator at or below extreme oversold level
Row 5 - LAST SIGNAL (Standard and Full mode)
Shows information about the most recent signal:
- Direction and grade (LONG A, SHORT B, etc.)
- Bars ago since signal fired
- Entry price when signal fired
- Current profit/loss from that price level
This helps track performance of recent signals and manage any open positions based on them.
Row 6 - GRADE STATISTICS (Standard and Full mode)
Running count of signals generated:
- A: Count of Grade A signals
- B: Count of Grade B signals
- C: Count of Grade C signals
- T: Total signal count
This provides perspective on signal frequency and grade distribution over the visible chart period.
Row 7 - DIVERGENCE STATUS (Standard and Full mode)
Current state of divergence detection:
- CHECKING BULL: Bullish divergence pattern forming, not yet confirmed
- CHECKING BEAR: Bearish divergence pattern forming, not yet confirmed
- BULL CONFIRMED: Bullish divergence validated
- BEAR CONFIRMED: Bearish divergence validated
- NONE: No divergence currently active
Row 8 - S/R AND VOLUME
Two pieces of information:
- S/R status: Shows R BROKEN (resistance broken upward), S BROKEN (support broken downward), AT RES (testing resistance), AT SUP (testing support), or CLEAR (between levels)
- Volume status: Shows HIGH (volume 1.5x or more above average), MID (volume near average), or LOW (volume below average)
Row 9 - LIVE MOMENTUM (Standard and Full mode)
Real-time momentum scoring:
- BULL: Bullish percentage and letter grade
- BEAR: Bearish percentage and letter grade
- Dominant bias indicator
Row 10-11 - MTF PANEL (when enabled, Standard and Full mode)
Multi-timeframe status:
- Top row shows the four timeframe labels
- Bottom row shows the status code for each timeframe (OB, B+, B, N, S, S+, OS)
- Final cell shows alignment score as X/4
FULL MODE ADDITIONAL ROWS
Structure row: Shows EMA stack status (BULL STACK, BEAR STACK, or relationship between fast and slow) and trend MA position (ABOVE MA or BELOW MA)
Stats row: Shows count of long signals, short signals, and active trendlines
Ribbon row: Shows ribbon state (BULL, BEAR, NEUT), expansion status (EXP or CON), and volatility regime (H-VOL for high volatility, L-VOL for low volatility, N-VOL for normal)
DASHBOARD POSITIONING AND SIZING
Position options: Top Left, Top Center, Top Right, Middle Left, Middle Right, Bottom Left, Bottom Center, Bottom Right
Size options: Tiny (minimal space), Small (balanced), Normal (maximum readability)
Choose a position that does not obscure important price action on your chart and a size that balances readability with space efficiency.
HOW SIGNALS EMERGE FROM CONFLUENCE
After understanding all the individual components, it becomes clear how signals are generated. Signals in QMF are not arbitrary triggers based on single conditions. They emerge when multiple independent factors align to create confluence.
THE PATTERN-BASED APPROACH
The signal system uses a hierarchical pattern-based approach. Rather than calculating a score from random factors and labeling it, the system actively hunts for specific predefined pattern combinations.
The system first checks for Grade A patterns. If none are found, it checks for Grade B patterns. If none are found, it checks for Grade C patterns. Each grade represents specific combinations of factors that must be present together.
GRADE A REQUIREMENTS
Grade A patterns require multiple strong factors aligned. Examples of Grade A pattern combinations:
Pattern A1 - Perfect Storm Reversal:
- Extreme zone positioning (deeply oversold or overbought)
- Confirmed regular divergence
- Structural break (resistance broken or support broken or trendline broken)
- Strong volume conviction (1.3x or higher)
- High MTF alignment (3 or more timeframes agreeing)
Pattern A2 - Breakout Conviction:
- Resistance or support broken
- Accelerating momentum in the breakout direction
- Full EMA stack aligned
- Ribbon aligned and expanding
- Strong volume conviction (1.4x or higher)
- Good MTF alignment (2 or more timeframes)
Pattern A3 - Zone Reversal Multi-Confirmation:
- Extreme or standard zone positioning
- Regular or hidden divergence confirmed
- Active bounce from zone
- EMA crossover or MA break in reversal direction
- Good MTF alignment (2 or more timeframes)
- Volume conviction present (1.2x or higher)
All factors in the pattern must be present simultaneously. Missing any single factor disqualifies the Grade A pattern.
GRADE B REQUIREMENTS
Grade B patterns require fewer but still meaningful confirmations. These patterns fire only when no Grade A pattern is detected:
Pattern B1 - Zone with Confirmation:
- Oversold or overbought zone positioning
- Momentum in reversal direction
- Hidden divergence, EMA crossover, or trendline break present
- Minimum MTF alignment met
Pattern B2 - Divergence with Structure:
- Regular or hidden divergence confirmed
- Structural break (S/R or trendline or MA)
- Momentum confirming direction
- Volume at least average
Pattern B3 - Clean Trend Continuation:
- Above or below trend MA
- Ribbon aligned in direction
- Oscillator crossed signal line
- EMA stack complete
GRADE C REQUIREMENTS
Grade C patterns require basic confirmations. These patterns fire only when no Grade A or Grade B pattern is detected:
Pattern C1 - Early Zone Entry:
- Zone positioning or approaching zone
- Momentum in expected direction
- Oscillator or EMA crossover present
Pattern C2 - Momentum Shift:
- Histogram turning in expected direction
- Oscillator crossover confirmed
- Oscillator on expected side of midline
SIGNAL QUALITY CONTROLS
Beyond pattern detection, several quality controls must be satisfied:
COOLDOWN
A minimum number of bars must pass between any two signals. This prevents signal clustering during volatile conditions and ensures each signal represents a distinct opportunity.
DIRECTION ALTERNATION
When enabled, signals must alternate between LONG and SHORT. After a LONG signal, only SHORT signals can fire until direction changes. This prevents multiple consecutive signals in the same direction.
PULLBACK REQUIREMENT
After a signal fires, the oscillator must retrace a minimum percentage before another same-direction signal can fire. This ensures re-entry signals occur after meaningful pullbacks rather than immediately after the first signal.
VOLUME CONFIRMATION (Optional)
When enabled, volume must meet minimum threshold relative to average. This filters out signals during low-volume periods when moves may lack follow-through.
BAR CONFIRMATION
All signals require barstate.isconfirmed, meaning they only fire after the bar closes. This prevents signals from appearing and disappearing during live bar formation, ensuring backtest results match live behavior.
A comprehensive example that combines signal generation logic, grading system, with all elements clearly annotated for easy understanding.
SETTINGS REFERENCE
This section provides a reference for the main configurable settings organized by category.
QUANTUM ENGINE SETTINGS
Sensitivity (5-50): Primary lookback period for momentum calculations. Lower values respond faster but may include more noise. Higher values smooth the oscillator but increase lag. Default 14 balances responsiveness with stability.
Smoothing (1-10): Exponential smoothing applied to final QMF value. Higher values reduce noise, lower values preserve detail. Default 3 provides good noise reduction.
Adaptive Mode: When enabled, automatically adjusts sensitivity based on volatility regime. Increases sensitivity during high volatility, decreases during low volatility.
Dimension Toggles: Enable or disable each of the four dimensions (Velocity, Volume, Volatility, Session) individually. Useful for customizing the oscillator for specific instruments or conditions.
Dimension Weights: Adjust relative contribution of each dimension. Weights are normalized so they do not need to sum to 1.0. Higher weight means that dimension has more influence on the final value.
Signal Length: EMA period for the signal line. Lower values make signal line more responsive, higher values make it smoother.
DISPLAY SETTINGS
Display Mode: Choose between Energy Candles, QMF Line, Impulse Bars, or Heikin Flow visualization.
Candle Glow: Adds luminous glow effect around energy candles based on momentum strength. Visually striking but can impact performance on slower systems.
Glow Layers: Number of glow layers when candle glow is enabled. More layers create smoother gradient but use more resources.
VISUAL SETTINGS
Theme: Choose between Tokyo Night (dark blue with vibrant accents), Dracula (purple-grey with high contrast), or Nord (muted arctic tones). Each theme is designed for extended trading sessions.
Glow Intensity: Controls transparency of glow effects. Lower values create more visible glows, higher values more subtle.
Enable Glow Effects: Master toggle for all glow effects around candles and levels.
REVERSAL CLOUD SETTINGS
Enable Reversal Clouds: Toggle cloud display on or off.
Cloud Style: Choose calculation method (Dynamic Bollinger, Golden Ratio, Adaptive Halo, Volatility Squeeze, Ichimoku RSI).
Cloud Transparency: Higher values make clouds more transparent, lower values more visible.
Cloud Width: Multiplier for cloud width. Higher values create wider reversal zones.
FLOW RIBBON SETTINGS
Enable Ribbons: Toggle ribbon display.
Fast/Medium/Slow Ribbon: Period for each ribbon EMA. Faster periods respond quicker, slower periods show longer-term trend.
DIVERGENCE SETTINGS
Enable Divergence: Toggle divergence detection.
Pivot Sensitivity: Bars required on each side to confirm pivot point. Higher values detect more significant pivots but may miss shorter-term divergences.
Confirmation Bars: Bars to wait after pivot detection before confirming divergence.
Min Strength Pct: Minimum divergence strength percentage to display. Higher values filter out weaker divergences.
Show Lines: Draw connecting lines between divergence pivots.
Min/Max Distance: Range of bars between pivots for valid divergence.
SIGNAL SYSTEM SETTINGS
Enable Signals: Toggle signal generation.
Show Signals: Filter by grade (A Only, A and B, All Grades).
Cooldown Bars: Minimum bars between signals.
Pullback Required Pct: Percentage pullback needed before same-direction signal.
Require Direction Alternation: Force signals to alternate LONG and SHORT.
Fast/Slow EMA: Periods for EMA crossover analysis.
Trend MA: Period for trend-defining moving average.
Min MTF Alignment: Minimum timeframes that must align for higher grades.
Require Volume Confirmation: Make volume threshold mandatory for signals.
Min Volume Ratio: Minimum volume relative to average when required.
TRENDLINE SETTINGS
Enable Trendlines: Toggle automated trendline detection.
Pivot Left/Right: Bars for pivot detection.
Extension Bars: How far to extend lines into future.
Min Touch Points: Minimum pivots to validate line.
Enable Strength Filter: Filter by calculated strength.
Minimum Strength: Threshold for strength filter.
Show Trendline Zones: Display shaded zones around lines.
Zone Width StdDev: Standard deviation multiplier for zone width.
Line Style: Solid, Dashed, or Dotted.
Line Width: Thickness in pixels.
Show Touch Points: Display circle markers at pivots.
Show Strength Labels: Display strength percentage at line end.
SUPPORT RESISTANCE SETTINGS
Enable S/R: Toggle dynamic S/R display.
Pivot Lookback: Period for detecting S/R pivots.
DASHBOARD SETTINGS
Enable Dashboard: Toggle dashboard display.
Position: Screen position (8 options).
Size: Tiny, Small, or Normal.
Style: Compact, Standard, or Full detail level.
MTF Panel: Include or exclude multi-timeframe panel.
MTF 1-4: Timeframe selections for MTF analysis.
LEVEL SETTINGS
Overbought/Oversold: Standard zone thresholds.
Extreme OB/OS: Extreme zone thresholds.
PRACTICAL EXAMPLE: READING THE COMPLETE PICTURE
This example walks through analyzing a chart using all the indicator components together.
SCENARIO: You are analyzing a 15-minute chart looking for trading opportunities.
STEP 1: ASSESS OSCILLATOR ZONE
You look at the QMF oscillator and see it reading 24, which is in the oversold zone. The dashboard confirms this showing OVERSOLD in the zone status. The progress bar shows the oscillator is in the lower portion of its range.
Initial assessment: The market has experienced significant selling pressure and is in territory where bullish reversals have elevated probability.
STEP 2: CHECK STRUCTURE
You look at the dynamic S/R levels. The oscillator recently touched its support level at 22 and bounced. You see an S with checkmark marker indicating support held. The dashboard shows AT SUP status.
Assessment update: The oscillator found support at a level that has held before. This adds to the bullish case.
STEP 3: EXAMINE TRENDLINES
You notice a resistance trendline connecting recent oscillator highs that has been declining. The oscillator is currently approaching this trendline from below. No break has occurred yet.
Assessment update: There is overhead resistance that will need to be cleared. A break above would be significant.
STEP 4: CHECK DIVERGENCE
The dashboard shows BULL CONFIRMED in the divergence status. Looking at the oscillator, you see a BULL DIV label with a dotted line connecting two pivot lows. The oscillator made a higher low while price made a lower low.
Assessment update: Confirmed bullish divergence suggests selling momentum is weakening despite price continuing lower. This is a meaningful signal of potential reversal.
STEP 5: EVALUATE RIBBONS
The ribbons are currently mixed with fast below medium but both above slow. Ribbon fill is gray indicating transitioning state. However, you notice the fast ribbon is turning upward and approaching the medium ribbon from below.
Assessment update: Ribbons are not yet aligned bullish, but appear to be transitioning. A bullish crossover may be approaching.
STEP 6: CHECK MTF ALIGNMENT
The dashboard MTF panel shows: 5m is B+, 15m is B, 1H is N, 4H is S. The alignment shows 2/4 bullish.
Assessment update: Lower timeframes support bullish bias, but higher timeframes are neutral or bearish. This is mixed alignment, suggesting caution. Any bullish move may face resistance from higher timeframe sellers.
STEP 7: REVIEW LIVE MOMENTUM SCORES
Dashboard shows BULL at 52% Grade B, BEAR at 28% Grade D. Dominant bias shows BULL.
Assessment update: Bullish factors currently outweigh bearish factors. The score suggests moderate bullish conditions, not yet strong.
STEP 8: SYNTHESIS
Putting it together:
- Oversold zone positioning (bullish factor)
- Support held (bullish factor)
- Bullish divergence confirmed (strong bullish factor)
- Ribbons transitioning but not yet aligned (neutral)
- MTF alignment mixed at 2/4 (caution factor)
- Live score favors bullish moderately (supporting factor)
- Resistance trendline overhead (risk factor)
Conclusion: Conditions favor a bullish reversal but with caution warranted due to mixed MTF alignment and overhead resistance. This would not qualify for a Grade A signal due to insufficient MTF alignment. If a signal fires, it would likely be Grade B.
STEP 9: SIGNAL FIRES
Several bars later, the oscillator crosses above its signal line while still in oversold territory. The EMA fast crosses above EMA slow. A LONG B signal appears at 85% confluence.
The signal represents: Oversold positioning plus confirmed divergence plus momentum crossover, meeting Grade B pattern requirements.
STEP 10: MONITORING
After entry, you monitor the dashboard for changing conditions. Live momentum scores continue rising. The resistance trendline breaks (TL up arrow marker appears). Ribbons align bullish. MTF alignment improves to 3/4 as the 1H turns bullish.
The improving conditions confirm the trade thesis. You hold the position as conditions strengthen.
ALERTS AVAILABLE
28 alert conditions are available covering all major events. To set up alerts, click the alert icon in TradingView, select this indicator, and choose the desired condition.
SIGNAL ALERTS
- A-Grade LONG Signal: Highest probability bullish entry
- A-Grade SHORT Signal : Highest probability bearish entry
- B-Grade LONG Signal: Solid bullish entry
- B-Grade SHORT Signal: Solid bearish entry
- Any LONG Signal: Any bullish signal regardless of grade
- Any SHORT Signal: Any bearish signal regardless of grade
DIVERGENCE ALERTS
- Regular Bullish Divergence: Classic bullish reversal pattern
- Regular Bearish Divergence: Classic bearish reversal pattern
- Hidden Bullish Divergence: Bullish continuation pattern
- Hidden Bearish Divergence: Bearish continuation pattern
- Any Bullish Divergence: Either regular or hidden bullish
- Any Bearish Divergence: Either regular or hidden bearish
STRUCTURE ALERTS
- Trendline Break Up : Resistance trendline broken
- Trendline Break Down: Support trendline broken
- Resistance Broken: S/R resistance level broken
- Support Broken: S/R support level broken
CROSSOVER ALERTS
- EMA Cross Up : Fast EMA crossed above slow EMA
- EMA Cross Down : Fast EMA crossed below slow EMA
- Trend MA Break Up: Oscillator crossed above trend MA
- Trend MA Break Down: Oscillator crossed below trend MA
ZONE ALERTS
- Entered Overbought Zone: Oscillator entered overbought
- Entered Oversold Zone: Oscillator entered oversold
- Entered Extreme Overbought: Oscillator reached extreme overbought
- Entered Extreme Oversold: Oscillator reached extreme oversold
RIBBON ALERTS
- Ribbon Cross Up: Fast ribbon crossed above slow ribbon
- Ribbon Cross Down: Fast ribbon crossed below slow ribbon
BOUNCE ALERTS
- Bounce From Oversold: Active reversal from oversold zone
- Bounce From Overbought : Active reversal from overbought zone
NON-REPAINTING Structure
All visual elements and signals in this indicator are non-repainting:
- Signals use barstate.isconfirmed to fire only after bar close
- Divergence confirmation waits for pivot validation
- Trendline breaks confirm after bar close
- S/R breaks confirm after bar close
- MTF data uses lookahead off setting
- No future data is used in any calculation
What you see in backtesting accurately represents what would have appeared in real-time trading.
RISK DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice, investment advice, or trading advice.
Trading financial instruments involves substantial risk of loss and is not suitable for all investors. Past performance is not indicative of future results. The analysis provided by this indicator should not be relied upon as the sole basis for any trading decision.
Before trading:
- Understand you may lose some or all of your investment
- Never trade with money you cannot afford to lose
- Conduct your own research and due diligence
- Consider consulting with a qualified financial advisor
- Practice with paper trading before risking real capital
- Implement proper risk management with recommended maximum 1-2% risk per trade
By using this indicator, you acknowledge that you have read and understood this disclaimer and accept full responsibility for your trading decisions.
Bifurcation Zone - CAEBifurcation Zone — Cognitive Adversarial Engine (BZ-CAE)
Bifurcation Zone — CAE (BZ-CAE) is a next-generation divergence detection system enhanced by a Cognitive Adversarial Engine that evaluates both sides of every potential trade before presenting signals. Unlike traditional divergence indicators that show every price-oscillator disagreement regardless of context, BZ-CAE applies comprehensive market-state intelligence to identify only the divergences that occur in favorable conditions with genuine probability edges.
The system identifies structural bifurcation points — critical junctures where price and momentum disagree, signaling potential reversals or continuations — then validates these opportunities through five interconnected intelligence layers: Trend Conviction Scoring , Directional Momentum Alignment , Multi-Factor Exhaustion Modeling , Adversarial Validation , and Confidence Scoring . The result is a selective, context-aware signal system that filters noise and highlights high-probability setups.
This is not a "buy the arrow" indicator. It's a decision support framework that teaches you how to read market state, evaluate divergence quality, and make informed trading decisions based on quantified intelligence rather than hope.
What Sets BZ-CAE Apart: Technical Architecture
The Problem With Traditional Divergence Indicators
Most divergence indicators operate on a simple rule: if price makes a higher high and RSI makes a lower high, show a bearish signal. If price makes a lower low and RSI makes a higher low, show a bullish signal. This creates several critical problems:
Context Blindness : They show counter-trend signals in powerful trends that rarely reverse, leading to repeated losses as you fade momentum.
Signal Spam : Every minor price-oscillator disagreement generates an alert, overwhelming you with low-quality setups and creating analysis paralysis.
No Quality Ranking : All signals are treated identically. A marginal divergence in choppy conditions receives the same visual treatment as a high-conviction setup at a major exhaustion point.
Single-Sided Evaluation : They ask "Is this a good long?" without checking if the short case is overwhelmingly stronger, leading you into obvious bad trades.
Static Configuration : You manually choose RSI 14 or Stochastic 14 and hope it works, with no systematic way to validate if that's optimal for your instrument.
BZ-CAE's Solution: Cognitive Adversarial Intelligence
BZ-CAE solves these problems through an integrated five-layer intelligence architecture:
1. Trend Conviction Score (TCS) — 0 to 1 Scale
Most indicators check if ADX is above 25 to determine "trending" conditions. This binary approach misses nuance. TCS is a weighted composite metric:
Formula : 0.35 × normalize(ADX, 10, 35) + 0.35 × structural_strength + 0.30 × htf_alignment
Structural Strength : 10-bar SMA of consecutive directional bars. Captures persistence — are bulls or bears consistently winning?
HTF Alignment : Multi-timeframe EMA stacking (20/50/100/200). When all EMAs align in the same direction, you're in institutional trend territory.
Purpose : Quantifies how "locked in" the trend is. When TCS exceeds your threshold (default 0.80), the system knows to avoid counter-trend trades unless other factors override.
Interpretation :
TCS > 0.85: Very strong trend — counter-trading is extremely high risk
TCS 0.70-0.85: Strong trend — favor continuation, require exhaustion for reversals
TCS 0.50-0.70: Moderate trend — context matters, both directions viable
TCS < 0.50: Weak/choppy — reversals more viable, range-bound conditions
2. Directional Momentum Alignment (DMA) — ATR-Normalized
Formula : (EMA21 - EMA55) / ATR14
This isn't just "price above EMA" — it's a regime-aware momentum gauge. The same $100 price movement reads completely differently in high-volatility crypto versus low-volatility forex. By normalizing with ATR, DMA adapts its interpretation to current market conditions.
Purpose : Quantifies the directional "force" behind current price action. Positive = bullish push, negative = bearish push. Magnitude = strength.
Interpretation :
DMA > 0.7: Strong bullish momentum — bearish divergences risky
DMA 0.3 to 0.7: Moderate bullish bias
DMA -0.3 to 0.3: Balanced/choppy conditions
DMA -0.7 to -0.3: Moderate bearish bias
DMA < -0.7: Strong bearish momentum — bullish divergences risky
3. Multi-Factor Exhaustion Modeling — 0 to 1 Probability
Single-metric exhaustion detection (like "RSI > 80") misses complex market states. BZ-CAE aggregates five independent exhaustion signals:
Volume Spikes : Current volume versus 50-bar average
2.5x average: 0.25 weight
2.0x average: 0.15 weight
1.5x average: 0.10 weight
Divergence Present : The fact that a divergence exists contributes 0.30 weight — structural momentum disagreement is itself an exhaustion signal.
RSI Extremes : Captures oscillator climax zones
RSI > 80 or < 20: 0.25 weight
RSI > 75 or < 25: 0.15 weight
Pin Bar Detection : Identifies rejection candles (2:1 wick-to-body ratio, indicating failed breakout attempts): 0.15 weight
Extended Runs : Consecutive bars above/below EMA20 without pullback
30+ bars: 0.15 weight (market hasn't paused to consolidate)
Total exhaustion score is the sum of all applicable weights, capped at 1.0.
Purpose : Detects when strong trends become vulnerable to reversal. High exhaustion can override trend filters, allowing counter-trend trades at genuine turning points that basic indicators would miss.
Interpretation :
Exhaustion > 0.75: High probability of climax — yellow background shading alerts you visually
Exhaustion 0.50-0.75: Moderate overextension — watch for confirmation
Exhaustion < 0.50: Fresh move — trend can continue, counter-trend trades higher risk
4. Adversarial Validation — Game Theory Applied to Trading
This is BZ-CAE's signature innovation. Before approving any signal, the engine quantifies BOTH sides of the trade simultaneously:
For Bullish Divergences , it calculates:
Bull Case Score (0-1+) :
Distance below EMA20 (pullback quality): up to 0.25
Bullish EMA alignment (close > EMA20 > EMA50): 0.25
Oversold RSI (< 40): 0.25
Volume confirmation (> 1.2x average): 0.25
Bear Case Score (0-1+) :
Price below EMA50 (structural weakness): 0.30
Very oversold RSI (< 30, indicating knife-catching): 0.20
Differential = Bull Case - Bear Case
If differential < -0.10 (default threshold), the bear case is dominating — signal is BLOCKED or ANNOTATED.
For Bearish Divergences , the logic inverts (Bear Case vs Bull Case).
Purpose : Prevents trades where you're fighting obvious strength in the opposite direction. This is institutional-grade risk management — don't just evaluate your trade, evaluate the counter-trade simultaneously.
Why This Matters : You might see a bullish divergence at a local low, but if price is deeply below major support EMAs with strong bearish momentum, you're catching a falling knife. The adversarial check catches this and blocks the signal.
5. Confidence Scoring — 0 to 1 Quality Assessment
Every signal that passes initial filters receives a comprehensive quality score:
Formula :
0.30 × normalize(TCS) // Trend context
+ 0.25 × normalize(|DMA|) // Momentum magnitude
+ 0.20 × pullback_quality // Entry distance from EMA20
+ 0.15 × state_quality // ADX + alignment + structure
+ 0.10 × divergence_strength // Slope separation magnitude
+ adversarial_bonus (0-0.30) // Your side's advantage
Purpose : Ranks setup quality for filtering and position sizing decisions. You can set a minimum confidence threshold (default 0.35) to ensure only quality setups reach your chart.
Interpretation :
Confidence > 0.70: Premium setup — consider increased position size
Confidence 0.50-0.70: Good quality — standard size
Confidence 0.35-0.50: Acceptable — reduced size or skip if conservative
Confidence < 0.35: Marginal — blocked in Filtering mode, annotated in Advisory mode
CAE Operating Modes: Learning vs Enforcement
Off : Disables all CAE logic. Raw divergence pipeline only. Use for baseline comparison.
Advisory : Shows ALL signals regardless of CAE evaluation, but annotates signals that WOULD be blocked with specific warnings (e.g., "Bull: strong downtrend (TCS=0.87)" or "Adversarial bearish"). This is your learning mode — see CAE's decision logic in action without missing educational opportunities.
Filtering : Actively blocks low-quality signals. Only setups that pass all enabled gates (Trend Filter, Adversarial Validation, Confidence Gating) reach your chart. This is your live trading mode — trust the system to enforce discipline.
CAE Filter Gates: Three-Layer Protection
When CAE is enabled, signals must pass through three independent gates (each can be toggled on/off):
Gate 1: Strong Trend Filter
If TCS ≥ tcs_threshold (default 0.80)
And signal is counter-trend (bullish in downtrend or bearish in uptrend)
And exhaustion < exhaustion_required (default 0.50)
Then: BLOCK signal
Logic: Don't fade strong trends unless the move is clearly overextended
Gate 2: Adversarial Validation
Calculate both bull case and bear case scores
If opposing case dominates by more than adv_threshold (default 0.10)
Then: BLOCK signal
Logic: Avoid trades where you're fighting obvious strength in the opposite direction
Gate 3: Confidence Gating
Calculate composite confidence score (0-1)
If confidence < min_confidence (default 0.35)
Then: In Filtering mode, BLOCK signal; in Advisory mode, ANNOTATE with warning
Logic: Only take setups with minimum quality threshold
All three gates work together. A signal must pass ALL enabled gates to fire.
Visual Intelligence System
Bifurcation Zones (Supply/Demand Blocks)
When a divergence signal fires, BZ-CAE draws a semi-transparent box extending 15 bars forward from the signal pivot:
Demand Zones (Bullish) : Theme-colored box (cyan in Cyberpunk, blue in Professional, etc.) labeled "Demand" — marks where smart money likely placed buy orders as price diverged at the low.
Supply Zones (Bearish) : Theme-colored box (magenta in Cyberpunk, orange in Professional) labeled "Supply" — marks where smart money likely placed sell orders as price diverged at the high.
Theory : Divergences represent institutional disagreement with the crowd. The crowd pushed price to an extreme (new high or low), but momentum (oscillator) is waning, indicating smart money is taking the opposite side. These zones mark order placement areas that become future support/resistance.
Use Cases :
Exit targets: Take profit when price returns to opposite-side zone
Re-entry levels: If price returns to your entry zone, consider adding
Stop placement: Place stops just beyond your zone (below demand, above supply)
Auto-Cleanup : System keeps the last 20 zones to prevent chart clutter.
Adversarial Bar Coloring — Real-Time Market Debate Heatmap
Each bar is colored based on the Bull Case vs Bear Case differential:
Strong Bull Advantage (diff > 0.3): Full theme bull color (e.g., cyan)
Moderate Bull Advantage (diff > 0.1): 50% transparency bull
Neutral (diff -0.1 to 0.1): Gray/neutral theme
Moderate Bear Advantage (diff < -0.1): 50% transparency bear
Strong Bear Advantage (diff < -0.3): Full theme bear color (e.g., magenta)
This creates a real-time visual heatmap showing which side is "winning" the market debate. When bars flip from cyan to magenta (or vice versa), you're witnessing a shift in adversarial advantage — a leading indicator of potential momentum changes.
Exhaustion Shading
When exhaustion score exceeds 0.75, the chart background displays a semi-transparent yellow highlight. This immediate visual warning alerts you that the current move is at high risk of reversal, even if trend indicators remain strong.
Visual Themes — Six Aesthetic Options
Cyberpunk : Cyan/Magenta/Yellow — High contrast, neon aesthetic, excellent for dark-themed trading environments
Professional : Blue/Orange/Green — Corporate color palette, suitable for presentations and professional documentation
Ocean : Teal/Red/Cyan — Aquatic palette, calming for extended monitoring sessions
Fire : Orange/Red/Coral — Warm aggressive colors, high energy
Matrix : Green/Red/Lime — Code aesthetic, homage to classic hacker visuals
Monochrome : White/Gray — Minimal distraction, maximum focus on price action
All visual elements (signal markers, zones, bar colors, dashboard) adapt to your selected theme.
Divergence Engine — Core Detection System
What Are Divergences?
Divergences occur when price action and momentum indicators disagree, creating structural tension that often resolves in a change of direction:
Regular Divergence (Reversal Signal) :
Bearish Regular : Price makes higher high, oscillator makes lower high → Potential trend reversal down
Bullish Regular : Price makes lower low, oscillator makes higher low → Potential trend reversal up
Hidden Divergence (Continuation Signal) :
Bearish Hidden : Price makes lower high, oscillator makes higher high → Downtrend continuation
Bullish Hidden : Price makes higher low, oscillator makes lower low → Uptrend continuation
Both types can be enabled/disabled independently in settings.
Pivot Detection Methods
BZ-CAE uses symmetric pivot detection with separate lookback and lookforward periods (default 5/5):
Pivot High : Bar where high > all highs within lookback range AND high > all highs within lookforward range
Pivot Low : Bar where low < all lows within lookback range AND low < all lows within lookforward range
This ensures structural validity — the pivot must be a clear local extreme, not just a minor wiggle.
Divergence Validation Requirements
For a divergence to be confirmed, it must satisfy:
Slope Disagreement : Price slope and oscillator slope must move in opposite directions (for regular divs) or same direction with inverted highs/lows (for hidden divs)
Minimum Slope Change : |osc_slope| > min_slope_change / 100 (default 1.0) — filters weak, marginal divergences
Maximum Lookback Range : Pivots must be within max_lookback bars (default 60) — prevents ancient, irrelevant divergences
ATR-Normalized Strength : Divergence strength = min(|price_slope| × |osc_slope| × 10, 1.0) — quantifies the magnitude of disagreement in volatility context
Regular divergences receive 1.0× weight; hidden divergences receive 0.8× weight (slightly less reliable historically).
Oscillator Options — Five Professional Indicators
RSI (Relative Strength Index) : Classic overbought/oversold momentum indicator. Best for: General purpose divergence detection across all instruments.
Stochastic : Range-bound %K momentum comparing close to high-low range. Best for: Mean reversion strategies and range-bound markets.
CCI (Commodity Channel Index) : Measures deviation from statistical mean, auto-normalized to 0-100 scale. Best for: Cyclical instruments and commodities.
MFI (Money Flow Index) : Volume-weighted RSI incorporating money flow. Best for: Volume-driven markets like stocks and crypto.
Williams %R : Inverse stochastic looking back over period, auto-adjusted to 0-100. Best for: Reversal detection at extremes.
Each oscillator has adjustable length (2-200, default 14) and smoothing (1-20, default 1). You also set overbought (50-100, default 70) and oversold (0-50, default 30) thresholds.
Signal Timing Modes — Understanding Repainting
BZ-CAE offers two timing policies with complete transparency about repainting behavior:
Realtime (1-bar, peak-anchored)
How It Works :
Detects peaks 1 bar ago using pattern: high > high AND high > high
Signal prints on the NEXT bar after peak detection (bar_index)
Visual marker anchors to the actual PEAK bar (bar_index - 1, offset -1)
Signal locks in when bar CONFIRMS (closes)
Repainting Behavior :
On the FORMING bar (before close), the peak condition may change as new prices arrive
Once bar CLOSES (barstate.isconfirmed), signal is locked permanently
This is preview/early warning behavior by design
Best For :
Active monitoring and immediate alerts
Learning the system (seeing signals develop in real-time)
Responsive entry if you're watching the chart live
Confirmed (lookforward)
How It Works :
Uses Pine Script's built-in ta.pivothigh() and ta.pivotlow() functions
Requires full pivot validation period (lookback + lookforward bars)
Signal prints pivot_lookforward bars after the actual peak (default 5-bar delay)
Visual marker anchors to the actual peak bar (offset -pivot_lookforward)
No Repainting Behavior
Best For :
Backtesting and historical analysis
Conservative entries requiring full confirmation
Automated trading systems
Swing trading with larger timeframes
Tradeoff :
Delayed entry by pivot_lookforward bars (typically 5 bars)
On a 5-minute chart, this is a 25-minute delay
On a 4-hour chart, this is a 20-hour delay
Recommendation : Use Confirmed for backtesting to verify system performance honestly. Use Realtime for live monitoring only if you're actively watching the chart and understand pre-confirmation repainting behavior.
Signal Spacing System — Anti-Spam Architecture
Even after CAE filtering, raw divergences can cluster. The spacing system enforces separation:
Three Independent Filters
1. Min Bars Between ANY Signals (default 12):
Prevents rapid-fire clustering across both directions
If last signal (bull or bear) was within N bars, block new signal
Ensures breathing room between all setups
2. Min Bars Between SAME-SIDE Signals (default 24, optional enforcement):
Prevents bull-bull or bear-bear spam
Separate tracking for bullish and bearish signal timelines
Toggle enforcement on/off
3. Min ATR Distance From Last Signal (default 0, optional):
Requires price to move N × ATR from last signal location
Ensures meaningful price movement between setups
0 = disabled, 0.5-2.0 = typical range for enabled
All three filters work independently. A signal must pass ALL enabled filters to proceed.
Practical Guidance :
Scalping (1-5m) : Any 6-10, Same-side 12-20, ATR 0-0.5
Day Trading (15m-1H) : Any 12, Same-side 24, ATR 0-1.0
Swing Trading (4H-D) : Any 20-30, Same-side 40-60, ATR 1.0-2.0
Dashboard — Real-Time Control Center
The dashboard (toggleable, four corner positions, three sizes) provides comprehensive system intelligence:
Oscillator Section
Current oscillator type and value
State: OVERBOUGHT / OVERSOLD / NEUTRAL (color-coded)
Length parameter
Cognitive Engine Section
TCS (Trend Conviction Score) :
Current value with emoji state indicator
🔥 = Strong trend (>0.75)
📊 = Moderate trend (0.50-0.75)
〰️ = Weak/choppy (<0.50)
Color: Red if above threshold (trend filter active), yellow if moderate, green if weak
DMA (Directional Momentum Alignment) :
Current value with emoji direction indicator
🐂 = Bullish momentum (>0.5)
⚖️ = Balanced (-0.5 to 0.5)
🐻 = Bearish momentum (<-0.5)
Color: Green if bullish, red if bearish
Exhaustion :
Current value with emoji warning indicator
⚠️ = High exhaustion (>0.75)
🟡 = Moderate (0.50-0.75)
✓ = Low (<0.50)
Color: Red if high, yellow if moderate, green if low
Pullback :
Quality of current distance from EMA20
Values >0.6 are ideal entry zones (not too close, not too far)
Bull Case / Bear Case (if Adversarial enabled):
Current scores for both sides of the market debate
Differential with emoji indicator:
📈 = Bull advantage (>0.2)
➡️ = Balanced (-0.2 to 0.2)
📉 = Bear advantage (<-0.2)
Last Signal Metrics Section (New Feature)
When a signal fires, this section captures and displays:
Signal type (BULL or BEAR)
Bars elapsed since signal
Confidence % at time of signal
TCS value at signal time
DMA value at signal time
Purpose : Provides a historical reference for learning. You can see what the market state looked like when the last signal fired, helping you correlate outcomes with conditions.
Statistics Section
Total Signals : Lifetime count across session
Blocked Signals : Count and percentage (filter effectiveness metric)
Bull Signals : Total bullish divergences
Bear Signals : Total bearish divergences
Purpose : System health monitoring. If blocked % is very high (>60%), filters may be too strict. If very low (<10%), filters may be too loose.
Advisory Annotations
When CAE Mode = Advisory, this section displays warnings for signals that would be blocked in Filtering mode:
Examples:
"Bull spacing: wait 8 bars"
"Bear: strong uptrend (TCS=0.87)"
"Adversarial bearish"
"Low confidence 32%"
Multiple warnings can stack, separated by " | ". This teaches you CAE's decision logic transparently.
How to Use BZ-CAE — Complete Workflow
Phase 1: Initial Setup (First Session)
Apply BZ-CAE to your chart
Select your preferred Visual Theme (Cyberpunk recommended for visibility)
Set Signal Timing to "Confirmed (lookforward)" for learning
Choose your Oscillator Type (RSI recommended for general use, length 14)
Set Overbought/Oversold to 70/30 (standard)
Enable both Regular Divergence and Hidden Divergence
Set Pivot Lookback/Lookforward to 5/5 (balanced structure)
Enable CAE Intelligence
Set CAE Mode to "Advisory" (learning mode)
Enable all three CAE filters: Strong Trend Filter , Adversarial Validation , Confidence Gating
Enable Show Dashboard , position Top Right, size Normal
Enable Draw Bifurcation Zones and Adversarial Bar Coloring
Phase 2: Learning Period (Weeks 1-2)
Goal : Understand how CAE evaluates market state and filters signals.
Activities :
Watch the dashboard during signals :
Note TCS values when counter-trend signals fail — this teaches you the trend strength threshold for your instrument
Observe exhaustion patterns at actual turning points — learn when overextension truly matters
Study adversarial differential at signal times — see when opposing cases dominate
Review blocked signals (orange X-crosses):
In Advisory mode, you see everything — signals that would pass AND signals that would be blocked
Check the advisory annotations to understand why CAE would block
Track outcomes: Were the blocks correct? Did those signals fail?
Use Last Signal Metrics :
After each signal, check the dashboard capture of confidence, TCS, and DMA
Journal these values alongside trade outcomes
Identify patterns: Do confidence >0.70 signals work better? Does your instrument respect TCS >0.85?
Understand your instrument's "personality" :
Trending instruments (indices, major forex) may need TCS threshold 0.85-0.90
Choppy instruments (low-cap stocks, exotic pairs) may work best with TCS 0.70-0.75
High-volatility instruments (crypto) may need wider spacing
Low-volatility instruments may need tighter spacing
Phase 3: Calibration (Weeks 3-4)
Goal : Optimize settings for your specific instrument, timeframe, and style.
Calibration Checklist :
Min Confidence Threshold :
Review confidence distribution in your signal journal
Identify the confidence level below which signals consistently fail
Set min_confidence slightly above that level
Day trading : 0.35-0.45
Swing trading : 0.40-0.55
Scalping : 0.30-0.40
TCS Threshold :
Find the TCS level where counter-trend signals consistently get stopped out
Set tcs_threshold at or slightly below that level
Trending instruments : 0.85-0.90
Mixed instruments : 0.80-0.85
Choppy instruments : 0.75-0.80
Exhaustion Override Level :
Identify exhaustion readings that marked genuine reversals
Set exhaustion_required just below the average
Typical range : 0.45-0.55
Adversarial Threshold :
Default 0.10 works for most instruments
If you find CAE is too conservative (blocking good trades), raise to 0.15-0.20
If signals are still getting caught in opposing momentum, lower to 0.07-0.09
Spacing Parameters :
Count bars between quality signals in your journal
Set min bars ANY to ~60% of that average
Set min bars SAME-SIDE to ~120% of that average
Scalping : Any 6-10, Same 12-20
Day trading : Any 12, Same 24
Swing : Any 20-30, Same 40-60
Oscillator Selection :
Try different oscillators for 1-2 weeks each
Track win rate and average winner/loser by oscillator type
RSI : Best for general use, clear OB/OS
Stochastic : Best for range-bound, mean reversion
MFI : Best for volume-driven markets
CCI : Best for cyclical instruments
Williams %R : Best for reversal detection
Phase 4: Live Deployment
Goal : Disciplined execution with proven, calibrated system.
Settings Changes :
Switch CAE Mode from Advisory to Filtering
System now actively blocks low-quality signals
Only setups passing all gates reach your chart
Keep Signal Timing on Confirmed for conservative entries
OR switch to Realtime if you're actively monitoring and want faster entries (accept pre-confirmation repaint risk)
Use your calibrated thresholds from Phase 3
Enable high-confidence alerts: "⭐ High Confidence Bullish/Bearish" (>0.70)
Trading Discipline Rules :
Respect Blocked Signals :
If CAE blocks a trade you wanted to take, TRUST THE SYSTEM
Don't manually override — if you consistently disagree, return to Phase 2/3 calibration
The block exists because market state failed intelligence checks
Confidence-Based Position Sizing :
Confidence >0.70: Standard or increased size (e.g., 1.5-2.0% risk)
Confidence 0.50-0.70: Standard size (e.g., 1.0% risk)
Confidence 0.35-0.50: Reduced size (e.g., 0.5% risk) or skip if conservative
TCS-Based Management :
High TCS + counter-trend signal: Use tight stops, quick exits (you're fading momentum)
Low TCS + reversal signal: Use wider stops, trail aggressively (genuine reversal potential)
Exhaustion Awareness :
Exhaustion >0.75 (yellow shading): Market is overextended, reversal risk is elevated — consider early exit or tighter trailing stops even on winning trades
Exhaustion <0.30: Continuation bias — hold for larger move, wide trailing stops
Adversarial Context :
Strong differential against you (e.g., bullish signal with bear diff <-0.2): Use very tight stops, consider skipping
Strong differential with you (e.g., bullish signal with bull diff >0.2): Trail aggressively, this is your tailwind
Practical Settings by Timeframe & Style
Scalping (1-5 Minute Charts)
Objective : High frequency, tight stops, quick reversals in fast-moving markets.
Oscillator :
Type: RSI or Stochastic (fast response to quick moves)
Length: 9-11 (more responsive than standard 14)
Smoothing: 1 (no lag)
OB/OS: 65/35 (looser thresholds ensure frequent crossings in fast conditions)
Divergence :
Pivot Lookback/Lookforward: 3/3 (tight structure, catch small swings)
Max Lookback: 40-50 bars (recent structure only)
Min Slope Change: 0.8-1.0 (don't be overly strict)
CAE :
Mode: Advisory first (learn), then Filtering
Min Confidence: 0.30-0.35 (lower bar for speed, accept more signals)
TCS Threshold: 0.70-0.75 (allow more counter-trend opportunities)
Exhaustion Required: 0.45-0.50 (moderate override)
Strong Trend Filter: ON (still respect major intraday trends)
Adversarial: ON (critical for scalping protection — catches bad entries quickly)
Spacing :
Min Bars ANY: 6-10 (fast pace, many setups)
Min Bars SAME-SIDE: 12-20 (prevent clustering)
Min ATR Distance: 0 or 0.5 (loose)
Timing : Realtime (speed over precision, but understand repaint risk)
Visuals :
Signal Size: Tiny (chart clarity in busy conditions)
Show Zones: Optional (can clutter on low timeframes)
Bar Coloring: ON (helps read momentum shifts quickly)
Dashboard: Small size (corner reference, not main focus)
Key Consideration : Scalping generates noise. Even with CAE, expect lower win rate (45-55%) but aim for favorable R:R (2:1 or better). Size conservatively.
Day Trading (15-Minute to 1-Hour Charts)
Objective : Balance quality and frequency. Standard divergence trading approach.
Oscillator :
Type: RSI or MFI (proven reliability, volume confirmation with MFI)
Length: 14 (industry standard, well-studied)
Smoothing: 1-2
OB/OS: 70/30 (classic levels)
Divergence :
Pivot Lookback/Lookforward: 5/5 (balanced structure)
Max Lookback: 60 bars
Min Slope Change: 1.0 (standard strictness)
CAE :
Mode: Filtering (enforce discipline from the start after brief Advisory learning)
Min Confidence: 0.35-0.45 (quality filter without being too restrictive)
TCS Threshold: 0.80-0.85 (respect strong trends)
Exhaustion Required: 0.50 (balanced override threshold)
Strong Trend Filter: ON
Adversarial: ON
Confidence Gating: ON (all three filters active)
Spacing :
Min Bars ANY: 12 (breathing room between all setups)
Min Bars SAME-SIDE: 24 (prevent bull/bear clusters)
Min ATR Distance: 0-1.0 (optional refinement, typically 0.5-1.0)
Timing : Confirmed (1-bar delay for reliability, no repainting)
Visuals :
Signal Size: Tiny or Small
Show Zones: ON (useful reference for exits/re-entries)
Bar Coloring: ON (context awareness)
Dashboard: Normal size (full visibility)
Key Consideration : This is the "sweet spot" timeframe for BZ-CAE. Market structure is clear, CAE has sufficient data, and signal frequency is manageable. Expect 55-65% win rate with proper execution.
Swing Trading (4-Hour to Daily Charts)
Objective : Quality over quantity. High conviction only. Larger stops and targets.
Oscillator :
Type: RSI or CCI (robust on higher timeframes, smooth longer waves)
Length: 14-21 (capture larger momentum swings)
Smoothing: 1-3
OB/OS: 70/30 or 75/25 (strict extremes)
Divergence :
Pivot Lookback/Lookforward: 5/5 or 7/7 (structural purity, major swings only)
Max Lookback: 80-100 bars (broader historical context)
Min Slope Change: 1.2-1.5 (require strong, undeniable divergence)
CAE :
Mode: Filtering (strict enforcement, premium setups only)
Min Confidence: 0.40-0.55 (high bar for entry)
TCS Threshold: 0.85-0.95 (very strong trend protection — don't fade established HTF trends)
Exhaustion Required: 0.50-0.60 (higher bar for override — only extreme exhaustion justifies counter-trend)
Strong Trend Filter: ON (critical on HTF)
Adversarial: ON (avoid obvious bad trades)
Confidence Gating: ON (quality gate essential)
Spacing :
Min Bars ANY: 20-30 (substantial separation)
Min Bars SAME-SIDE: 40-60 (significant breathing room)
Min ATR Distance: 1.0-2.0 (require meaningful price movement)
Timing : Confirmed (purity over speed, zero repaint for swing accuracy)
Visuals :
Signal Size: Small or Normal (clear markers on zoomed-out view)
Show Zones: ON (important HTF levels)
Bar Coloring: ON (long-term trend awareness)
Dashboard: Normal or Large (comprehensive analysis)
Key Consideration : Swing signals are rare but powerful. Expect 2-5 signals per month per instrument. Win rate should be 60-70%+ due to stringent filtering. Position size can be larger given confidence.
Dashboard Interpretation Reference
TCS (Trend Conviction Score) States
0.00-0.50: Weak/Choppy
Emoji: 〰️
Color: Green/cyan
Meaning: No established trend. Range-bound or consolidating. Both reversal and continuation signals viable.
Action: Reversals (regular divs) are safer. Use wider profit targets (market has room to move). Consider mean reversion strategies.
0.50-0.75: Moderate Trend
Emoji: 📊
Color: Yellow/neutral
Meaning: Developing trend but not locked in. Context matters significantly.
Action: Check DMA and exhaustion. If DMA confirms trend and exhaustion is low, favor continuation (hidden divs). If exhaustion is high, reversals are viable.
0.75-0.85: Strong Trend
Emoji: 🔥
Color: Orange/warning
Meaning: Well-established trend with persistence. Counter-trend is high risk.
Action: Require exhaustion >0.50 for counter-trend entries. Favor continuation signals. Use tight stops on counter-trend attempts.
0.85-1.00: Very Strong Trend
Emoji: 🔥🔥
Color: Red/danger (if counter-trading)
Meaning: Locked-in institutional trend. Extremely high risk to fade.
Action: Avoid counter-trend unless exhaustion >0.75 (yellow shading). Focus exclusively on continuation opportunities. Momentum is king here.
DMA (Directional Momentum Alignment) Zones
-2.0 to -1.0: Strong Bearish Momentum
Emoji: 🐻🐻
Color: Dark red
Meaning: Powerful downside force. Sellers are in control.
Action: Bullish divergences are counter-momentum (high risk). Bearish divergences are with-momentum (lower risk). Size down on longs.
-0.5 to 0.5: Neutral/Balanced
Emoji: ⚖️
Color: Gray/neutral
Meaning: No strong directional bias. Choppy or consolidating.
Action: Both directions have similar probability. Focus on confidence score and adversarial differential for edge.
1.0 to 2.0: Strong Bullish Momentum
Emoji: 🐂🐂
Color: Bright green/cyan
Meaning: Powerful upside force. Buyers are in control.
Action: Bearish divergences are counter-momentum (high risk). Bullish divergences are with-momentum (lower risk). Size down on shorts.
Exhaustion States
0.00-0.50: Fresh Move
Emoji: ✓
Color: Green
Meaning: Trend is healthy, not overextended. Room to run.
Action: Counter-trend trades are premature. Favor continuation. Hold winners for larger moves. Avoid early exits.
0.50-0.75: Mature Move
Emoji: 🟡
Color: Yellow
Meaning: Move is aging. Watch for signs of climax.
Action: Tighten trailing stops on winning trades. Be ready for reversals. Don't add to positions aggressively.
0.75-0.85: High Exhaustion
Emoji: ⚠️
Color: Orange
Background: Yellow shading appears
Meaning: Move is overextended. Reversal risk elevated significantly.
Action: Counter-trend reversals are higher probability. Consider early exits on with-trend positions. Size up on reversal divergences (if CAE allows).
0.85-1.00: Critical Exhaustion
Emoji: ⚠️⚠️
Color: Red
Background: Yellow shading intensifies
Meaning: Climax conditions. Reversal imminent or underway.
Action: Aggressive reversal trades justified. Exit all with-trend positions. This is where major turns occur.
Confidence Score Tiers
0.00-0.30: Low Quality
Color: Red
Status: Blocked in Filtering mode
Action: Skip entirely. Setup lacks fundamental quality across multiple factors.
0.30-0.50: Moderate Quality
Color: Yellow/orange
Status: Marginal — passes in Filtering only if >min_confidence
Action: Reduced position size (0.5-0.75% risk). Tight stops. Conservative profit targets. Skip if you're selective.
0.50-0.70: High Quality
Color: Green/cyan
Status: Good setup across most quality factors
Action: Standard position size (1.0-1.5% risk). Normal stops and targets. This is your bread-and-butter trade.
0.70-1.00: Premium Quality
Color: Bright green/gold
Status: Exceptional setup — all factors aligned
Visual: Double confidence ring appears
Action: Consider increased position size (1.5-2.0% risk, maximum). Wider stops. Larger targets. High probability of success. These are rare — capitalize when they appear.
Adversarial Differential Interpretation
Bull Differential > 0.3 :
Visual: Strong cyan/green bar colors
Meaning: Bull case strongly dominates. Buyers have clear advantage.
Action: Bullish divergences favored (with-advantage). Bearish divergences face headwind (reduce size or skip). Momentum is bullish.
Bull Differential 0.1 to 0.3 :
Visual: Moderate cyan/green transparency
Meaning: Moderate bull advantage. Buyers have edge but not overwhelming.
Action: Both directions viable. Slight bias toward longs.
Differential -0.1 to 0.1 :
Visual: Gray/neutral bars
Meaning: Balanced debate. No clear advantage either side.
Action: Rely on other factors (confidence, TCS, exhaustion) for direction. Adversarial is neutral.
Bear Differential -0.3 to -0.1 :
Visual: Moderate red/magenta transparency
Meaning: Moderate bear advantage. Sellers have edge but not overwhelming.
Action: Both directions viable. Slight bias toward shorts.
Bear Differential < -0.3 :
Visual: Strong red/magenta bar colors
Meaning: Bear case strongly dominates. Sellers have clear advantage.
Action: Bearish divergences favored (with-advantage). Bullish divergences face headwind (reduce size or skip). Momentum is bearish.
Last Signal Metrics — Post-Trade Analysis
After a signal fires, dashboard captures:
Type : BULL or BEAR
Bars Ago : How long since signal (updates every bar)
Confidence : What was the quality score at signal time
TCS : What was trend conviction at signal time
DMA : What was momentum alignment at signal time
Use Case : Post-trade journaling and learning.
Example: "BULL signal 12 bars ago. Confidence: 68%, TCS: 0.42, DMA: -0.85"
Analysis : This was a bullish reversal (regular div) with good confidence, weak trend (TCS), but strong bearish momentum (DMA). The bet was that momentum would reverse — a counter-momentum play requiring exhaustion confirmation. Check if exhaustion was high at that time to justify the entry.
Track patterns:
Do your best trades have confidence >0.65?
Do low-TCS signals (<0.50) work better for you?
Are you more successful with-momentum (DMA aligned with signal) or counter-momentum?
Troubleshooting Guide
Problem: No Signals Appearing
Symptoms : Chart loads, dashboard shows metrics, but no divergence signals fire.
Diagnosis Checklist :
Check dashboard oscillator value : Is it crossing OB/OS levels (70/30)? If oscillator stays in 40-60 range constantly, it can't reach extremes needed for divergence detection.
Are pivots forming? : Look for local swing highs/lows on your chart. If price is in tight consolidation, pivots may not meet lookback/lookforward requirements.
Is spacing too tight? : Check "Last Signal" metrics — how many bars since last signal? If <12 and your min_bars_ANY is 12, spacing filter is blocking.
Is CAE blocking everything? : Check dashboard Statistics section — what's the blocked signal count? High blocks indicate overly strict filters.
Solutions :
Loosen OB/OS Temporarily :
Try 65/35 to verify divergence detection works
If signals appear, the issue was threshold strictness
Gradually tighten back to 67/33, then 70/30 as appropriate
Lower Min Confidence :
Try 0.25-0.30 (diagnostic level)
If signals appear, filter was too strict
Raise gradually to find sweet spot (0.35-0.45 typical)
Disable Strong Trend Filter Temporarily :
Turn off in CAE settings
If signals appear, TCS threshold was blocking everything
Re-enable and lower TCS_threshold to 0.70-0.75
Reduce Min Slope Change :
Try 0.7-0.8 (from default 1.0)
Allows weaker divergences through
Helpful on low-volatility instruments
Widen Spacing :
Set min_bars_ANY to 6-8
Set min_bars_SAME_SIDE to 12-16
Reduces time between allowed signals
Check Timing Mode :
If using Confirmed, remember there's a pivot_lookforward delay (5+ bars)
Switch to Realtime temporarily to verify system is working
Realtime has no delay but repaints
Verify Oscillator Settings :
Length 14 is standard but might not fit all instruments
Try length 9-11 for faster response
Try length 18-21 for slower, smoother response
Problem: Too Many Signals (Signal Spam)
Symptoms : Dashboard shows 50+ signals in Statistics, confidence scores mostly <0.40, signals clustering close together.
Solutions :
Raise Min Confidence :
Try 0.40-0.50 (quality filter)
Blocks bottom-tier setups
Targets top 50-60% of divergences only
Tighten OB/OS :
Use 70/30 or 75/25
Requires more extreme oscillator readings
Reduces false divergences in mid-range
Increase Min Slope Change :
Try 1.2-1.5 (from default 1.0)
Requires stronger, more obvious divergences
Filters marginal slope disagreements
Raise TCS Threshold :
Try 0.85-0.90 (from default 0.80)
Stricter trend filter blocks more counter-trend attempts
Favors only strongest trend alignment
Enable ALL CAE Gates :
Turn on Trend Filter + Adversarial + Confidence
Triple-layer protection
Blocks aggressively — expect 20-40% reduction in signals
Widen Spacing :
min_bars_ANY: 15-20 (from 12)
min_bars_SAME_SIDE: 30-40 (from 24)
Creates substantial breathing room
Switch to Confirmed Timing :
Removes realtime preview noise
Ensures full pivot validation
5-bar delay filters many false starts
Problem: Signals in Strong Trends Get Stopped Out
Symptoms : You take a bullish divergence in a downtrend (or bearish in uptrend), and it immediately fails. Dashboard showed high TCS at the time.
Analysis : This is INTENDED behavior — CAE is protecting you from low-probability counter-trend trades.
Understanding :
Check Last Signal Metrics in dashboard — what was TCS when signal fired?
If TCS was >0.85 and signal was counter-trend, CAE correctly identified it as high risk
Strong trends rarely reverse cleanly without major exhaustion
Your losses here are the system working as designed (blocking bad odds)
If You Want to Override (Not Recommended) :
Lower TCS_threshold to 0.70-0.75 (allows more counter-trend)
Lower exhaustion_required to 0.40 (easier override)
Disable Strong Trend Filter entirely (very risky)
Better Approach :
TRUST THE FILTER — it's preventing costly mistakes
Wait for exhaustion >0.75 (yellow shading) before counter-trending strong TCS
Focus on continuation signals (hidden divs) in high-TCS environments
Use Advisory mode to see what CAE is blocking and learn from outcomes
Problem: Adversarial Blocking Seems Wrong
Symptoms : You see a divergence that "looks good" visually, but CAE blocks with "Adversarial bearish/bullish" warning.
Diagnosis :
Check dashboard Bull Case and Bear Case scores at that moment
Look at Differential value
Check adversarial bar colors — was there strong coloring against your intended direction?
Understanding :
Adversarial catches "obvious" opposing momentum that's easy to miss
Example: Bullish divergence at a local low, BUT price is deeply below EMA50, bearish momentum is strong, and RSI shows knife-catching conditions
Bull Case might be 0.20 while Bear Case is 0.55
Differential = -0.35, far beyond threshold
Block is CORRECT — you'd be fighting overwhelming opposing flow
If You Disagree Consistently
Review blocked signals on chart — scroll back and check outcomes
Did those blocked signals actually work, or did they fail as adversarial predicted?
Raise adv_threshold to 0.15-0.20 (more permissive, allows closer battles)
Disable Adversarial Validation temporarily (diagnostic) to isolate its effect
Use Advisory mode to learn adversarial patterns over 50-100 signals
Remember : Adversarial is conservative BY DESIGN. It prevents "obvious" bad trades where you're fighting strong strength the other way.
Problem: Dashboard Not Showing or Incomplete
Solutions :
Toggle "Show Dashboard" to ON in settings
Try different dashboard sizes (Small/Normal/Large)
Try different positions (Top Left/Right, Bottom Left/Right) — might be off-screen
Some sections require CAE Enable = ON (Cognitive Engine section won't appear if CAE is disabled)
Statistics section requires at least 1 lifetime signal to populate
Check that visual theme is set (dashboard colors adapt to theme)
Problem: Performance Lag, Chart Freezing
Symptoms : Chart loading is slow, indicator calculations cause delays, pinch-to-zoom lags.
Diagnosis : Visual features are computationally expensive, especially adversarial bar coloring (recalculates every bar).
Solutions (In Order of Impact) :
Disable Adversarial Bar Coloring (MOST EXPENSIVE):
Turn OFF "Adversarial Bar Coloring" in settings
This is the single biggest performance drain
Immediate improvement
Reduce Vertical Lines :
Lower "Keep last N vertical lines" to 20-30
Or set to 0 to disable entirely
Moderate improvement
Disable Bifurcation Zones :
Turn OFF "Draw Bifurcation Zones"
Reduces box drawing calculations
Moderate improvement
Set Dashboard Size to Small :
Smaller dashboard = fewer cells = less rendering
Minor improvement
Use Shorter Max Lookback :
Reduce max_lookback to 40-50 (from 60+)
Fewer bars to scan for divergences
Minor improvement
Disable Exhaustion Shading :
Turn OFF "Show Market State"
Removes background coloring calculations
Minor improvement
Extreme Performance Mode :
Disable ALL visual enhancements
Keep only triangle markers
Dashboard Small or OFF
Use Minimal theme if available
Problem: Realtime Signals Repainting
Symptoms : You see a signal appear, but on next bar it disappears or moves.
Explanation :
Realtime mode detects peaks 1 bar ago: high > high AND high > high
On the FORMING bar (before close), this condition can change as new prices arrive
Example: At 10:05, high (10:04 bar) was 100, current high is 99 → peak detected
At 10:05:30, new high of 101 arrives → peak condition breaks → signal disappears
At 10:06 (bar close), final high is 101 → no peak at 10:04 anymore → signal gone permanently
This is expected behavior for realtime responsiveness. You get preview/early warning, but it's not locked until bar confirms.
Solutions :
Use Confirmed Timing :
Switch to "Confirmed (lookforward)" mode
ZERO repainting — pivot must be fully validated
5-bar delay (pivot_lookforward)
What you see in history is exactly what would have appeared live
Accept Realtime Repaint as Tradeoff :
Keep Realtime mode for speed and alerts
Understand that pre-confirmation signals may vanish
Only trade signals that CONFIRM at bar close (check barstate.isconfirmed)
Use for live monitoring, NOT for backtesting
Trade Only After Confirmation :
In Realtime mode, wait 1 full bar after signal appears before entering
If signal survives that bar close, it's locked
This adds 1-bar delay but removes repaint risk
Recommendation : Use Confirmed for backtesting and conservative trading. Use Realtime only for active monitoring with full understanding of preview behavior.
Risk Management Integration
BZ-CAE is a signal generation system, not a complete trading strategy. You must integrate proper risk management:
Position Sizing by Confidence
Confidence 0.70-1.00 (Premium) :
Risk: 1.5-2.0% of account (MAXIMUM)
Reasoning: High-quality setup across all factors
Still cap at 2% — even premium setups can fail
Confidence 0.50-0.70 (High Quality) :
Risk: 1.0-1.5% of account
Reasoning: Standard good setup
Your bread-and-butter risk level
Confidence 0.35-0.50 (Moderate Quality) :
Risk: 0.5-1.0% of account
Reasoning: Marginal setup, passes minimum threshold
Reduce size or skip if you're selective
Confidence <0.35 (Low Quality) :
Risk: 0% (blocked in Filtering mode)
Reasoning: Insufficient quality factors
System protects you by not showing these
Stop Placement Strategies
For Reversal Signals (Regular Divergences) :
Place stop beyond the divergence pivot plus buffer
Bullish : Stop below the divergence low - 1.0-1.5 × ATR
Bearish : Stop above the divergence high + 1.0-1.5 × ATR
Reasoning: If price breaks the pivot, divergence structure is invalidated
For Continuation Signals (Hidden Divergences) :
Place stop beyond recent swing in opposite direction
Bullish continuation : Stop below recent swing low (not the divergence pivot itself)
Bearish continuation : Stop above recent swing high
Reasoning: You're trading with trend, allow more breathing room
ATR-Based Stops :
1.5-2.0 × ATR is standard
Scale by timeframe:
Scalping (1-5m): 1.0-1.5 × ATR (tight)
Day trading (15m-1H): 1.5-2.0 × ATR (balanced)
Swing (4H-D): 2.0-3.0 × ATR (wide)
Never Use Fixed Dollar/Pip Stops :
Markets have different volatility
50-pip stop on EUR/USD ≠ 50-pip stop on GBP/JPY
Always normalize by ATR or pivot structure
Profit Targets and Scaling
Primary Target :
2-3 × ATR from entry (minimum 2:1 reward-risk)
Example : Entry at 100, ATR = 2, stop at 97 (1.5 × ATR) → target at 106 (3 × ATR) = 2:1 R:R
Scaling Out Strategy :
Take 50% off at 1.5 × ATR (secure partial profit)
Move stop to breakeven
Trail remaining 50% with 1.0 × ATR trailing stop
Let winners run if trend persists
Targets by Confidence :
High Confidence (>0.70) : Aggressive targets (3-4 × ATR), trail wider (1.5 × ATR)
Standard Confidence (0.50-0.70) : Normal targets (2-3 × ATR), standard trail (1.0 × ATR)
Low Confidence (0.35-0.50) : Conservative targets (1.5-2 × ATR), tight trail (0.75 × ATR)
Use Bifurcation Zones :
If opposite-side zone is visible on chart (from previous signal), use it as target
Example : Bullish signal at 100, prior supply zone at 110 → use 110 as target
Zones mark institutional resistance/support
Exhaustion-Based Exits :
If you're in a trade and exhaustion >0.75 develops (yellow shading), consider early exit
Market is overextended — reversal risk is high
Take profit even if target not reached
Trade Management by TCS
High TCS + Counter-Trend Trade (Risky) :
Use very tight stops (1.0-1.5 × ATR)
Conservative targets (1.5-2 × ATR)
Quick exit if trade doesn't work immediately
You're fading momentum — respect it
Low TCS + Reversal Trade (Safer) :
Use wider stops (2.0-2.5 × ATR)
Aggressive targets (3-4 × ATR)
Trail with patience
Genuine reversal potential in weak trend
High TCS + Continuation Trade (Safest) :
Standard stops (1.5-2.0 × ATR)
Very aggressive targets (4-5 × ATR)
Trail wide (1.5-2.0 × ATR)
You're with institutional momentum — let it run
Educational Value — Learning Machine Intelligence
BZ-CAE is designed as a learning platform, not just a tool:
Advisory Mode as Teacher
Most indicators are binary: signal or no signal. You don't learn WHY certain setups are better.
BZ-CAE's Advisory mode shows you EVERY potential divergence, then annotates the ones that would be blocked in Filtering mode with specific reasons:
"Bull: strong downtrend (TCS=0.87)" teaches you that TCS >0.85 makes counter-trend very risky
"Adversarial bearish" teaches you that the opposing case was dominating
"Low confidence 32%" teaches you that the setup lacked quality across multiple factors
"Bull spacing: wait 8 bars" teaches you that signals need breathing room
After 50-100 signals in Advisory mode, you internalize the CAE's decision logic. You start seeing these factors yourself BEFORE the indicator does.
Dashboard Transparency
Most "intelligent" indicators are black boxes — you don't know how they make decisions.
BZ-CAE shows you ALL metrics in real-time:
TCS tells you trend strength
DMA tells you momentum alignment
Exhaustion tells you overextension
Adversarial shows both sides of the debate
Confidence shows composite quality
You learn to interpret market state holistically, a skill applicable to ANY trading system beyond this indicator.
Divergence Quality Education
Not all divergences are equal. BZ-CAE teaches you which conditions produce high-probability setups:
Quality divergence : Regular bullish div at a low, TCS <0.50 (weak trend), exhaustion >0.75 (overextended), positive adversarial differential, confidence >0.70
Low-quality divergence : Regular bearish div at a high, TCS >0.85 (strong uptrend), exhaustion <0.30 (not overextended), negative adversarial differential, confidence <0.40
After using the system, you can evaluate divergences manually with similar intelligence.
Risk Management Discipline
Confidence-based position sizing teaches you to adjust risk based on setup quality, not emotions:
Beginners often size all trades identically
Or worse, size UP on marginal setups to "make up" for losses
BZ-CAE forces systematic sizing: premium setups get larger size, marginal setups get smaller size
This creates a probabilistic approach where your edge compounds over time.
What This Indicator Is NOT
Complete transparency about limitations and positioning:
Not a Prediction System
BZ-CAE does not predict future prices. It identifies structural divergences (price-momentum disagreements) and assesses current market state (trend, exhaustion, adversarial conditions). It tells you WHEN conditions favor a potential reversal or continuation, not WHAT WILL HAPPEN.
Markets are probabilistic. Even premium-confidence setups fail ~30-40% of the time. The system improves your probability distribution over many trades — it doesn't eliminate risk.
Not Fully Automated
This is a decision support tool, not a trading robot. You must:
Execute trades manually based on signals
Manage positions (stops, targets, trailing)
Apply discretionary judgment (news events, liquidity, context)
Integrate with your broader strategy and risk rules
The confidence scores guide position sizing, but YOU determine final risk allocation based on your account size, risk tolerance, and portfolio context.
Not Beginner-Friendly
BZ-CAE requires understanding of:
Divergence trading concepts (regular vs hidden, reversal vs continuation)
Market state interpretation (trend vs range, momentum, exhaustion)
Basic technical analysis (pivots, support/resistance, EMAs)
Risk management fundamentals (position sizing, stops, R:R)
This is designed for intermediate to advanced traders willing to invest time learning the system. If you want "buy the arrow" simplicity, this isn't the tool.
Not a Holy Grail
There is no perfect indicator. BZ-CAE filters noise and improves signal quality significantly, but:
Losing trades are inevitable (even at 70% win rate, 30% still fail)
Market conditions change rapidly (yesterday's strong trend becomes today's chop)
Black swan events occur (fundamentals override technicals)
Execution matters (slippage, fees, emotional discipline)
The system provides an EDGE, not a guarantee. Your job is to execute that edge consistently with proper risk management over hundreds of trades.
Not Financial Advice
BZ-CAE is an educational and analytical tool. All trading decisions are your responsibility. Past performance (backtested or live) does not guarantee future results. Only risk capital you can afford to lose. Consult a licensed financial advisor for investment advice specific to your situation.
Ideal Market Conditions
Best Performance Characteristics
Liquid Instruments :
Major forex pairs (EUR/USD, GBP/USD, USD/JPY)
Large-cap stocks and index ETFs (SPY, QQQ, AAPL, MSFT)
High-volume crypto (BTC, ETH)
Major commodities (Gold, Oil, Natural Gas)
Reasoning: Clean price structure, clear pivots, meaningful oscillator behavior
Trending with Consolidations :
Markets that trend for 20-40 bars, then consolidate 10-20 bars, repeat
Creates divergences at consolidation boundaries (reversals) and within trends (continuations)
Both regular and hidden divs find opportunities
5-Minute to Daily Timeframes :
Below 5m: too much noise, false pivots, CAE metrics unstable
Above daily: too few signals, edge diminishes (fundamentals dominate)
Sweet spot: 15m to 4H for most traders
Consistent Volume and Participation :
Regular trading sessions (not holidays or thin markets)
Predictable volatility patterns
Avoid instruments with sudden gaps or circuit breakers
Challenging Conditions
Extremely Low Liquidity :
Penny stocks, exotic forex pairs, low-volume crypto
Erratic pivots, unreliable oscillator readings
CAE metrics can't assess market state properly
Very Low Timeframes (1-Minute or Below) :
Dominated by market microstructure noise
Divergences are everywhere but meaningless
CAE filtering helps but still unreliable
Extended Sideways Consolidation :
100+ bars of tight range with no clear pivots
Oscillator hugs midpoint (45-55 range)
No divergences to detect
Fundamentally-Driven Gap Markets :
Earnings releases, economic data, geopolitical events
Price gaps over stops and targets
Technical structure breaks down
Recommendation: Disable trading around known events
Calculation Methodology — Technical Depth
For users who want to understand the math:
Oscillator Computation
Each oscillator type calculates differently, but all normalize to 0-100:
RSI : ta.rsi(close, length) — Standard Relative Strength Index
Stochastic : ta.stoch(high, low, close, length) — %K calculation
CCI : (ta.cci(hlc3, length) + 100) / 2 — Normalized from -100/+100 to 0-100
MFI : ta.mfi(hlc3, length) — Volume-weighted RSI equivalent
Williams %R : ta.wpr(length) + 100 — Inverted stochastic adjusted to 0-100
Smoothing: If smoothing > 1, apply ta.sma(oscillator, smoothing)
Divergence Detection Algorithm
Identify Pivots :
Price high pivot: ta.pivothigh(high, lookback, lookforward)
Price low pivot: ta.pivotlow(low, lookback, lookforward)
Oscillator high pivot: ta.pivothigh(osc, lookback, lookforward)
Oscillator low pivot: ta.pivotlow(osc, lookback, lookforward)
Store Recent Pivots :
Maintain arrays of last 10 pivots with bar indices
When new pivot confirmed, unshift to array, pop oldest if >10
Scan for Slope Disagreements :
Loop through last 5 pivots
For each pair (current pivot, historical pivot):
Check if within max_lookback bars
Calculate slopes: (current - historical) / bars_between
Regular bearish: price_slope > 0, osc_slope < 0, |osc_slope| > min_threshold
Regular bullish: price_slope < 0, osc_slope > 0, |osc_slope| > min_threshold
Hidden bearish: price_slope < 0, osc_slope > 0, osc_slope > min_threshold
Hidden bullish: price_slope > 0, osc_slope < 0, |osc_slope| > min_threshold
Important Disclaimers and Terms
Performance Disclosure
Past performance, whether backtested or live-traded, does not guarantee future results. Markets change. What works today may not work tomorrow. Hypothetical or simulated performance results have inherent limitations and do not represent actual trading.
Risk of Loss
Trading involves substantial risk of loss. Only trade with risk capital you can afford to lose entirely. The high degree of leverage often available in trading can work against you as well as for you. Leveraged trading may result in losses exceeding your initial deposit.
Not Financial Advice
BZ-CAE is an educational and analytical tool for technical analysis. It is not financial advice, investment advice, or a recommendation to buy or sell any security or instrument. All trading decisions are your sole responsibility. Consult a licensed financial advisor for advice specific to your circumstances.
Technical Indicator Limitations
BZ-CAE is a technical analysis tool based on price and volume data. It does not account for:
Fundamental analysis (earnings, economic data, financial health)
Market sentiment and positioning
Geopolitical events and news
Liquidity conditions and market microstructure changes
Regulatory changes or exchange rules
Integrate with broader analysis and strategy. Do not rely solely on technical indicators for trading decisions.
Repainting Acknowledgment
As disclosed throughout this documentation:
Realtime mode may repaint on forming bars before confirmation (by design for preview functionality)
Confirmed mode has zero repainting (fully validated pivots only)
Choose timing mode appropriate for your use case. Understand the tradeoffs.
Testing Recommendation
ALWAYS test on demo/paper accounts before committing real capital. Validate the indicator's behavior on your specific instruments and timeframes. Learn the system thoroughly in Advisory mode before using Filtering mode.
Learning Resources :
In-indicator tooltips (hover over setting names for detailed explanations)
This comprehensive publishing statement (save for reference)
User guide in script comments (top of code)
Final Word — Philosophy of BZ-CAE
BZ-CAE is not designed to replace your judgment — it's designed to enhance it.
The indicator identifies structural inflection points (bifurcations) where price and momentum disagree. The Cognitive Engine evaluates market state to determine if this disagreement is meaningful or noise. The Adversarial model debates both sides of the trade to catch obvious bad setups. The Confidence system ranks quality so you can choose your risk appetite.
But YOU still execute. YOU still manage risk. YOU still learn from outcomes.
This is intelligence amplification, not intelligence replacement.
Use Advisory mode to learn how expert traders evaluate market state. Use Filtering mode to enforce discipline when emotions run high. Use the dashboard to develop a systematic approach to reading markets. Use confidence scores to size positions probabilistically.
The system provides an edge. Your job is to execute that edge with discipline, patience, and proper risk management over hundreds of trades.
Markets are probabilistic. No system wins every trade. But a systematic edge + disciplined execution + proper risk management compounds over time. That's the path to consistent profitability. BZ-CAE gives you the edge. The discipline and risk management are on you.
Taking you to school. — Dskyz, Trade with insight. Trade with anticipation.
RSI Overbought/Oversold + Divergence Indicator (new)//@version=5
indicator('CryptoSignalScanner - RSI Overbought/Oversold + Divergence Indicator (new)',
//---------------------------------------------------------------------------------------------------------------------------------
//--- Define Colors ---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
vWhite = #FFFFFF
vViolet = #C77DF3
vIndigo = #8A2BE2
vBlue = #009CDF
vGreen = #5EBD3E
vYellow = #FFB900
vRed = #E23838
longColor = color.green
shortColor = color.red
textColor = color.white
bullishColor = color.rgb(38,166,154,0) //Used in the display table
bearishColor = color.rgb(239,83,79,0) //Used in the display table
nomatchColor = color.silver //Used in the display table
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Functions--------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
TF2txt(TF) =>
switch TF
"S" => "RSI 1s:"
"5S" => "RSI 5s:"
"10S" => "RSI 10s:"
"15S" => "RSI 15s:"
"30S" => "RSI 30s"
"1" => "RSI 1m:"
"3" => "RSI 3m:"
"5" => "RSI 5m:"
"15" => "RSI 15m:"
"30" => "RSI 30m"
"45" => "RSI 45m"
"60" => "RSI 1h:"
"120" => "RSI 2h:"
"180" => "RSI 3h:"
"240" => "RSI 4h:"
"480" => "RSI 8h:"
"D" => "RSI 1D:"
"1D" => "RSI 1D:"
"2D" => "RSI 2D:"
"3D" => "RSI 2D:"
"3D" => "RSI 3W:"
"W" => "RSI 1W:"
"1W" => "RSI 1W:"
"M" => "RSI 1M:"
"1M" => "RSI 1M:"
"3M" => "RSI 3M:"
"6M" => "RSI 6M:"
"12M" => "RSI 12M:"
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Show/Hide Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowInput = input(true, title='Show RSI', group='Show/Hide Settings')
maShowInput = input(false, title='Show MA', group='Show/Hide Settings')
showRSIMAInput = input(true, title='Show RSIMA Cloud', group='Show/Hide Settings')
rsiBandShowInput = input(true, title='Show Oversold/Overbought Lines', group='Show/Hide Settings')
rsiBandExtShowInput = input(true, title='Show Oversold/Overbought Extended Lines', group='Show/Hide Settings')
rsiHighlightShowInput = input(true, title='Show Oversold/Overbought Highlight Lines', group='Show/Hide Settings')
DivergenceShowInput = input(true, title='Show RSI Divergence Labels', group='Show/Hide Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Table Settings --------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowTable = input(true, title='Show RSI Table Information box', group="RSI Table Settings")
rsiTablePosition = input.string(title='Location', defval='middle_right', options= , group="RSI Table Settings", inline='1')
rsiTextSize = input.string(title=' Size', defval='small', options= , group="RSI Table Settings", inline='1')
rsiShowTF1 = input(true, title='Show TimeFrame1', group="RSI Table Settings", inline='tf1')
rsiTF1 = input.timeframe("15", title=" Time", group="RSI Table Settings", inline='tf1')
rsiShowTF2 = input(true, title='Show TimeFrame2', group="RSI Table Settings", inline='tf2')
rsiTF2 = input.timeframe("60", title=" Time", group="RSI Table Settings", inline='tf2')
rsiShowTF3 = input(true, title='Show TimeFrame3', group="RSI Table Settings", inline='tf3')
rsiTF3 = input.timeframe("240", title=" Time", group="RSI Table Settings", inline='tf3')
rsiShowTF4 = input(true, title='Show TimeFrame4', group="RSI Table Settings", inline='tf4')
rsiTF4 = input.timeframe("D", title=" Time", group="RSI Table Settings", inline='tf4')
rsiShowHist = input(true, title='Show RSI Historical Columns', group="RSI Table Settings", tooltip='Show the information of the 2 previous closed candles')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Input Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiSourceInput = input.source(close, 'Source', group='RSI Settings')
rsiLengthInput = input.int(14, minval=1, title='RSI Length', group='RSI Settings', tooltip='Here we set the RSI lenght')
rsiColorInput = input.color(#26a69a, title="RSI Color", group='RSI Settings')
rsimaColorInput = input.color(#ef534f, title="RSIMA Color", group='RSI Settings')
rsiBandColorInput = input.color(#787B86, title="RSI Band Color", group='RSI Settings')
rsiUpperBandExtInput = input.int(title='RSI Overbought Extended Line', defval=80, minval=50, maxval=100, group='RSI Settings')
rsiUpperBandInput = input.int(title='RSI Overbought Line', defval=70, minval=50, maxval=100, group='RSI Settings')
rsiLowerBandInput = input.int(title='RSI Oversold Line', defval=30, minval=0, maxval=50, group='RSI Settings')
rsiLowerBandExtInput = input.int(title='RSI Oversold Extended Line', defval=20, minval=0, maxval=50, group='RSI Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Input Settings -----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
maTypeInput = input.string("EMA", title="MA Type", options= , group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
maColorInput = input.color(color.yellow, title="MA Color", group='MA Settings') //#7E57C2
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Input Settings ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
lbrInput = input(title="Pivot Lookback Right", defval=2, group='RSI Divergence Settings')
lblInput = input(title="Pivot Lookback Left", defval=2, group='RSI Divergence Settings')
lbRangeMaxInput = input(title="Max of Lookback Range", defval=10, group='RSI Divergence Settings')
lbRangeMinInput = input(title="Min of Lookback Range", defval=2, group='RSI Divergence Settings')
plotBullInput = input(title="Plot Bullish", defval=true, group='RSI Divergence Settings')
plotHiddenBullInput = input(title="Plot Hidden Bullish", defval=true, group='RSI Divergence Settings')
plotBearInput = input(title="Plot Bearish", defval=true, group='RSI Divergence Settings')
plotHiddenBearInput = input(title="Plot Hidden Bearish", defval=true, group='RSI Divergence Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
rsiprevious = rsi
= request.security(syminfo.tickerid, rsiTF1, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF2, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF3, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF4, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiMA = ma(rsi, maLengthInput, maTypeInput)
rsiMAPrevious = rsiMA
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Stoch RSI Settings + Calculation --------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
showStochRSI = input(false, title="Show Stochastic RSI", group='Stochastic RSI Settings')
smoothK = input.int(title="Stochastic K", defval=3, minval=1, maxval=10, group='Stochastic RSI Settings')
smoothD = input.int(title="Stochastic D", defval=4, minval=1, maxval=10, group='Stochastic RSI Settings')
lengthRSI = input.int(title="Stochastic RSI Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
lengthStoch = input.int(title="Stochastic Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
colorK = input.color(color.rgb(41,98,255,0), title="K Color", group='Stochastic RSI Settings', inline="1")
colorD = input.color(color.rgb(205,109,0,0), title="D Color", group='Stochastic RSI Settings', inline="1")
StochRSI = ta.rsi(rsiSourceInput, lengthRSI)
k = ta.sma(ta.stoch(StochRSI, StochRSI, StochRSI, lengthStoch), smoothK) //Blue Line
d = ta.sma(k, smoothD) //Red Line
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Settings ------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 50)
hiddenBearColor = color.new(color.red, 50)
//textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi
plFound = na(ta.pivotlow(osc, lblInput, lbrInput)) ? false : true
phFound = na(ta.pivothigh(osc, lblInput, lbrInput)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
lbRangeMinInput <= bars and bars <= lbRangeMaxInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define Plot & Line Colors ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiColor = rsi >= rsiMA ? rsiColorInput : rsimaColorInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Lines ------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Create a horizontal line at a specific price level
myLine = line.new(bar_index , 75, bar_index, 75, color = color.rgb(187, 14, 14), width = 2)
bottom = line.new(bar_index , 50, bar_index, 50, color = color.rgb(223, 226, 28), width = 2)
mymainLine = line.new(bar_index , 60, bar_index, 60, color = color.rgb(13, 154, 10), width = 3)
hline(50, title='RSI Baseline', color=color.new(rsiBandColorInput, 50), linestyle=hline.style_solid, editable=false)
hline(rsiBandExtShowInput ? rsiUpperBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiUpperBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiLowerBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandExtShowInput ? rsiLowerBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandExtInput ? color.new(rsiColorInput, 70) : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandInput ? rsi < rsiUpperBandExtInput ? color.new(#64ffda, 90) : na : na: na, title="Show Overbought Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? rsi > rsiLowerBandExtInput ? color.new(#F43E32, 90) : na : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? color.new(rsimaColorInput, 70) : na : na, title="Show Oversold Highlight", editable=false)
maPlot = plot(maShowInput ? rsiMA : na, title='MA', color=color.new(maColorInput,0), linewidth=1)
rsiMAPlot = plot(showRSIMAInput ? rsiMA : na, title="RSI EMA", color=color.new(rsimaColorInput,0), editable=false, display=display.none)
rsiPlot = plot(rsiShowInput ? rsi : na, title='RSI', color=color.new(rsiColor,0), linewidth=1)
fill(rsiPlot, rsiMAPlot, color=color.new(rsiColor, 60), title="RSIMA Cloud")
plot(showStochRSI ? k : na, title='Stochastic K', color=colorK, linewidth=1)
plot(showStochRSI ? d : na, title='Stochastic D', color=colorD, linewidth=1)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Divergence -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low
oscHL = osc > ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Lower Low
priceLL = low < ta.valuewhen(plFound, low , 1)
bullCond = plotBullInput and priceLL and oscHL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Regular Bullish",
linewidth=2,
color=(bullCond ? bullColor : noneColor)
)
plotshape(
DivergenceShowInput ? bullCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bullish Label",
text=" Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
oscLL = osc < ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Higher Low
priceHL = low > ta.valuewhen(plFound, low , 1)
hiddenBullCond = plotHiddenBullInput and priceHL and oscLL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Hidden Bullish",
linewidth=2,
color=(hiddenBullCond ? hiddenBullColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBullCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bullish Label",
text=" H Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High
oscLH = osc < ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Higher High
priceHH = high > ta.valuewhen(phFound, high , 1)
bearCond = plotBearInput and priceHH and oscLH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Regular Bearish",
linewidth=2,
color=(bearCond ? bearColor : noneColor)
)
plotshape(
DivergenceShowInput ? bearCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bearish Label",
text=" Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High
oscHH = osc > ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Lower High
priceLH = high < ta.valuewhen(phFound, high , 1)
hiddenBearCond = plotHiddenBearInput and priceLH and oscHH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Hidden Bearish",
linewidth=2,
color=(hiddenBearCond ? hiddenBearColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBearCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bearish Label",
text=" H Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Check RSI Lineup ------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bullTF = rsi > rsi and rsi > rsi
bearTF = rsi < rsi and rsi < rsi
bullTF1 = rsi1 > rsi1_1 and rsi1_1 > rsi1_2
bearTF1 = rsi1 < rsi1_1 and rsi1_1 < rsi1_2
bullTF2 = rsi2 > rsi2_1 and rsi2_1 > rsi2_2
bearTF2 = rsi2 < rsi2_1 and rsi2_1 < rsi2_2
bullTF3 = rsi3 > rsi3_1 and rsi3_1 > rsi3_2
bearTF3 = rsi3 < rsi3_1 and rsi3_1 < rsi3_2
bullTF4 = rsi4 > rsi4_1 and rsi4_1 > rsi4_2
bearTF4 = rsi4 < rsi4_1 and rsi4_1 < rsi4_2
bbTxt(bull,bear) =>
bull ? "BULLISH" : bear ? "BEARISCH" : 'NO LINEUP'
bbColor(bull,bear) =>
bull ? bullishColor : bear ? bearishColor : nomatchColor
newTC(tBox, col, row, txt, width, txtColor, bgColor, txtHA, txtSize) =>
table.cell(table_id=tBox,column=col, row=row, text=txt, width=width,text_color=txtColor,bgcolor=bgColor, text_halign=txtHA, text_size=txtSize)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define RSI Table Setting ----------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
width_c0 = 0
width_c1 = 0
if rsiShowTable
var tBox = table.new(position=rsiTablePosition, columns=5, rows=6, bgcolor=color.rgb(18,22,33,50), frame_color=color.black, frame_width=1, border_color=color.black, border_width=1)
newTC(tBox, 0,1,"RSI Current",width_c0,color.orange,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,1,str.format(" {0,number,#.##} ", rsi),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,1,bbTxt(bullTF, bearTF),width_c0,vWhite,bbColor(bullTF, bearTF),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF1
newTC(tBox, 0,2,TF2txt(rsiTF1),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,2,str.format(" {0,number,#.##} ", rsi1),width_c0,vWhite,rsi1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,2,bbTxt(bullTF1, bearTF1),width_c0,vWhite,bbColor(bullTF1,bearTF1),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,2,str.format(" {0,number,#.##} ", rsi1_1),width_c0,vWhite,rsi1_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,2,str.format(" {0,number,#.##} ", rsi1_2),width_c0,vWhite,rsi1_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF2
newTC(tBox, 0,3,TF2txt(rsiTF2),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,3,str.format(" {0,number,#.##} ", rsi2),width_c0,vWhite,rsi2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,3,bbTxt(bullTF2, bearTF2),width_c0,vWhite,bbColor(bullTF2,bearTF2),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,3,str.format(" {0,number,#.##} ", rsi2_1),width_c0,vWhite,rsi2_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,3,str.format(" {0,number,#.##} ", rsi2_2),width_c0,vWhite,rsi2_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF3
newTC(tBox, 0,4,TF2txt(rsiTF3),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,4,str.format(" {0,number,#.##} ", rsi3),width_c0,vWhite,rsi3 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,4,bbTxt(bullTF3, bearTF3),width_c0,vWhite,bbColor(bullTF3,bearTF3),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,4,str.format(" {0,number,#.##} ", rsi3_1),width_c0,vWhite,rsi3_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,4,str.format(" {0,number,#.##} ", rsi3_2),width_c0,vWhite,rsi3_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF4
newTC(tBox, 0,5,TF2txt(rsiTF4),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,5,str.format(" {0,number,#.##} ", rsi4),width_c0,vWhite,rsi4 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,5,bbTxt(bullTF4, bearTF4),width_c0,vWhite,bbColor(bullTF4,bearTF4),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,5,str.format(" {0,number,#.##} ", rsi4_1),width_c0,vWhite,rsi4_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,5,str.format(" {0,number,#.##} ", rsi4_2),width_c0,vWhite,rsi4_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
//------------------------------------------------------
//--- Alerts -------------------------------------------
//------------------------------------------------------
Relative Strength Index Remastered [CHE]Relative Strength Index Remastered — Enhanced RSI with robust divergence detection using price-based pivots and line-of-sight validation to reduce false signals compared to the standard RSI indicator.
Summary
RSI Remastered builds on the classic Relative Strength Index by adding a more reliable divergence detection system that relies on price pivots rather than RSI pivots alone, incorporating a line-of-sight check to ensure the RSI path between points remains clear. This approach filters out many false divergences that occur in the original RSI indicator due to its volatile pivot detection on the RSI line itself. Users benefit from clearer reversal and continuation signals, especially in noisy markets, with optional hidden divergence support for trend confirmation. The core RSI calculation and smoothing options remain familiar, but the divergence logic provides materially fewer alerts while maintaining sensitivity.
Motivation: Why this design?
The standard RSI indicator often generates misleading divergence signals because it detects pivots directly on the RSI values, which can fluctuate erratically in volatile conditions, leading to frequent false positives that confuse traders during ranging or choppy price action. RSI Remastered addresses this by shifting pivot detection to the underlying price highs and lows, which are more stable, and adding a validation step that confirms the RSI line does not cross the direct path between pivot points. This design targets the real problem of over-signaling in the original, promoting more actionable insights without altering the RSI's core momentum measurement.
What’s different vs. standard approaches?
- Reference baseline: The classical TradingView RSI indicator, which uses simple RSI-based pivot detection for divergences.
- Architecture differences:
- Pivot identification on price extremes (highs and lows) instead of RSI values, extracting RSI levels at those points for comparison.
- Addition of a line-of-sight validation that checks the RSI path bar by bar between pivots to prevent signals where the line is interrupted.
- Inclusion of hidden divergence types alongside regular ones, using the same robust framework.
- Configurable drawing of connecting lines between validated pivot RSI points for visual clarity.
- Practical effect: Charts show fewer but higher-quality divergence markers and lines, reducing clutter from the original's frequent RSI pivot triggers; this matters for avoiding whipsaws in intraday trading, where the standard version might flag dozens of invalid setups per session.
Key Comparison Aspects
Aspect: Title/Shorttitle
Original RSI: "Relative Strength Index" / "RSI"
Robust Variant: "Relative Strength Index Remastered " / "RSI RM"
Aspect: Max. Lines/Labels
Original RSI: No specification (Standard: 50/50)
Robust Variant: max_lines_count=200, max_labels_count=200 (for more lines/markers in divergences)
Aspect: RSI Calculation & Plots
Original RSI: Identical: RSI with RMA, Plots (line, bands, gradient fills)
Robust Variant: Identical: RSI with RMA, Plots (line, bands, gradient fills)
Aspect: Smoothing (MA)
Original RSI: Identical: Inputs for MA types (SMA, EMA etc.), Bollinger Bands optional
Robust Variant: Identical: Inputs for MA types (SMA, EMA etc.), Bollinger Bands optional
Aspect: Divergence Activation
Original RSI: input.bool(false, "Calculate Divergence") (disabled by default)
Robust Variant: input.bool(true, "Calculate Divergence") (enabled by default, with tooltip)
Aspect: Pivot Calculation
Original RSI: Pivots on RSI (ta.pivotlow/high on RSI values)
Robust Variant: Pivots on price (ta.pivotlow/high on low/high), RSI values then extracted
Aspect: Lookback Values
Original RSI: Fixed: lookbackLeft=5, lookbackRight=5
Robust Variant: Input: L=5 (Pivot Left), R=5 (Pivot Right), adjustable (min=1, max=50)
Aspect: Range Between Pivots
Original RSI: Fixed: rangeUpper=60, rangeLower=5 (via _inRange function)
Robust Variant: Input: rangeUpper=60 (Max Bars), rangeLower=5 (Min Bars), adjustable (min=1–6, max=100–300)
Aspect: Divergence Types
Original RSI: Only Regular Bullish/Bearish: - Bull: Price LL + RSI HL - Bear: Price HH + RSI LH
Robust Variant: Regular + Hidden (optional via showHidden=true): - Regular Bull: Price LL + RSI HL - Regular Bear: Price HH + RSI LH - Hidden Bull: Price HL + RSI LL - Hidden Bear: Price LH + RSI HH
Aspect: Validation
Original RSI: No additional check (only pivot + range check)
Robust Variant: Line-of-Sight Check: RSI line must not cross the connecting line between pivots (line_clear function with slope calculation and loop for each bar in between)
Aspect: Signals (Plots/Shapes)
Original RSI: - Plot of pivot points (if divergence) - Shapes: "Bull"/"Bear" at RSI value, offset=-5
Robust Variant: - No pivot plots, instead shapes at RSI , offset=-R (adjustable) - Shapes: "Bull"/"Bear" (Regular), "HBull"/"HBear" (Hidden) - Colors: Lime/Red (Regular), Teal/Orange (Hidden)
Aspect: Line Drawing
Original RSI: No lines
Robust Variant: Optional (showLines=true): Lines between RSI pivots (thick for regular, dashed/thin for hidden), extend=none
Aspect: Alerts
Original RSI: Only Regular Bullish/Bearish (with pivot lookback reference)
Robust Variant: Regular Bullish/Bearish + Hidden Bullish/Bearish (specific "at latest pivot low/high")
Aspect: Robustness
Original RSI: Simple, prone to false signals (RSI pivots can be volatile)
Robust Variant: Higher: Price pivots are more stable, line-of-sight filters "broken" divergences, hidden support for trend continuations
Aspect: Code Length/Structure
Original RSI: ~100 lines, simple if-blocks for bull/bear
Robust Variant: ~150 lines, extended helper functions (e.g., inRange, line_clear), var group for inputs
How it works (technical)
The indicator first computes the core RSI value based on recent price changes, separating upward and downward movements over the specified length and smoothing them to derive a momentum reading scaled between zero and one hundred. This value is then plotted in a separate pane with fixed upper and lower reference lines at seventy and thirty, along with optional gradient fills to highlight overbought and oversold zones.
For smoothing, a moving average type is applied to the RSI if enabled, with an option to add bands around it based on the variability of recent RSI values scaled by a multiplier. Divergence detection activates on confirmed price pivots: lows for bullish checks and highs for bearish. At each new pivot, the system retrieves the bar index and values (price and RSI) for the current and prior pivot, ensuring they fall within a configurable bar range to avoid unrelated points.
Comparisons then assess whether the price has made a lower low (or higher high) while the RSI at those points moves in the opposite direction—higher for bullish regular, lower for bearish regular. For hidden types, the directions reverse to capture trend strength. The line-of-sight check calculates the straight path between the two RSI points and verifies that the actual RSI values in between stay entirely above (for bullish) or below (for bearish) that path, breaking the signal if any bar violates it. Valid signals trigger shapes at the RSI level of the new pivot and optional lines connecting the points. Initialization uses built-in functions to track prior occurrences, with states persisting across bars for accurate historical comparisons. No higher timeframe data is used, so confirmation occurs after the right pivot bars close, minimizing live-bar repaints.
Parameter Guide
Length — Controls the period for measuring price momentum changes — Default: 14 — Trade-offs/Tips: Shorter values increase responsiveness but add noise and more false signals; longer smooths trends but delays entries in fast markets.
Source — Selects the price input for RSI calculation — Default: Close — Trade-offs/Tips: Use high or low for volatility focus, but close works best for most assets; mismatches can skew overbought/oversold reads.
Calculate Divergence — Enables the enhanced divergence logic — Default: True — Trade-offs/Tips: Disable for pure RSI view to save computation; essential for signal reliability over the standard method.
Type (Smoothing) — Chooses the moving average applied to RSI — Default: SMA — Trade-offs/Tips: None for raw RSI; EMA for quicker adaptation, but SMA reduces whipsaws; Bollinger Bands option adds volatility context at cost of added lines.
Length (Smoothing) — Period for the smoothing average — Default: 14 — Trade-offs/Tips: Match RSI length for consistency; shorter boosts signal speed but amplifies noise in the smoothed line.
BB StdDev — Multiplier for band width around smoothed RSI — Default: 2.0 — Trade-offs/Tips: Lower narrows bands for tighter signals, risking more touches; higher widens for fewer but stronger breakouts.
Pivot Left — Bars to the left for confirming price pivots — Default: 5 — Trade-offs/Tips: Increase for stricter pivots in noisy data, reducing signals; too high delays confirmation excessively.
Pivot Right — Bars to the right for confirming price pivots — Default: 5 — Trade-offs/Tips: Balances with left for symmetry; longer right ensures maturity but shifts signals backward.
Max Bars Between Pivots — Upper limit on distance for valid pivot pairs — Default: 60 — Trade-offs/Tips: Tighten for short-term trades to focus recent action; widen for swing setups but risks unrelated comparisons.
Min Bars Between Pivots — Lower limit to avoid clustered pivots — Default: 5 — Trade-offs/Tips: Raise to filter micro-moves; too low invites overlapping signals like the original RSI.
Detect Hidden — Includes trend-continuation hidden types — Default: True — Trade-offs/Tips: Enable for full trend analysis; disable simplifies to reversals only, akin to basic RSI.
Draw Lines — Shows connecting lines between valid pivots — Default: True — Trade-offs/Tips: Turn off for cleaner charts; helps visually confirm line-of-sight in backtests.
Reading & Interpretation
The main RSI line oscillates between zero and one hundred, crossing above fifty suggesting building momentum and below indicating weakness; touches near seventy or thirty flag potential extremes. The optional smoothed line and bands provide a filtered view—price above the upper band on the RSI pane hints at overextension. Divergence shapes appear as upward labels for bullish (lime for regular, teal for hidden) and downward for bearish (red regular, orange hidden) at the pivot's RSI level, signaling a mismatch only after validation. Connecting lines, if drawn, slope between points without RSI interference, their color matching the shape type; a dashed style denotes hidden. Fewer shapes overall compared to the standard RSI mean higher conviction, but always confirm with price structure.
Practical Workflows & Combinations
- Trend following: Enter longs on regular bullish shapes near support with higher highs in price; filter hidden bullish for pullback buys in uptrends, pairing with a rising smoothed RSI above fifty.
- Exits/Stops: Use bearish regular as reversal warnings to tighten stops; hidden bearish in downtrends confirms continuation—exit if lines show RSI crossing the path.
- Multi-asset/Multi-TF: Defaults suit forex and stocks on one-hour charts; for crypto volatility, widen pivot ranges to ten; scale min/max bars proportionally on daily for swings, avoiding the original's intraday spam.
Behavior, Constraints & Performance
Signals confirm only after the right pivot bars close, so live bars may show tentative pivots that vanish on close, unlike the standard RSI's immediate RSI-pivot triggers—plan for this delay in automation. No higher timeframe calls, so no security-related repaints. Resources include up to two hundred lines and labels for dense charts, with a loop in validation scanning up to three hundred bars between pivots, which is efficient but could slow on very long histories. Known limits: Slight lag at pivot confirmation in trending markets; volatile RSI might rarely miss fine path violations; not ideal for gap-heavy assets where pivots skip.
Sensible Defaults & Quick Tuning
Start with defaults for balanced momentum and divergence on most timeframes. For too many signals (like the original), raise pivot left/right to eight and min bars to ten to filter noise. If sluggish in trends, shorten RSI length to nine and enable EMA smoothing for faster adaptation. In high-volatility assets, widen max bars to one hundred but disable hidden to focus essentials. For clean reversal hunts, set smoothing to none and lines on.
What this indicator is—and isn’t
RSI Remastered serves as a refined momentum and divergence visualization tool, enhancing the standard RSI for better signal quality in technical analysis setups. It is not a standalone trading system, nor does it predict price moves—pair it with volume, structure breaks, and risk rules for decisions. Use alongside position sizing and broader context, not in isolation.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino
RSMPatternLibLibrary "RSMPatternLib"
RSM Pattern Library - All chart patterns from PATTERNS.md
Implements: Candlestick patterns, Support/Resistance, Gaps, Triangles, Volume Divergence, and more
ALL PATTERNS ARE OWN IMPLEMENTATION - No external dependencies
EDGE CASES HANDLED:
- Zero/tiny candle bodies
- Missing volume data
- Low bar count scenarios
- Integer division issues
- Price normalization for different instruments
bullishEngulfing(minBodyRatio, minPrevBodyRatio)
Detects Bullish Engulfing pattern
Parameters:
minBodyRatio (float) : Minimum body size as ratio of total range (default 0.3)
minPrevBodyRatio (float) : Minimum previous candle body ratio to filter dojis (default 0.1)
Returns: bool True when bullish engulfing detected
EDGE CASES: Handles doji previous candle, zero range, tiny bodies
bearishEngulfing(minBodyRatio, minPrevBodyRatio)
Detects Bearish Engulfing pattern
Parameters:
minBodyRatio (float) : Minimum body size as ratio of total range (default 0.3)
minPrevBodyRatio (float) : Minimum previous candle body ratio to filter dojis (default 0.1)
Returns: bool True when bearish engulfing detected
EDGE CASES: Handles doji previous candle, zero range, tiny bodies
doji(maxBodyRatio, minRangeAtr)
Detects Doji candle (indecision)
Parameters:
maxBodyRatio (float) : Maximum body size as ratio of total range (default 0.1)
minRangeAtr (float) : Minimum range as multiple of ATR to filter flat candles (default 0.3)
Returns: bool True when doji detected
EDGE CASES: Filters out no-movement bars, handles zero range
shootingStar(wickMultiplier, maxLowerWickRatio, minBodyAtrRatio)
Detects Shooting Star (bearish reversal)
Parameters:
wickMultiplier (float) : Upper wick must be at least this times the body (default 2.0)
maxLowerWickRatio (float) : Lower wick max as ratio of body (default 0.5)
minBodyAtrRatio (float) : Minimum body size as ratio of ATR (default 0.1)
Returns: bool True when shooting star detected
EDGE CASES: Handles zero body (uses range-based check), tiny bodies
hammer(wickMultiplier, maxUpperWickRatio, minBodyAtrRatio)
Detects Hammer (bullish reversal)
Parameters:
wickMultiplier (float) : Lower wick must be at least this times the body (default 2.0)
maxUpperWickRatio (float) : Upper wick max as ratio of body (default 0.5)
minBodyAtrRatio (float) : Minimum body size as ratio of ATR (default 0.1)
Returns: bool True when hammer detected
EDGE CASES: Handles zero body (uses range-based check), tiny bodies
invertedHammer(wickMultiplier, maxLowerWickRatio)
Detects Inverted Hammer (bullish reversal after downtrend)
Parameters:
wickMultiplier (float) : Upper wick must be at least this times the body (default 2.0)
maxLowerWickRatio (float) : Lower wick max as ratio of body (default 0.5)
Returns: bool True when inverted hammer detected
EDGE CASES: Same as shootingStar but requires bullish close
hangingMan(wickMultiplier, maxUpperWickRatio)
Detects Hanging Man (bearish reversal after uptrend)
Parameters:
wickMultiplier (float) : Lower wick must be at least this times the body (default 2.0)
maxUpperWickRatio (float) : Upper wick max as ratio of body (default 0.5)
Returns: bool True when hanging man detected
NOTE: Identical to hammer - context (uptrend) determines meaning
morningStar(requireGap, minAvgBars)
Detects Morning Star (3-candle bullish reversal)
Parameters:
requireGap (bool) : Whether to require gap between candles (default false for crypto/forex)
minAvgBars (int) : Minimum bars for average body calculation (default 14)
Returns: bool True when morning star pattern detected
EDGE CASES: Gap is optional, handles low bar count, uses shifted average
eveningStar(requireGap, minAvgBars)
Detects Evening Star (3-candle bearish reversal)
Parameters:
requireGap (bool) : Whether to require gap between candles (default false for crypto/forex)
minAvgBars (int) : Minimum bars for average body calculation (default 14)
Returns: bool True when evening star pattern detected
EDGE CASES: Gap is optional, handles low bar count
gapUp()
Detects Gap Up
Returns: bool True when current bar opens above previous bar's high
gapDown()
Detects Gap Down
Returns: bool True when current bar opens below previous bar's low
gapSize()
Returns gap size in price
Returns: float Gap size (positive for gap up, negative for gap down, 0 for no gap)
gapPercent()
Returns gap size as percentage
Returns: float Gap size as percentage of previous close
gapType(volAvgLen, breakawayMinPct, highVolMult)
Classifies gap type based on volume
Parameters:
volAvgLen (int) : Length for volume average (default 20)
breakawayMinPct (float) : Minimum gap % for breakaway (default 1.0)
highVolMult (float) : Volume multiplier for high volume (default 1.5)
Returns: string Gap type: "Breakaway", "Common", "Continuation", or "None"
EDGE CASES: Handles missing volume data, low bar count
swingHigh(leftBars, rightBars)
Detects swing high using pivot
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
Returns: float Swing high price or na
swingLow(leftBars, rightBars)
Detects swing low using pivot
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
Returns: float Swing low price or na
higherHigh(leftBars, rightBars, lookback)
Checks if current swing high is higher than previous swing high
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
lookback (int) : How many bars back to search for previous pivot (default 50)
Returns: bool True when higher high pattern detected
EDGE CASES: Searches backwards for pivots instead of using var (library-safe)
higherLow(leftBars, rightBars, lookback)
Checks if current swing low is higher than previous swing low
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
lookback (int) : How many bars back to search for previous pivot (default 50)
Returns: bool True when higher low pattern detected
lowerHigh(leftBars, rightBars, lookback)
Checks if current swing high is lower than previous swing high
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
lookback (int) : How many bars back to search for previous pivot (default 50)
Returns: bool True when lower high pattern detected
lowerLow(leftBars, rightBars, lookback)
Checks if current swing low is lower than previous swing low
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
lookback (int) : How many bars back to search for previous pivot (default 50)
Returns: bool True when lower low pattern detected
bullishTrend(leftBars, rightBars, lookback)
Detects Bullish Trend (HH + HL within lookback)
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
lookback (int) : Lookback period (default 50)
Returns: bool True when making higher highs AND higher lows
bearishTrend(leftBars, rightBars, lookback)
Detects Bearish Trend (LH + LL within lookback)
Parameters:
leftBars (int) : Bars to left for pivot (default 5)
rightBars (int) : Bars to right for pivot (default 5)
lookback (int) : Lookback period (default 50)
Returns: bool True when making lower highs AND lower lows
nearestResistance(lookback, leftBars, rightBars)
Finds nearest resistance level above current price
Parameters:
lookback (int) : Number of bars to look back (default 50)
leftBars (int) : Pivot left bars (default 5)
rightBars (int) : Pivot right bars (default 5)
Returns: float Nearest resistance level or na
EDGE CASES: Pre-computes pivots, handles bounds properly
nearestSupport(lookback, leftBars, rightBars)
Finds nearest support level below current price
Parameters:
lookback (int) : Number of bars to look back (default 50)
leftBars (int) : Pivot left bars (default 5)
rightBars (int) : Pivot right bars (default 5)
Returns: float Nearest support level or na
resistanceBreakout(lookback, leftBars, rightBars)
Detects resistance breakout
Parameters:
lookback (int) : Number of bars to look back (default 50)
leftBars (int) : Pivot left bars (default 5)
rightBars (int) : Pivot right bars (default 5)
Returns: bool True when price breaks above resistance
EDGE CASES: Uses previous bar's resistance to avoid lookahead
supportBreakdown(lookback, leftBars, rightBars)
Detects support breakdown
Parameters:
lookback (int) : Number of bars to look back (default 50)
leftBars (int) : Pivot left bars (default 5)
rightBars (int) : Pivot right bars (default 5)
Returns: bool True when price breaks below support
bullishVolumeDivergence(leftBars, rightBars, lookback)
Detects Bullish Volume Divergence (price makes lower low, volume decreases)
Parameters:
leftBars (int) : Pivot left bars (default 5)
rightBars (int) : Pivot right bars (default 5)
lookback (int) : Bars to search for previous pivot (default 50)
Returns: bool True when bullish volume divergence detected
EDGE CASES: Library-safe (no var), searches for previous pivot
bearishVolumeDivergence(leftBars, rightBars, lookback)
Detects Bearish Volume Divergence (price makes higher high, volume decreases)
Parameters:
leftBars (int) : Pivot left bars (default 5)
rightBars (int) : Pivot right bars (default 5)
lookback (int) : Bars to search for previous pivot (default 50)
Returns: bool True when bearish volume divergence detected
rangeContracting(lookback)
Detects if price is in a contracting range (triangle formation)
Parameters:
lookback (int) : Bars to analyze (default 20)
Returns: bool True when range is contracting
EDGE CASES: Uses safe integer division, checks minimum lookback
ascendingTriangle(lookback, flatTolerance)
Detects Ascending Triangle (flat top, rising bottom)
Parameters:
lookback (int) : Bars to analyze (default 20)
flatTolerance (float) : Max normalized slope for "flat" line (default 0.002)
Returns: bool True when ascending triangle detected
EDGE CASES: Safe division, normalized slope, minimum lookback
descendingTriangle(lookback, flatTolerance)
Detects Descending Triangle (falling top, flat bottom)
Parameters:
lookback (int) : Bars to analyze (default 20)
flatTolerance (float) : Max normalized slope for "flat" line (default 0.002)
Returns: bool True when descending triangle detected
symmetricalTriangle(lookback, minSlope)
Detects Symmetrical Triangle (converging trend lines)
Parameters:
lookback (int) : Bars to analyze (default 20)
minSlope (float) : Minimum normalized slope magnitude (default 0.0005)
Returns: bool True when symmetrical triangle detected
doubleBottom(tolerance, minSpanBars, lookback)
Detects Double Bottom (W pattern) - OWN IMPLEMENTATION
Two swing lows at similar price levels with a swing high between them
Parameters:
tolerance (float) : Max price difference between lows as % (default 3)
minSpanBars (int) : Minimum bars between the two lows (default 5)
lookback (int) : Max bars to search for pattern (default 100)
Returns: bool True when double bottom detected
doubleTop(tolerance, minSpanBars, lookback)
Detects Double Top (M pattern) - OWN IMPLEMENTATION
Two swing highs at similar price levels with a swing low between them
Parameters:
tolerance (float) : Max price difference between highs as % (default 3)
minSpanBars (int) : Minimum bars between the two highs (default 5)
lookback (int) : Max bars to search for pattern (default 100)
Returns: bool True when double top detected
tripleBottom(tolerance, minSpanBars, lookback)
Detects Triple Bottom - OWN IMPLEMENTATION
Three swing lows at similar price levels
Parameters:
tolerance (float) : Max price difference between lows as % (default 3)
minSpanBars (int) : Minimum total bars for pattern (default 10)
lookback (int) : Max bars to search for pattern (default 150)
Returns: bool True when triple bottom detected
tripleTop(tolerance, minSpanBars, lookback)
Detects Triple Top - OWN IMPLEMENTATION
Three swing highs at similar price levels
Parameters:
tolerance (float) : Max price difference between highs as % (default 3)
minSpanBars (int) : Minimum total bars for pattern (default 10)
lookback (int) : Max bars to search for pattern (default 150)
Returns: bool True when triple top detected
bearHeadShoulders()
Detects Bearish Head and Shoulders (OWN IMPLEMENTATION)
Head is higher than both shoulders, shoulders roughly equal, with valid neckline
STRICT VERSION - requires proper structure, neckline, and minimum span
Returns: bool True when bearish H&S detected
bullHeadShoulders()
Detects Bullish (Inverse) Head and Shoulders (OWN IMPLEMENTATION)
Head is lower than both shoulders, shoulders roughly equal, with valid neckline
STRICT VERSION - requires proper structure, neckline, and minimum span
Returns: bool True when bullish H&S detected
bearAscHeadShoulders()
Detects Bearish Ascending Head and Shoulders (variant)
Returns: bool True when pattern detected
bullAscHeadShoulders()
Detects Bullish Ascending Head and Shoulders (variant)
Returns: bool True when pattern detected
bearDescHeadShoulders()
Detects Bearish Descending Head and Shoulders (variant)
Returns: bool True when pattern detected
bullDescHeadShoulders()
Detects Bullish Descending Head and Shoulders (variant)
Returns: bool True when pattern detected
isSwingLow()
Re-export: Detects swing low
Returns: bool True when swing low detected
isSwingHigh()
Re-export: Detects swing high
Returns: bool True when swing high detected
swingHighPrice(idx)
Re-export: Gets swing high price at index
Parameters:
idx (int) : Index (0 = most recent)
Returns: float Swing high price
swingLowPrice(idx)
Re-export: Gets swing low price at index
Parameters:
idx (int) : Index (0 = most recent)
Returns: float Swing low price
swingHighBarIndex(idx)
Re-export: Gets swing high bar index
Parameters:
idx (int) : Index (0 = most recent)
Returns: int Bar index of swing high
swingLowBarIndex(idx)
Re-export: Gets swing low bar index
Parameters:
idx (int) : Index (0 = most recent)
Returns: int Bar index of swing low
cupBottom(smoothLen, minDepthAtr, maxDepthAtr)
Detects Cup and Handle pattern formation
Uses price acceleration and depth analysis
Parameters:
smoothLen (int) : Smoothing length for price (default 10)
minDepthAtr (float) : Minimum cup depth as ATR multiple (default 1.0)
maxDepthAtr (float) : Maximum cup depth as ATR multiple (default 5.0)
Returns: bool True when potential cup bottom detected
EDGE CASES: Added depth filter, ATR validation
cupHandle(lookback, maxHandleRetraceRatio)
Detects potential handle formation after cup
Parameters:
lookback (int) : Bars to look back for cup (default 30)
maxHandleRetraceRatio (float) : Maximum handle retracement of cup depth (default 0.5)
Returns: bool True when handle pattern detected
bullishPatternCount()
Returns count of bullish patterns detected
Returns: int Number of bullish patterns currently active
bearishPatternCount()
Returns count of bearish patterns detected
Returns: int Number of bearish patterns currently active
detectedPatterns()
Returns string description of detected patterns
Returns: string Comma-separated list of detected patterns
Adaptive Market Wave Theory - ProAdaptive Market Wave Theory
🌊 CORE INNOVATION: PROBABILISTIC PHASE DETECTION WITH MULTI-AGENT CONSENSUS
Adaptive Market Wave Theory (AMWT) represents a fundamental paradigm shift in how traders approach market phase identification. Rather than counting waves subjectively or drawing static breakout levels, AMWT treats the market as a hidden state machine —using Hidden Markov Models, multi-agent consensus systems, and reinforcement learning algorithms to quantify what traditional methods leave to interpretation.
The Wave Analysis Problem:
Traditional wave counting methodologies (Elliott Wave, harmonic patterns, ABC corrections) share fatal weaknesses that AMWT directly addresses:
1. Non-Falsifiability : Invalid wave counts can always be "recounted" or "adjusted." If your Wave 3 fails, it becomes "Wave 3 of a larger degree" or "actually Wave C." There's no objective failure condition.
2. Observer Bias : Two expert wave analysts examining the same chart routinely reach different conclusions. This isn't a feature—it's a fundamental methodology flaw.
3. No Confidence Measure : Traditional analysis says "This IS Wave 3." But with what probability? 51%? 95%? The binary nature prevents proper position sizing and risk management.
4. Static Rules : Fixed Fibonacci ratios and wave guidelines cannot adapt to changing market regimes. What worked in 2019 may fail in 2024.
5. No Accountability : Wave methodologies rarely track their own performance. There's no feedback loop to improve.
The AMWT Solution:
AMWT addresses each limitation through rigorous mathematical frameworks borrowed from speech recognition, machine learning, and reinforcement learning:
• Non-Falsifiability → Hard Invalidation : Wave hypotheses die permanently when price violates calculated invalidation levels. No recounting allowed.
• Observer Bias → Multi-Agent Consensus : Three independent analytical agents must agree. Single-methodology bias is eliminated.
• No Confidence → Probabilistic States : Every market state has a calculated probability from Hidden Markov Model inference. "72% probability of impulse state" replaces "This is Wave 3."
• Static Rules → Adaptive Learning : Thompson Sampling multi-armed bandits learn which agents perform best in current conditions. The system adapts in real-time.
• No Accountability → Performance Tracking : Comprehensive statistics track every signal's outcome. The system knows its own performance.
The Core Insight:
"Traditional wave analysis asks 'What count is this?' AMWT asks 'What is the probability we are in an impulsive state, with what confidence, confirmed by how many independent methodologies, and anchored to what liquidity event?'"
🔬 THEORETICAL FOUNDATION: HIDDEN MARKOV MODELS
Why Hidden Markov Models?
Markets exist in hidden states that we cannot directly observe—only their effects on price are visible. When the market is in an "impulse up" state, we see rising prices, expanding volume, and trending indicators. But we don't observe the state itself—we infer it from observables.
This is precisely the problem Hidden Markov Models (HMMs) solve. Originally developed for speech recognition (inferring words from sound waves), HMMs excel at estimating hidden states from noisy observations.
HMM Components:
1. Hidden States (S) : The unobservable market conditions
2. Observations (O) : What we can measure (price, volume, indicators)
3. Transition Matrix (A) : Probability of moving between states
4. Emission Matrix (B) : Probability of observations given each state
5. Initial Distribution (π) : Starting state probabilities
AMWT's Six Market States:
State 0: IMPULSE_UP
• Definition: Strong bullish momentum with high participation
• Observable Signatures: Rising prices, expanding volume, RSI >60, price above upper Bollinger Band, MACD histogram positive and rising
• Typical Duration: 5-20 bars depending on timeframe
• What It Means: Institutional buying pressure, trend acceleration phase
State 1: IMPULSE_DN
• Definition: Strong bearish momentum with high participation
• Observable Signatures: Falling prices, expanding volume, RSI <40, price below lower Bollinger Band, MACD histogram negative and falling
• Typical Duration: 5-20 bars (often shorter than bullish impulses—markets fall faster)
• What It Means: Institutional selling pressure, panic or distribution acceleration
State 2: CORRECTION
• Definition: Counter-trend consolidation with declining momentum
• Observable Signatures: Sideways or mild counter-trend movement, contracting volume, RSI returning toward 50, Bollinger Bands narrowing
• Typical Duration: 8-30 bars
• What It Means: Profit-taking, digestion of prior move, potential accumulation for next leg
State 3: ACCUMULATION
• Definition: Base-building near lows where informed participants absorb supply
• Observable Signatures: Price near recent lows but not making new lows, volume spikes on up bars, RSI showing positive divergence, tight range
• Typical Duration: 15-50 bars
• What It Means: Smart money buying from weak hands, preparing for markup phase
State 4: DISTRIBUTION
• Definition: Top-forming near highs where informed participants distribute holdings
• Observable Signatures: Price near recent highs but struggling to advance, volume spikes on down bars, RSI showing negative divergence, widening range
• Typical Duration: 15-50 bars
• What It Means: Smart money selling to late buyers, preparing for markdown phase
State 5: TRANSITION
• Definition: Regime change period with mixed signals and elevated uncertainty
• Observable Signatures: Conflicting indicators, whipsaw price action, no clear momentum, high volatility without direction
• Typical Duration: 5-15 bars
• What It Means: Market deciding next direction, dangerous for directional trades
The Transition Matrix:
The transition matrix A captures the probability of moving from one state to another. AMWT initializes with empirically-derived values then updates online:
From/To IMP_UP IMP_DN CORR ACCUM DIST TRANS
IMP_UP 0.70 0.02 0.20 0.02 0.04 0.02
IMP_DN 0.02 0.70 0.20 0.04 0.02 0.02
CORR 0.15 0.15 0.50 0.10 0.10 0.00
ACCUM 0.30 0.05 0.15 0.40 0.05 0.05
DIST 0.05 0.30 0.15 0.05 0.40 0.05
TRANS 0.20 0.20 0.20 0.15 0.15 0.10
Key Insights from Transition Probabilities:
• Impulse states are sticky (70% self-transition): Once trending, markets tend to continue
• Corrections can transition to either impulse direction (15% each): The next move after correction is uncertain
• Accumulation strongly favors IMP_UP transition (30%): Base-building leads to rallies
• Distribution strongly favors IMP_DN transition (30%): Topping leads to declines
The Viterbi Algorithm:
Given a sequence of observations, how do we find the most likely state sequence? This is the Viterbi algorithm—dynamic programming to find the optimal path through the state space.
Mathematical Formulation:
δ_t(j) = max_i × B_j(O_t)
Where:
δ_t(j) = probability of most likely path ending in state j at time t
A_ij = transition probability from state i to state j
B_j(O_t) = emission probability of observation O_t given state j
AMWT Implementation:
AMWT runs Viterbi over a rolling window (default 50 bars), computing the most likely state sequence and extracting:
• Current state estimate
• State confidence (probability of current state vs alternatives)
• State sequence for pattern detection
Online Learning (Baum-Welch Adaptation):
Unlike static HMMs, AMWT continuously updates its transition and emission matrices based on observed market behavior:
f_onlineUpdateHMM(prev_state, curr_state, observation, decay) =>
// Update transition matrix
A *= decay
A += (1.0 - decay)
// Renormalize row
// Update emission matrix
B *= decay
B += (1.0 - decay)
// Renormalize row
The decay parameter (default 0.85) controls adaptation speed:
• Higher decay (0.95): Slower adaptation, more stable, better for consistent markets
• Lower decay (0.80): Faster adaptation, more reactive, better for regime changes
Why This Matters for Trading:
Traditional indicators give you a number (RSI = 72). AMWT gives you a probabilistic state assessment :
"There is a 78% probability we are in IMPULSE_UP state, with 15% probability of CORRECTION and 7% distributed among other states. The transition matrix suggests 70% chance of remaining in IMPULSE_UP next bar, 20% chance of transitioning to CORRECTION."
This enables:
• Position sizing by confidence : 90% confidence = full size; 60% confidence = half size
• Risk management by transition probability : High correction probability = tighten stops
• Strategy selection by state : IMPULSE = trend-follow; CORRECTION = wait; ACCUMULATION = scale in
🎰 THE 3-BANDIT CONSENSUS SYSTEM
The Multi-Agent Philosophy:
No single analytical methodology works in all market conditions. Trend-following excels in trending markets but gets chopped in ranges. Mean-reversion excels in ranges but gets crushed in trends. Structure-based analysis works when structure is clear but fails in chaotic markets.
AMWT's solution: employ three independent agents , each analyzing the market from a different perspective, then use Thompson Sampling to learn which agents perform best in current conditions.
Agent 1: TREND AGENT
Philosophy : Markets trend. Follow the trend until it ends.
Analytical Components:
• EMA Alignment: EMA8 > EMA21 > EMA50 (bullish) or inverse (bearish)
• MACD Histogram: Direction and rate of change
• Price Momentum: Close relative to ATR-normalized movement
• VWAP Position: Price above/below volume-weighted average price
Signal Generation:
Strong Bull: EMA aligned bull AND MACD histogram > 0 AND momentum > 0.3 AND close > VWAP
→ Signal: +1 (Long), Confidence: 0.75 + |momentum| × 0.4
Moderate Bull: EMA stack bull AND MACD rising AND momentum > 0.1
→ Signal: +1 (Long), Confidence: 0.65 + |momentum| × 0.3
Strong Bear: EMA aligned bear AND MACD histogram < 0 AND momentum < -0.3 AND close < VWAP
→ Signal: -1 (Short), Confidence: 0.75 + |momentum| × 0.4
Moderate Bear: EMA stack bear AND MACD falling AND momentum < -0.1
→ Signal: -1 (Short), Confidence: 0.65 + |momentum| × 0.3
When Trend Agent Excels:
• Trend days (IB extension >1.5x)
• Post-breakout continuation
• Institutional accumulation/distribution phases
When Trend Agent Fails:
• Range-bound markets (ADX <20)
• Chop zones after volatility spikes
• Reversal days at major levels
Agent 2: REVERSION AGENT
Philosophy: Markets revert to mean. Extreme readings reverse.
Analytical Components:
• Bollinger Band Position: Distance from bands, percent B
• RSI Extremes: Overbought (>70) and oversold (<30)
• Stochastic: %K/%D crossovers at extremes
• Band Squeeze: Bollinger Band width contraction
Signal Generation:
Oversold Bounce: BB %B < 0.20 AND RSI < 35 AND Stochastic < 25
→ Signal: +1 (Long), Confidence: 0.70 + (30 - RSI) × 0.01
Overbought Fade: BB %B > 0.80 AND RSI > 65 AND Stochastic > 75
→ Signal: -1 (Short), Confidence: 0.70 + (RSI - 70) × 0.01
Squeeze Fire Bull: Band squeeze ending AND close > upper band
→ Signal: +1 (Long), Confidence: 0.65
Squeeze Fire Bear: Band squeeze ending AND close < lower band
→ Signal: -1 (Short), Confidence: 0.65
When Reversion Agent Excels:
• Rotation days (price stays within IB)
• Range-bound consolidation
• After extended moves without pullback
When Reversion Agent Fails:
• Strong trend days (RSI can stay overbought for days)
• Breakout moves
• News-driven directional moves
Agent 3: STRUCTURE AGENT
Philosophy: Market structure reveals institutional intent. Follow the smart money.
Analytical Components:
• Break of Structure (BOS): Price breaks prior swing high/low
• Change of Character (CHOCH): First break against prevailing trend
• Higher Highs/Higher Lows: Bullish structure
• Lower Highs/Lower Lows: Bearish structure
• Liquidity Sweeps: Stop runs that reverse
Signal Generation:
BOS Bull: Price breaks above prior swing high with momentum
→ Signal: +1 (Long), Confidence: 0.70 + structure_strength × 0.2
CHOCH Bull: First higher low after downtrend, breaking structure
→ Signal: +1 (Long), Confidence: 0.75
BOS Bear: Price breaks below prior swing low with momentum
→ Signal: -1 (Short), Confidence: 0.70 + structure_strength × 0.2
CHOCH Bear: First lower high after uptrend, breaking structure
→ Signal: -1 (Short), Confidence: 0.75
Liquidity Sweep Long: Price sweeps below swing low then reverses strongly
→ Signal: +1 (Long), Confidence: 0.80
Liquidity Sweep Short: Price sweeps above swing high then reverses strongly
→ Signal: -1 (Short), Confidence: 0.80
When Structure Agent Excels:
• After liquidity grabs (stop runs)
• At major swing points
• During institutional accumulation/distribution
When Structure Agent Fails:
• Choppy, structureless markets
• During news events (structure becomes noise)
• Very low timeframes (noise overwhelms structure)
Thompson Sampling: The Bandit Algorithm
With three agents giving potentially different signals, how do we decide which to trust? This is the multi-armed bandit problem —balancing exploitation (using what works) with exploration (testing alternatives).
Thompson Sampling Solution:
Each agent maintains a Beta distribution representing its success/failure history:
Agent success rate modeled as Beta(α, β)
Where:
α = number of successful signals + 1
β = number of failed signals + 1
On Each Bar:
1. Sample from each agent's Beta distribution
2. Weight agent signals by sampled probabilities
3. Combine weighted signals into consensus
4. Update α/β based on trade outcomes
Mathematical Implementation:
// Beta sampling via Gamma ratio method
f_beta_sample(alpha, beta) =>
g1 = f_gamma_sample(alpha)
g2 = f_gamma_sample(beta)
g1 / (g1 + g2)
// Thompson Sampling selection
for each agent:
sampled_prob = f_beta_sample(agent.alpha, agent.beta)
weight = sampled_prob / sum(all_sampled_probs)
consensus += agent.signal × agent.confidence × weight
Why Thompson Sampling?
• Automatic Exploration : Agents with few samples get occasional chances (high variance in Beta distribution)
• Bayesian Optimal : Mathematically proven optimal solution to exploration-exploitation tradeoff
• Uncertainty-Aware : Small sample size = more exploration; large sample size = more exploitation
• Self-Correcting : Poor performers naturally get lower weights over time
Example Evolution:
Day 1 (Initial):
Trend Agent: Beta(1,1) → samples ~0.50 (high uncertainty)
Reversion Agent: Beta(1,1) → samples ~0.50 (high uncertainty)
Structure Agent: Beta(1,1) → samples ~0.50 (high uncertainty)
After 50 Signals:
Trend Agent: Beta(28,23) → samples ~0.55 (moderate confidence)
Reversion Agent: Beta(18,33) → samples ~0.35 (underperforming)
Structure Agent: Beta(32,19) → samples ~0.63 (outperforming)
Result: Structure Agent now receives highest weight in consensus
Consensus Requirements by Mode:
Aggressive Mode:
• Minimum 1/3 agents agreeing
• Consensus threshold: 45%
• Use case: More signals, higher risk tolerance
Balanced Mode:
• Minimum 2/3 agents agreeing
• Consensus threshold: 55%
• Use case: Standard trading
Conservative Mode:
• Minimum 2/3 agents agreeing
• Consensus threshold: 65%
• Use case: Higher quality, fewer signals
Institutional Mode:
• Minimum 2/3 agents agreeing
• Consensus threshold: 75%
• Additional: Session quality >0.65, mode adjustment +0.10
• Use case: Highest quality signals only
🌀 INTELLIGENT CHOP DETECTION ENGINE
The Chop Problem:
Most trading losses occur not from being wrong about direction, but from trading in conditions where direction doesn't exist . Choppy, range-bound markets generate false signals from every methodology—trend-following, mean-reversion, and structure-based alike.
AMWT's chop detection engine identifies these low-probability environments before signals fire, preventing the most damaging trades.
Five-Factor Chop Analysis:
Factor 1: ADX Component (25% weight)
ADX (Average Directional Index) measures trend strength regardless of direction.
ADX < 15: Very weak trend (high chop score)
ADX 15-20: Weak trend (moderate chop score)
ADX 20-25: Developing trend (low chop score)
ADX > 25: Strong trend (minimal chop score)
adx_chop = (i_adxThreshold - adx_val) / i_adxThreshold × 100
Why ADX Works: ADX synthesizes +DI and -DI movements. Low ADX means price is moving but not directionally—the definition of chop.
Factor 2: Choppiness Index (25% weight)
The Choppiness Index measures price efficiency using the ratio of ATR sum to price range:
CI = 100 × LOG10(SUM(ATR, n) / (Highest - Lowest)) / LOG10(n)
CI > 61.8: Choppy (range-bound, inefficient movement)
CI < 38.2: Trending (directional, efficient movement)
CI 38.2-61.8: Transitional
chop_idx_score = (ci_val - 38.2) / (61.8 - 38.2) × 100
Why Choppiness Index Works: In trending markets, price covers distance efficiently (low ATR sum relative to range). In choppy markets, price oscillates wildly but goes nowhere (high ATR sum relative to range).
Factor 3: Range Compression (20% weight)
Compares recent range to longer-term range, detecting volatility squeezes:
recent_range = Highest(20) - Lowest(20)
longer_range = Highest(50) - Lowest(50)
compression = 1 - (recent_range / longer_range)
compression > 0.5: Strong squeeze (potential breakout imminent)
compression < 0.2: No compression (normal volatility)
range_compression_score = compression × 100
Why Range Compression Matters: Compression precedes expansion. High compression = market coiling, preparing for move. Signals during compression often fail because the breakout hasn't occurred yet.
Factor 4: Channel Position (15% weight)
Tracks price position within the macro channel:
channel_position = (close - channel_low) / (channel_high - channel_low)
position 0.4-0.6: Center of channel (indecision zone)
position <0.2 or >0.8: Near extremes (potential reversal or breakout)
channel_chop = abs(0.5 - channel_position) < 0.15 ? high_score : low_score
Why Channel Position Matters: Price in the middle of a range is in "no man's land"—equally likely to go either direction. Signals in the channel center have lower probability.
Factor 5: Volume Quality (15% weight)
Assesses volume relative to average:
vol_ratio = volume / SMA(volume, 20)
vol_ratio < 0.7: Low volume (lack of conviction)
vol_ratio 0.7-1.3: Normal volume
vol_ratio > 1.3: High volume (conviction present)
volume_chop = vol_ratio < 0.8 ? (1 - vol_ratio) × 100 : 0
Why Volume Quality Matters: Low volume moves lack institutional participation. These moves are more likely to reverse or stall.
Combined Chop Intensity:
chopIntensity = (adx_chop × 0.25) + (chop_idx_score × 0.25) +
(range_compression_score × 0.20) + (channel_chop × 0.15) +
(volume_chop × i_volumeChopWeight × 0.15)
Regime Classifications:
Based on chop intensity and component analysis:
• Strong Trend (0-20%): ADX >30, clear directional momentum, trade aggressively
• Trending (20-35%): ADX >20, moderate directional bias, trade normally
• Transitioning (35-50%): Mixed signals, regime change possible, reduce size
• Mid-Range (50-60%): Price trapped in channel center, avoid new positions
• Ranging (60-70%): Low ADX, price oscillating within bounds, fade extremes only
• Compression (70-80%): Volatility squeeze, expansion imminent, wait for breakout
• Strong Chop (80-100%): Multiple chop factors aligned, avoid trading entirely
Signal Suppression:
When chop intensity exceeds the configurable threshold (default 80%), signals are suppressed entirely. The dashboard displays "⚠️ CHOP ZONE" with the current regime classification.
Chop Box Visualization:
When chop is detected, AMWT draws a semi-transparent box on the chart showing the chop zone. This visual reminder helps traders avoid entering positions during unfavorable conditions.
💧 LIQUIDITY ANCHORING SYSTEM
The Liquidity Concept:
Markets move from liquidity pool to liquidity pool. Stop losses cluster at predictable locations—below swing lows (buy stops become sell orders when triggered) and above swing highs (sell stops become buy orders when triggered). Institutions know where these clusters are and often engineer moves to trigger them before reversing.
AMWT identifies and tracks these liquidity events, using them as anchors for signal confidence.
Liquidity Event Types:
Type 1: Volume Spikes
Definition: Volume > SMA(volume, 20) × i_volThreshold (default 2.8x)
Interpretation: Sudden volume surge indicates institutional activity
• Near swing low + reversal: Likely accumulation
• Near swing high + reversal: Likely distribution
• With continuation: Institutional conviction in direction
Type 2: Stop Runs (Liquidity Sweeps)
Definition: Price briefly exceeds swing high/low then reverses within N bars
Detection:
• Price breaks above recent swing high (triggering buy stops)
• Then closes back below that high within 3 bars
• Signal: Bullish stop run complete, reversal likely
Or inverse for bearish:
• Price breaks below recent swing low (triggering sell stops)
• Then closes back above that low within 3 bars
• Signal: Bearish stop run complete, reversal likely
Type 3: Absorption Events
Definition: High volume with small candle body
Detection:
• Volume > 2x average
• Candle body < 30% of candle range
• Interpretation: Large orders being filled without moving price
• Implication: Accumulation (at lows) or distribution (at highs)
Type 4: BSL/SSL Pools (Buy-Side/Sell-Side Liquidity)
BSL (Buy-Side Liquidity):
• Cluster of swing highs within ATR proximity
• Stop losses from shorts sit above these highs
• Breaking BSL triggers short covering (fuel for rally)
SSL (Sell-Side Liquidity):
• Cluster of swing lows within ATR proximity
• Stop losses from longs sit below these lows
• Breaking SSL triggers long liquidation (fuel for decline)
Liquidity Pool Mapping:
AMWT continuously scans for and maps liquidity pools:
// Detect swing highs/lows using pivot function
swing_high = ta.pivothigh(high, 5, 5)
swing_low = ta.pivotlow(low, 5, 5)
// Track recent swing points
if not na(swing_high)
bsl_levels.push(swing_high)
if not na(swing_low)
ssl_levels.push(swing_low)
// Display on chart with labels
Confluence Scoring Integration:
When signals fire near identified liquidity events, confluence scoring increases:
• Signal near volume spike: +10% confidence
• Signal after liquidity sweep: +15% confidence
• Signal at BSL/SSL pool: +10% confidence
• Signal aligned with absorption zone: +10% confidence
Why Liquidity Anchoring Matters:
Signals "in a vacuum" have lower probability than signals anchored to institutional activity. A long signal after a liquidity sweep below swing lows has trapped shorts providing fuel. A long signal in the middle of nowhere has no such catalyst.
📊 SIGNAL GRADING SYSTEM
The Quality Problem:
Not all signals are created equal. A signal with 6/6 factors aligned is fundamentally different from a signal with 3/6 factors aligned. Traditional indicators treat them the same. AMWT grades every signal based on confluence.
Confluence Components (100 points total):
1. Bandit Consensus Strength (25 points)
consensus_str = weighted average of agent confidences
score = consensus_str × 25
Example:
Trend Agent: +1 signal, 0.80 confidence, 0.35 weight
Reversion Agent: 0 signal, 0.50 confidence, 0.25 weight
Structure Agent: +1 signal, 0.75 confidence, 0.40 weight
Weighted consensus = (0.80×0.35 + 0×0.25 + 0.75×0.40) / (0.35 + 0.40) = 0.77
Score = 0.77 × 25 = 19.25 points
2. HMM State Confidence (15 points)
score = hmm_confidence × 15
Example:
HMM reports 82% probability of IMPULSE_UP
Score = 0.82 × 15 = 12.3 points
3. Session Quality (15 points)
Session quality varies by time:
• London/NY Overlap: 1.0 (15 points)
• New York Session: 0.95 (14.25 points)
• London Session: 0.70 (10.5 points)
• Asian Session: 0.40 (6 points)
• Off-Hours: 0.30 (4.5 points)
• Weekend: 0.10 (1.5 points)
4. Energy/Participation (10 points)
energy = (realized_vol / avg_vol) × 0.4 + (range / ATR) × 0.35 + (volume / avg_volume) × 0.25
score = min(energy, 1.0) × 10
5. Volume Confirmation (10 points)
if volume > SMA(volume, 20) × 1.5:
score = 10
else if volume > SMA(volume, 20):
score = 5
else:
score = 0
6. Structure Alignment (10 points)
For long signals:
• Bullish structure (HH + HL): 10 points
• Higher low only: 6 points
• Neutral structure: 3 points
• Bearish structure: 0 points
Inverse for short signals
7. Trend Alignment (10 points)
For long signals:
• Price > EMA21 > EMA50: 10 points
• Price > EMA21: 6 points
• Neutral: 3 points
• Against trend: 0 points
8. Entry Trigger Quality (5 points)
• Strong trigger (multiple confirmations): 5 points
• Moderate trigger (single confirmation): 3 points
• Weak trigger (marginal): 1 point
Grade Scale:
Total Score → Grade
85-100 → A+ (Exceptional—all factors aligned)
70-84 → A (Strong—high probability)
55-69 → B (Acceptable—proceed with caution)
Below 55 → C (Marginal—filtered by default)
Grade-Based Signal Brightness:
Signal arrows on the chart have transparency based on grade:
• A+: Full brightness (alpha = 0)
• A: Slight fade (alpha = 15)
• B: Moderate fade (alpha = 35)
• C: Significant fade (alpha = 55)
This visual hierarchy helps traders instantly identify signal quality.
Minimum Grade Filter:
Configurable filter (default: C) sets the minimum grade for signal display:
• Set to "A" for only highest-quality signals
• Set to "B" for moderate selectivity
• Set to "C" for all signals (maximum quantity)
🕐 SESSION INTELLIGENCE
Why Sessions Matter:
Markets behave differently at different times. The London open is fundamentally different from the Asian lunch hour. AMWT incorporates session-aware logic to optimize signal quality.
Session Definitions:
Asian Session (18:00-03:00 ET)
• Characteristics: Lower volatility, range-bound tendency, fewer institutional participants
• Quality Score: 0.40 (40% of peak quality)
• Strategy Implications: Fade extremes, expect ranges, smaller position sizes
• Best For: Mean-reversion setups, accumulation/distribution identification
London Session (03:00-12:00 ET)
• Characteristics: European institutional activity, volatility pickup, trend initiation
• Quality Score: 0.70 (70% of peak quality)
• Strategy Implications: Watch for trend development, breakouts more reliable
• Best For: Initial trend identification, structure breaks
New York Session (08:00-17:00 ET)
• Characteristics: Highest liquidity, US institutional activity, major moves
• Quality Score: 0.95 (95% of peak quality)
• Strategy Implications: Best environment for directional trades
• Best For: Trend continuation, momentum plays
London/NY Overlap (08:00-12:00 ET)
• Characteristics: Peak liquidity, both European and US participants active
• Quality Score: 1.0 (100%—maximum quality)
• Strategy Implications: Highest probability for successful breakouts and trends
• Best For: All signal types—this is prime time
Off-Hours
• Characteristics: Thin liquidity, erratic price action, gaps possible
• Quality Score: 0.30 (30% of peak quality)
• Strategy Implications: Avoid new positions, wider stops if holding
• Best For: Waiting
Smart Weekend Detection:
AMWT properly handles the Sunday evening futures open:
// Traditional (broken):
isWeekend = dayofweek == saturday OR dayofweek == sunday
// AMWT (correct):
anySessionActive = not na(asianTime) or not na(londonTime) or not na(nyTime)
isWeekend = calendarWeekend AND NOT anySessionActive
This ensures Sunday 6pm ET (when futures open) correctly shows "Asian Session" rather than "Weekend."
Session Transition Boosts:
Certain session transitions create trading opportunities:
• Asian → London transition: +15% confidence boost (volatility expansion likely)
• London → Overlap transition: +20% confidence boost (peak liquidity approaching)
• Overlap → NY-only transition: -10% confidence adjustment (liquidity declining)
• Any → Off-Hours transition: Signal suppression recommended
📈 TRADE MANAGEMENT SYSTEM
The Signal Spam Problem:
Many indicators generate signal after signal, creating confusion and overtrading. AMWT implements a complete trade lifecycle management system that prevents signal spam and tracks performance.
Trade Lock Mechanism:
Once a signal fires, the system enters a "trade lock" state:
Trade Lock Duration: Configurable (default 30 bars)
Early Exit Conditions:
• TP3 hit (full target reached)
• Stop Loss hit (trade failed)
• Lock expiration (time-based exit)
During lock:
• No new signals of same type displayed
• Opposite signals can override (reversal)
• Trade status tracked in dashboard
Target Levels:
Each signal generates three profit targets based on ATR:
TP1 (Conservative Target)
• Default: 1.0 × ATR
• Purpose: Quick partial profit, reduce risk
• Action: Take 30-40% off position, move stop to breakeven
TP2 (Standard Target)
• Default: 2.5 × ATR
• Purpose: Main profit target
• Action: Take 40-50% off position, trail stop
TP3 (Extended Target)
• Default: 5.0 × ATR
• Purpose: Runner target for trend days
• Action: Close remaining position or continue trailing
Stop Loss:
• Default: 1.9 × ATR from entry
• Purpose: Define maximum risk
• Placement: Below recent swing low (longs) or above recent swing high (shorts)
Invalidation Level:
Beyond stop loss, AMWT calculates an "invalidation" level where the wave hypothesis dies:
invalidation = entry - (ATR × INVALIDATION_MULT × 1.5)
If price reaches invalidation, the current market interpretation is wrong—not just the trade.
Visual Trade Management:
During active trades, AMWT displays:
• Entry arrow with grade label (▲A+, ▼B, etc.)
• TP1, TP2, TP3 horizontal lines in green
• Stop Loss line in red
• Invalidation line in orange (dashed)
• Progress indicator in dashboard
Persistent Execution Markers:
When targets or stops are hit, permanent markers appear:
• TP hit: Green dot with "TP1"/"TP2"/"TP3" label
• SL hit: Red dot with "SL" label
These persist on the chart for review and statistics.
💰 PERFORMANCE TRACKING & STATISTICS
Tracked Metrics:
• Total Trades: Count of all signals that entered trade lock
• Winning Trades: Signals where at least TP1 was reached before SL
• Losing Trades: Signals where SL was hit before any TP
• Win Rate: Winning / Total × 100%
• Total R Profit: Sum of R-multiples from winning trades
• Total R Loss: Sum of R-multiples from losing trades
• Net R: Total R Profit - Total R Loss
Currency Conversion System:
AMWT can display P&L in multiple formats:
R-Multiple (Default)
• Shows risk-normalized returns
• "Net P&L: +4.2R | 78 trades" means 4.2 times initial risk gained over 78 trades
• Best for comparing across different position sizes
Currency Conversion (USD/EUR/GBP/JPY/INR)
• Converts R-multiples to currency based on:
- Dollar Risk Per Trade (user input)
- Tick Value (user input)
- Selected currency
Example Configuration:
Dollar Risk Per Trade: $100
Display Currency: USD
If Net R = +4.2R
Display: Net P&L: +$420.00 | 78 trades
Ticks
• For futures traders who think in ticks
• Converts based on tick value input
Statistics Reset:
Two reset methods:
1. Toggle Reset
• Turn "Reset Statistics" toggle ON then OFF
• Clears all statistics immediately
2. Date-Based Reset
• Set "Reset After Date" (YYYY-MM-DD format)
• Only trades after this date are counted
• Useful for isolating recent performance
🎨 VISUAL FEATURES
Macro Channel:
Dynamic regression-based channel showing market boundaries:
• Upper/lower bounds calculated from swing pivot linear regression
• Adapts to current market structure
• Shows overall trend direction and potential reversal zones
Chop Boxes:
Semi-transparent overlay during high-chop periods:
• Purple/orange coloring indicates dangerous conditions
• Visual reminder to avoid new positions
Confluence Heat Zones:
Background shading indicating setup quality:
• Darker shading = higher confluence
• Lighter shading = lower confluence
• Helps identify optimal entry timing
EMA Ribbon:
Trend visualization via moving average fill:
• EMA 8/21/50 with gradient fill between
• Green fill when bullish aligned
• Red fill when bearish aligned
• Gray when neutral
Absorption Zone Boxes:
Marks potential accumulation/distribution areas:
• High volume + small body = absorption
• Boxes drawn at these levels
• Often act as support/resistance
Liquidity Pool Lines:
BSL/SSL levels with labels:
• Dashed lines at liquidity clusters
• "BSL" label above swing high clusters
• "SSL" label below swing low clusters
Six Professional Themes:
• Quantum: Deep purples and cyans (default)
• Cyberpunk: Neon pinks and blues
• Professional: Muted grays and greens
• Ocean: Blues and teals
• Matrix: Greens and blacks
• Ember: Oranges and reds
🎓 PROFESSIONAL USAGE PROTOCOL
Phase 1: Learning the System (Week 1)
Goal: Understand AMWT concepts and dashboard interpretation
Setup:
• Signal Mode: Balanced
• Display: All features enabled
• Grade Filter: C (see all signals)
Actions:
• Paper trade ONLY—no real money
• Observe HMM state transitions throughout the day
• Note when agents agree vs disagree
• Watch chop detection engage and disengage
• Track which grades produce winners vs losers
Key Learning Questions:
• How often do A+ signals win vs B signals? (Should see clear difference)
• Which agent tends to be right in current market? (Check dashboard)
• When does chop detection save you from bad trades?
• How do signals near liquidity events perform vs signals in vacuum?
Phase 2: Parameter Optimization (Week 2)
Goal: Tune system to your instrument and timeframe
Signal Mode Testing:
• Run 5 days on Aggressive mode (more signals)
• Run 5 days on Conservative mode (fewer signals)
• Compare: Which produces better risk-adjusted returns?
Grade Filter Testing:
• Track A+ only for 20 signals
• Track A and above for 20 signals
• Track B and above for 20 signals
• Compare win rates and expectancy
Chop Threshold Testing:
• Default (80%): Standard filtering
• Try 70%: More aggressive filtering
• Try 90%: Less filtering
• Which produces best results for your instrument?
Phase 3: Strategy Development (Weeks 3-4)
Goal: Develop personal trading rules based on system signals
Position Sizing by Grade:
• A+ grade: 100% position size
• A grade: 75% position size
• B grade: 50% position size
• C grade: 25% position size (or skip)
Session-Based Rules:
• London/NY Overlap: Take all A/A+ signals
• NY Session: Take all A+ signals, selective on A
• Asian Session: Only A+ signals with extra confirmation
• Off-Hours: No new positions
Chop Zone Rules:
• Chop >70%: Reduce position size 50%
• Chop >80%: No new positions
• Chop <50%: Full position size allowed
Phase 4: Live Micro-Sizing (Month 2)
Goal: Validate paper trading results with minimal risk
Setup:
• 10-20% of intended full position size
• Take ONLY A+ signals initially
• Follow trade management religiously
Tracking:
• Log every trade: Entry, Exit, Grade, HMM State, Chop Level, Agent Consensus
• Calculate: Win rate by grade, by session, by chop level
• Compare to paper trading (should be within 15%)
Red Flags:
• Win rate diverges significantly from paper trading: Execution issues
• Consistent losses during certain sessions: Adjust session rules
• Losses cluster when specific agent dominates: Review that agent's logic
Phase 5: Scaling Up (Months 3-6)
Goal: Gradually increase to full position size
Progression:
• Month 3: 25-40% size (if micro-sizing profitable)
• Month 4: 40-60% size
• Month 5: 60-80% size
• Month 6: 80-100% size
Scale-Up Requirements:
• Minimum 30 trades at current size
• Win rate ≥50%
• Net R positive
• No revenge trading incidents
• Emotional control maintained
💡 DEVELOPMENT INSIGHTS
Why HMM Over Simple Indicators:
Early versions used standard indicators (RSI >70 = overbought, etc.). Win rates hovered at 52-55%. The problem: indicators don't capture state. RSI can stay "overbought" for weeks in a strong trend.
The insight: markets exist in states, and state persistence matters more than indicator levels. Implementing HMM with state transition probabilities increased signal quality significantly. The system now knows not just "RSI is high" but "we're in IMPULSE_UP state with 70% probability of staying in IMPULSE_UP."
The Multi-Agent Evolution:
Original version used a single analytical methodology—trend-following. Performance was inconsistent: great in trends, destroyed in ranges. Added mean-reversion agent: now it was inconsistent the other way.
The breakthrough: use multiple agents and let the system learn which works . Thompson Sampling wasn't the first attempt—tried simple averaging, voting, even hard-coded regime switching. Thompson Sampling won because it's mathematically optimal and automatically adapts without manual regime detection.
Chop Detection Revelation:
Chop detection was added almost as an afterthought. "Let's filter out obviously bad conditions." Testing revealed it was the most impactful single feature. Filtering chop zones reduced losing trades by 35% while only reducing total signals by 20%. The insight: avoiding bad trades matters more than finding good ones.
Liquidity Anchoring Discovery:
Watched hundreds of trades. Noticed pattern: signals that fired after liquidity events (stop runs, volume spikes) had significantly higher win rates than signals in quiet markets. Implemented liquidity detection and anchoring. Win rate on liquidity-anchored signals: 68% vs 52% on non-anchored signals.
The Grade System Impact:
Early system had binary signals (fire or don't fire). Adding grading transformed it. Traders could finally match position size to signal quality. A+ signals deserved full size; C signals deserved caution. Just implementing grade-based sizing improved portfolio Sharpe ratio by 0.3.
🚨 LIMITATIONS & CRITICAL ASSUMPTIONS
What AMWT Is NOT:
• NOT a Holy Grail : No system wins every trade. AMWT improves probability, not certainty.
• NOT Fully Automated : AMWT provides signals and analysis; execution requires human judgment.
• NOT News-Proof : Exogenous shocks (FOMC surprises, geopolitical events) invalidate all technical analysis.
• NOT for Scalping : HMM state estimation needs time to develop. Sub-minute timeframes are not appropriate.
Core Assumptions:
1. Markets Have States : Assumes markets transition between identifiable regimes. Violation: Random walk markets with no regime structure.
2. States Are Inferable : Assumes observable indicators reveal hidden states. Violation: Market manipulation creating false signals.
3. History Informs Future : Assumes past agent performance predicts future performance. Violation: Regime changes that invalidate historical patterns.
4. Liquidity Events Matter : Assumes institutional activity creates predictable patterns. Violation: Markets with no institutional participation.
Performs Best On:
• Liquid Futures : ES, NQ, MNQ, MES, CL, GC
• Major Forex Pairs : EUR/USD, GBP/USD, USD/JPY
• Large-Cap Stocks : AAPL, MSFT, TSLA, NVDA (>$5B market cap)
• Liquid Crypto : BTC, ETH on major exchanges
Performs Poorly On:
• Illiquid Instruments : Low volume stocks, exotic pairs
• Very Low Timeframes : Sub-5-minute charts (noise overwhelms signal)
• Binary Event Days : Earnings, FDA approvals, court rulings
• Manipulated Markets : Penny stocks, low-cap altcoins
Known Weaknesses:
• Warmup Period : HMM needs ~50 bars to initialize properly. Early signals may be unreliable.
• Regime Change Lag : Thompson Sampling adapts over time, not instantly. Sudden regime changes may cause short-term underperformance.
• Complexity : More parameters than simple indicators. Requires understanding to use effectively.
⚠️ RISK DISCLOSURE
Trading futures, stocks, options, forex, and cryptocurrencies involves substantial risk of loss and is not suitable for all investors. Adaptive Market Wave Theory, while based on rigorous mathematical frameworks including Hidden Markov Models and multi-armed bandit algorithms, does not guarantee profits and can result in significant losses.
AMWT's methodologies—HMM state estimation, Thompson Sampling agent selection, and confluence-based grading—have theoretical foundations but past performance is not indicative of future results.
Hidden Markov Model assumptions may not hold during:
• Major news events disrupting normal market behavior
• Flash crashes or circuit breaker events
• Low liquidity periods with erratic price action
• Algorithmic manipulation or spoofing
Multi-agent consensus assumes independent analytical perspectives provide edge. Market conditions change. Edges that existed historically can diminish or disappear.
Users must independently validate system performance on their specific instruments, timeframes, and broker execution environment. Paper trade extensively before risking capital. Start with micro position sizing.
Never risk more than you can afford to lose completely. Use proper position sizing. Implement stop losses without exception.
By using this indicator, you acknowledge these risks and accept full responsibility for all trading decisions and outcomes.
"Elliott Wave was a first-order approximation of market phase behavior. AMWT is the second—probabilistic, adaptive, and accountable."
Initial Public Release
Core Engine:
• True Hidden Markov Model with online Baum-Welch learning
• Viterbi algorithm for optimal state sequence decoding
• 6-state market regime classification
Agent System:
• 3-Bandit consensus (Trend, Reversion, Structure)
• Thompson Sampling with true Beta distribution sampling
• Adaptive weight learning based on performance
Signal Generation:
• Quality-based confluence grading (A+/A/B/C)
• Four signal modes (Aggressive/Balanced/Conservative/Institutional)
• Grade-based visual brightness
Chop Detection:
• 5-factor analysis (ADX, Choppiness Index, Range Compression, Channel Position, Volume)
• 7 regime classifications
• Configurable signal suppression threshold
Liquidity:
• Volume spike detection
• Stop run (liquidity sweep) identification
• BSL/SSL pool mapping
• Absorption zone detection
Trade Management:
• Trade lock with configurable duration
• TP1/TP2/TP3 targets
• ATR-based stop loss
• Persistent execution markers
Session Intelligence:
• Asian/London/NY/Overlap detection
• Smart weekend handling (Sunday futures open)
• Session quality scoring
Performance:
• Statistics tracking with reset functionality
• 7 currency display modes
• Win rate and Net R calculation
Visuals:
• Macro channel with linear regression
• Chop boxes
• EMA ribbon
• Liquidity pool lines
• 6 professional themes
Dashboards:
• Main Dashboard: Market State, Consensus, Trade Status, Statistics
• AMWT Advisor : Market Pulse, Agent Matrix, Structure, Watch For
Taking you to school. - Dskyz, Trade with probability. Trade with consensus. Trade with AMWT.
Adaptive Market Wave TheoryAdaptive Market Wave Theory
🌊 CORE INNOVATION: PROBABILISTIC PHASE DETECTION WITH MULTI-AGENT CONSENSUS
Adaptive Market Wave Theory (AMWT) represents a fundamental paradigm shift in how traders approach market phase identification. Rather than counting waves subjectively or drawing static breakout levels, AMWT treats the market as a hidden state machine —using Hidden Markov Models, multi-agent consensus systems, and reinforcement learning algorithms to quantify what traditional methods leave to interpretation.
The Wave Analysis Problem:
Traditional wave counting methodologies (Elliott Wave, harmonic patterns, ABC corrections) share fatal weaknesses that AMWT directly addresses:
1. Non-Falsifiability : Invalid wave counts can always be "recounted" or "adjusted." If your Wave 3 fails, it becomes "Wave 3 of a larger degree" or "actually Wave C." There's no objective failure condition.
2. Observer Bias : Two expert wave analysts examining the same chart routinely reach different conclusions. This isn't a feature—it's a fundamental methodology flaw.
3. No Confidence Measure : Traditional analysis says "This IS Wave 3." But with what probability? 51%? 95%? The binary nature prevents proper position sizing and risk management.
4. Static Rules : Fixed Fibonacci ratios and wave guidelines cannot adapt to changing market regimes. What worked in 2019 may fail in 2024.
5. No Accountability : Wave methodologies rarely track their own performance. There's no feedback loop to improve.
The AMWT Solution:
AMWT addresses each limitation through rigorous mathematical frameworks borrowed from speech recognition, machine learning, and reinforcement learning:
• Non-Falsifiability → Hard Invalidation : Wave hypotheses die permanently when price violates calculated invalidation levels. No recounting allowed.
• Observer Bias → Multi-Agent Consensus : Three independent analytical agents must agree. Single-methodology bias is eliminated.
• No Confidence → Probabilistic States : Every market state has a calculated probability from Hidden Markov Model inference. "72% probability of impulse state" replaces "This is Wave 3."
• Static Rules → Adaptive Learning : Thompson Sampling multi-armed bandits learn which agents perform best in current conditions. The system adapts in real-time.
• No Accountability → Performance Tracking : Comprehensive statistics track every signal's outcome. The system knows its own performance.
The Core Insight:
"Traditional wave analysis asks 'What count is this?' AMWT asks 'What is the probability we are in an impulsive state, with what confidence, confirmed by how many independent methodologies, and anchored to what liquidity event?'"
🔬 THEORETICAL FOUNDATION: HIDDEN MARKOV MODELS
Why Hidden Markov Models?
Markets exist in hidden states that we cannot directly observe—only their effects on price are visible. When the market is in an "impulse up" state, we see rising prices, expanding volume, and trending indicators. But we don't observe the state itself—we infer it from observables.
This is precisely the problem Hidden Markov Models (HMMs) solve. Originally developed for speech recognition (inferring words from sound waves), HMMs excel at estimating hidden states from noisy observations.
HMM Components:
1. Hidden States (S) : The unobservable market conditions
2. Observations (O) : What we can measure (price, volume, indicators)
3. Transition Matrix (A) : Probability of moving between states
4. Emission Matrix (B) : Probability of observations given each state
5. Initial Distribution (π) : Starting state probabilities
AMWT's Six Market States:
State 0: IMPULSE_UP
• Definition: Strong bullish momentum with high participation
• Observable Signatures: Rising prices, expanding volume, RSI >60, price above upper Bollinger Band, MACD histogram positive and rising
• Typical Duration: 5-20 bars depending on timeframe
• What It Means: Institutional buying pressure, trend acceleration phase
State 1: IMPULSE_DN
• Definition: Strong bearish momentum with high participation
• Observable Signatures: Falling prices, expanding volume, RSI <40, price below lower Bollinger Band, MACD histogram negative and falling
• Typical Duration: 5-20 bars (often shorter than bullish impulses—markets fall faster)
• What It Means: Institutional selling pressure, panic or distribution acceleration
State 2: CORRECTION
• Definition: Counter-trend consolidation with declining momentum
• Observable Signatures: Sideways or mild counter-trend movement, contracting volume, RSI returning toward 50, Bollinger Bands narrowing
• Typical Duration: 8-30 bars
• What It Means: Profit-taking, digestion of prior move, potential accumulation for next leg
State 3: ACCUMULATION
• Definition: Base-building near lows where informed participants absorb supply
• Observable Signatures: Price near recent lows but not making new lows, volume spikes on up bars, RSI showing positive divergence, tight range
• Typical Duration: 15-50 bars
• What It Means: Smart money buying from weak hands, preparing for markup phase
State 4: DISTRIBUTION
• Definition: Top-forming near highs where informed participants distribute holdings
• Observable Signatures: Price near recent highs but struggling to advance, volume spikes on down bars, RSI showing negative divergence, widening range
• Typical Duration: 15-50 bars
• What It Means: Smart money selling to late buyers, preparing for markdown phase
State 5: TRANSITION
• Definition: Regime change period with mixed signals and elevated uncertainty
• Observable Signatures: Conflicting indicators, whipsaw price action, no clear momentum, high volatility without direction
• Typical Duration: 5-15 bars
• What It Means: Market deciding next direction, dangerous for directional trades
The Transition Matrix:
The transition matrix A captures the probability of moving from one state to another. AMWT initializes with empirically-derived values then updates online:
From/To IMP_UP IMP_DN CORR ACCUM DIST TRANS
IMP_UP 0.70 0.02 0.20 0.02 0.04 0.02
IMP_DN 0.02 0.70 0.20 0.04 0.02 0.02
CORR 0.15 0.15 0.50 0.10 0.10 0.00
ACCUM 0.30 0.05 0.15 0.40 0.05 0.05
DIST 0.05 0.30 0.15 0.05 0.40 0.05
TRANS 0.20 0.20 0.20 0.15 0.15 0.10
Key Insights from Transition Probabilities:
• Impulse states are sticky (70% self-transition): Once trending, markets tend to continue
• Corrections can transition to either impulse direction (15% each): The next move after correction is uncertain
• Accumulation strongly favors IMP_UP transition (30%): Base-building leads to rallies
• Distribution strongly favors IMP_DN transition (30%): Topping leads to declines
The Viterbi Algorithm:
Given a sequence of observations, how do we find the most likely state sequence? This is the Viterbi algorithm—dynamic programming to find the optimal path through the state space.
Mathematical Formulation:
δ_t(j) = max_i × B_j(O_t)
Where:
δ_t(j) = probability of most likely path ending in state j at time t
A_ij = transition probability from state i to state j
B_j(O_t) = emission probability of observation O_t given state j
AMWT Implementation:
AMWT runs Viterbi over a rolling window (default 50 bars), computing the most likely state sequence and extracting:
• Current state estimate
• State confidence (probability of current state vs alternatives)
• State sequence for pattern detection
Online Learning (Baum-Welch Adaptation):
Unlike static HMMs, AMWT continuously updates its transition and emission matrices based on observed market behavior:
f_onlineUpdateHMM(prev_state, curr_state, observation, decay) =>
// Update transition matrix
A *= decay
A += (1.0 - decay)
// Renormalize row
// Update emission matrix
B *= decay
B += (1.0 - decay)
// Renormalize row
The decay parameter (default 0.85) controls adaptation speed:
• Higher decay (0.95): Slower adaptation, more stable, better for consistent markets
• Lower decay (0.80): Faster adaptation, more reactive, better for regime changes
Why This Matters for Trading:
Traditional indicators give you a number (RSI = 72). AMWT gives you a probabilistic state assessment :
"There is a 78% probability we are in IMPULSE_UP state, with 15% probability of CORRECTION and 7% distributed among other states. The transition matrix suggests 70% chance of remaining in IMPULSE_UP next bar, 20% chance of transitioning to CORRECTION."
This enables:
• Position sizing by confidence : 90% confidence = full size; 60% confidence = half size
• Risk management by transition probability : High correction probability = tighten stops
• Strategy selection by state : IMPULSE = trend-follow; CORRECTION = wait; ACCUMULATION = scale in
🎰 THE 3-BANDIT CONSENSUS SYSTEM
The Multi-Agent Philosophy:
No single analytical methodology works in all market conditions. Trend-following excels in trending markets but gets chopped in ranges. Mean-reversion excels in ranges but gets crushed in trends. Structure-based analysis works when structure is clear but fails in chaotic markets.
AMWT's solution: employ three independent agents , each analyzing the market from a different perspective, then use Thompson Sampling to learn which agents perform best in current conditions.
Agent 1: TREND AGENT
Philosophy : Markets trend. Follow the trend until it ends.
Analytical Components:
• EMA Alignment: EMA8 > EMA21 > EMA50 (bullish) or inverse (bearish)
• MACD Histogram: Direction and rate of change
• Price Momentum: Close relative to ATR-normalized movement
• VWAP Position: Price above/below volume-weighted average price
Signal Generation:
Strong Bull: EMA aligned bull AND MACD histogram > 0 AND momentum > 0.3 AND close > VWAP
→ Signal: +1 (Long), Confidence: 0.75 + |momentum| × 0.4
Moderate Bull: EMA stack bull AND MACD rising AND momentum > 0.1
→ Signal: +1 (Long), Confidence: 0.65 + |momentum| × 0.3
Strong Bear: EMA aligned bear AND MACD histogram < 0 AND momentum < -0.3 AND close < VWAP
→ Signal: -1 (Short), Confidence: 0.75 + |momentum| × 0.4
Moderate Bear: EMA stack bear AND MACD falling AND momentum < -0.1
→ Signal: -1 (Short), Confidence: 0.65 + |momentum| × 0.3
When Trend Agent Excels:
• Trend days (IB extension >1.5x)
• Post-breakout continuation
• Institutional accumulation/distribution phases
When Trend Agent Fails:
• Range-bound markets (ADX <20)
• Chop zones after volatility spikes
• Reversal days at major levels
Agent 2: REVERSION AGENT
Philosophy: Markets revert to mean. Extreme readings reverse.
Analytical Components:
• Bollinger Band Position: Distance from bands, percent B
• RSI Extremes: Overbought (>70) and oversold (<30)
• Stochastic: %K/%D crossovers at extremes
• Band Squeeze: Bollinger Band width contraction
Signal Generation:
Oversold Bounce: BB %B < 0.20 AND RSI < 35 AND Stochastic < 25
→ Signal: +1 (Long), Confidence: 0.70 + (30 - RSI) × 0.01
Overbought Fade: BB %B > 0.80 AND RSI > 65 AND Stochastic > 75
→ Signal: -1 (Short), Confidence: 0.70 + (RSI - 70) × 0.01
Squeeze Fire Bull: Band squeeze ending AND close > upper band
→ Signal: +1 (Long), Confidence: 0.65
Squeeze Fire Bear: Band squeeze ending AND close < lower band
→ Signal: -1 (Short), Confidence: 0.65
When Reversion Agent Excels:
• Rotation days (price stays within IB)
• Range-bound consolidation
• After extended moves without pullback
When Reversion Agent Fails:
• Strong trend days (RSI can stay overbought for days)
• Breakout moves
• News-driven directional moves
Agent 3: STRUCTURE AGENT
Philosophy: Market structure reveals institutional intent. Follow the smart money.
Analytical Components:
• Break of Structure (BOS): Price breaks prior swing high/low
• Change of Character (CHOCH): First break against prevailing trend
• Higher Highs/Higher Lows: Bullish structure
• Lower Highs/Lower Lows: Bearish structure
• Liquidity Sweeps: Stop runs that reverse
Signal Generation:
BOS Bull: Price breaks above prior swing high with momentum
→ Signal: +1 (Long), Confidence: 0.70 + structure_strength × 0.2
CHOCH Bull: First higher low after downtrend, breaking structure
→ Signal: +1 (Long), Confidence: 0.75
BOS Bear: Price breaks below prior swing low with momentum
→ Signal: -1 (Short), Confidence: 0.70 + structure_strength × 0.2
CHOCH Bear: First lower high after uptrend, breaking structure
→ Signal: -1 (Short), Confidence: 0.75
Liquidity Sweep Long: Price sweeps below swing low then reverses strongly
→ Signal: +1 (Long), Confidence: 0.80
Liquidity Sweep Short: Price sweeps above swing high then reverses strongly
→ Signal: -1 (Short), Confidence: 0.80
When Structure Agent Excels:
• After liquidity grabs (stop runs)
• At major swing points
• During institutional accumulation/distribution
When Structure Agent Fails:
• Choppy, structureless markets
• During news events (structure becomes noise)
• Very low timeframes (noise overwhelms structure)
Thompson Sampling: The Bandit Algorithm
With three agents giving potentially different signals, how do we decide which to trust? This is the multi-armed bandit problem —balancing exploitation (using what works) with exploration (testing alternatives).
Thompson Sampling Solution:
Each agent maintains a Beta distribution representing its success/failure history:
Agent success rate modeled as Beta(α, β)
Where:
α = number of successful signals + 1
β = number of failed signals + 1
On Each Bar:
1. Sample from each agent's Beta distribution
2. Weight agent signals by sampled probabilities
3. Combine weighted signals into consensus
4. Update α/β based on trade outcomes
Mathematical Implementation:
// Beta sampling via Gamma ratio method
f_beta_sample(alpha, beta) =>
g1 = f_gamma_sample(alpha)
g2 = f_gamma_sample(beta)
g1 / (g1 + g2)
// Thompson Sampling selection
for each agent:
sampled_prob = f_beta_sample(agent.alpha, agent.beta)
weight = sampled_prob / sum(all_sampled_probs)
consensus += agent.signal × agent.confidence × weight
Why Thompson Sampling?
• Automatic Exploration : Agents with few samples get occasional chances (high variance in Beta distribution)
• Bayesian Optimal : Mathematically proven optimal solution to exploration-exploitation tradeoff
• Uncertainty-Aware : Small sample size = more exploration; large sample size = more exploitation
• Self-Correcting : Poor performers naturally get lower weights over time
Example Evolution:
Day 1 (Initial):
Trend Agent: Beta(1,1) → samples ~0.50 (high uncertainty)
Reversion Agent: Beta(1,1) → samples ~0.50 (high uncertainty)
Structure Agent: Beta(1,1) → samples ~0.50 (high uncertainty)
After 50 Signals:
Trend Agent: Beta(28,23) → samples ~0.55 (moderate confidence)
Reversion Agent: Beta(18,33) → samples ~0.35 (underperforming)
Structure Agent: Beta(32,19) → samples ~0.63 (outperforming)
Result: Structure Agent now receives highest weight in consensus
Consensus Requirements by Mode:
Aggressive Mode:
• Minimum 1/3 agents agreeing
• Consensus threshold: 45%
• Use case: More signals, higher risk tolerance
Balanced Mode:
• Minimum 2/3 agents agreeing
• Consensus threshold: 55%
• Use case: Standard trading
Conservative Mode:
• Minimum 2/3 agents agreeing
• Consensus threshold: 65%
• Use case: Higher quality, fewer signals
Institutional Mode:
• Minimum 2/3 agents agreeing
• Consensus threshold: 75%
• Additional: Session quality >0.65, mode adjustment +0.10
• Use case: Highest quality signals only
🌀 INTELLIGENT CHOP DETECTION ENGINE
The Chop Problem:
Most trading losses occur not from being wrong about direction, but from trading in conditions where direction doesn't exist . Choppy, range-bound markets generate false signals from every methodology—trend-following, mean-reversion, and structure-based alike.
AMWT's chop detection engine identifies these low-probability environments before signals fire, preventing the most damaging trades.
Five-Factor Chop Analysis:
Factor 1: ADX Component (25% weight)
ADX (Average Directional Index) measures trend strength regardless of direction.
ADX < 15: Very weak trend (high chop score)
ADX 15-20: Weak trend (moderate chop score)
ADX 20-25: Developing trend (low chop score)
ADX > 25: Strong trend (minimal chop score)
adx_chop = (i_adxThreshold - adx_val) / i_adxThreshold × 100
Why ADX Works: ADX synthesizes +DI and -DI movements. Low ADX means price is moving but not directionally—the definition of chop.
Factor 2: Choppiness Index (25% weight)
The Choppiness Index measures price efficiency using the ratio of ATR sum to price range:
CI = 100 × LOG10(SUM(ATR, n) / (Highest - Lowest)) / LOG10(n)
CI > 61.8: Choppy (range-bound, inefficient movement)
CI < 38.2: Trending (directional, efficient movement)
CI 38.2-61.8: Transitional
chop_idx_score = (ci_val - 38.2) / (61.8 - 38.2) × 100
Why Choppiness Index Works: In trending markets, price covers distance efficiently (low ATR sum relative to range). In choppy markets, price oscillates wildly but goes nowhere (high ATR sum relative to range).
Factor 3: Range Compression (20% weight)
Compares recent range to longer-term range, detecting volatility squeezes:
recent_range = Highest(20) - Lowest(20)
longer_range = Highest(50) - Lowest(50)
compression = 1 - (recent_range / longer_range)
compression > 0.5: Strong squeeze (potential breakout imminent)
compression < 0.2: No compression (normal volatility)
range_compression_score = compression × 100
Why Range Compression Matters: Compression precedes expansion. High compression = market coiling, preparing for move. Signals during compression often fail because the breakout hasn't occurred yet.
Factor 4: Channel Position (15% weight)
Tracks price position within the macro channel:
channel_position = (close - channel_low) / (channel_high - channel_low)
position 0.4-0.6: Center of channel (indecision zone)
position <0.2 or >0.8: Near extremes (potential reversal or breakout)
channel_chop = abs(0.5 - channel_position) < 0.15 ? high_score : low_score
Why Channel Position Matters: Price in the middle of a range is in "no man's land"—equally likely to go either direction. Signals in the channel center have lower probability.
Factor 5: Volume Quality (15% weight)
Assesses volume relative to average:
vol_ratio = volume / SMA(volume, 20)
vol_ratio < 0.7: Low volume (lack of conviction)
vol_ratio 0.7-1.3: Normal volume
vol_ratio > 1.3: High volume (conviction present)
volume_chop = vol_ratio < 0.8 ? (1 - vol_ratio) × 100 : 0
Why Volume Quality Matters: Low volume moves lack institutional participation. These moves are more likely to reverse or stall.
Combined Chop Intensity:
chopIntensity = (adx_chop × 0.25) + (chop_idx_score × 0.25) +
(range_compression_score × 0.20) + (channel_chop × 0.15) +
(volume_chop × i_volumeChopWeight × 0.15)
Regime Classifications:
Based on chop intensity and component analysis:
• Strong Trend (0-20%): ADX >30, clear directional momentum, trade aggressively
• Trending (20-35%): ADX >20, moderate directional bias, trade normally
• Transitioning (35-50%): Mixed signals, regime change possible, reduce size
• Mid-Range (50-60%): Price trapped in channel center, avoid new positions
• Ranging (60-70%): Low ADX, price oscillating within bounds, fade extremes only
• Compression (70-80%): Volatility squeeze, expansion imminent, wait for breakout
• Strong Chop (80-100%): Multiple chop factors aligned, avoid trading entirely
Signal Suppression:
When chop intensity exceeds the configurable threshold (default 80%), signals are suppressed entirely. The dashboard displays "⚠️ CHOP ZONE" with the current regime classification.
Chop Box Visualization:
When chop is detected, AMWT draws a semi-transparent box on the chart showing the chop zone. This visual reminder helps traders avoid entering positions during unfavorable conditions.
💧 LIQUIDITY ANCHORING SYSTEM
The Liquidity Concept:
Markets move from liquidity pool to liquidity pool. Stop losses cluster at predictable locations—below swing lows (buy stops become sell orders when triggered) and above swing highs (sell stops become buy orders when triggered). Institutions know where these clusters are and often engineer moves to trigger them before reversing.
AMWT identifies and tracks these liquidity events, using them as anchors for signal confidence.
Liquidity Event Types:
Type 1: Volume Spikes
Definition: Volume > SMA(volume, 20) × i_volThreshold (default 2.8x)
Interpretation: Sudden volume surge indicates institutional activity
• Near swing low + reversal: Likely accumulation
• Near swing high + reversal: Likely distribution
• With continuation: Institutional conviction in direction
Type 2: Stop Runs (Liquidity Sweeps)
Definition: Price briefly exceeds swing high/low then reverses within N bars
Detection:
• Price breaks above recent swing high (triggering buy stops)
• Then closes back below that high within 3 bars
• Signal: Bullish stop run complete, reversal likely
Or inverse for bearish:
• Price breaks below recent swing low (triggering sell stops)
• Then closes back above that low within 3 bars
• Signal: Bearish stop run complete, reversal likely
Type 3: Absorption Events
Definition: High volume with small candle body
Detection:
• Volume > 2x average
• Candle body < 30% of candle range
• Interpretation: Large orders being filled without moving price
• Implication: Accumulation (at lows) or distribution (at highs)
Type 4: BSL/SSL Pools (Buy-Side/Sell-Side Liquidity)
BSL (Buy-Side Liquidity):
• Cluster of swing highs within ATR proximity
• Stop losses from shorts sit above these highs
• Breaking BSL triggers short covering (fuel for rally)
SSL (Sell-Side Liquidity):
• Cluster of swing lows within ATR proximity
• Stop losses from longs sit below these lows
• Breaking SSL triggers long liquidation (fuel for decline)
Liquidity Pool Mapping:
AMWT continuously scans for and maps liquidity pools:
// Detect swing highs/lows using pivot function
swing_high = ta.pivothigh(high, 5, 5)
swing_low = ta.pivotlow(low, 5, 5)
// Track recent swing points
if not na(swing_high)
bsl_levels.push(swing_high)
if not na(swing_low)
ssl_levels.push(swing_low)
// Display on chart with labels
Confluence Scoring Integration:
When signals fire near identified liquidity events, confluence scoring increases:
• Signal near volume spike: +10% confidence
• Signal after liquidity sweep: +15% confidence
• Signal at BSL/SSL pool: +10% confidence
• Signal aligned with absorption zone: +10% confidence
Why Liquidity Anchoring Matters:
Signals "in a vacuum" have lower probability than signals anchored to institutional activity. A long signal after a liquidity sweep below swing lows has trapped shorts providing fuel. A long signal in the middle of nowhere has no such catalyst.
📊 SIGNAL GRADING SYSTEM
The Quality Problem:
Not all signals are created equal. A signal with 6/6 factors aligned is fundamentally different from a signal with 3/6 factors aligned. Traditional indicators treat them the same. AMWT grades every signal based on confluence.
Confluence Components (100 points total):
1. Bandit Consensus Strength (25 points)
consensus_str = weighted average of agent confidences
score = consensus_str × 25
Example:
Trend Agent: +1 signal, 0.80 confidence, 0.35 weight
Reversion Agent: 0 signal, 0.50 confidence, 0.25 weight
Structure Agent: +1 signal, 0.75 confidence, 0.40 weight
Weighted consensus = (0.80×0.35 + 0×0.25 + 0.75×0.40) / (0.35 + 0.40) = 0.77
Score = 0.77 × 25 = 19.25 points
2. HMM State Confidence (15 points)
score = hmm_confidence × 15
Example:
HMM reports 82% probability of IMPULSE_UP
Score = 0.82 × 15 = 12.3 points
3. Session Quality (15 points)
Session quality varies by time:
• London/NY Overlap: 1.0 (15 points)
• New York Session: 0.95 (14.25 points)
• London Session: 0.70 (10.5 points)
• Asian Session: 0.40 (6 points)
• Off-Hours: 0.30 (4.5 points)
• Weekend: 0.10 (1.5 points)
4. Energy/Participation (10 points)
energy = (realized_vol / avg_vol) × 0.4 + (range / ATR) × 0.35 + (volume / avg_volume) × 0.25
score = min(energy, 1.0) × 10
5. Volume Confirmation (10 points)
if volume > SMA(volume, 20) × 1.5:
score = 10
else if volume > SMA(volume, 20):
score = 5
else:
score = 0
6. Structure Alignment (10 points)
For long signals:
• Bullish structure (HH + HL): 10 points
• Higher low only: 6 points
• Neutral structure: 3 points
• Bearish structure: 0 points
Inverse for short signals
7. Trend Alignment (10 points)
For long signals:
• Price > EMA21 > EMA50: 10 points
• Price > EMA21: 6 points
• Neutral: 3 points
• Against trend: 0 points
8. Entry Trigger Quality (5 points)
• Strong trigger (multiple confirmations): 5 points
• Moderate trigger (single confirmation): 3 points
• Weak trigger (marginal): 1 point
Grade Scale:
Total Score → Grade
85-100 → A+ (Exceptional—all factors aligned)
70-84 → A (Strong—high probability)
55-69 → B (Acceptable—proceed with caution)
Below 55 → C (Marginal—filtered by default)
Grade-Based Signal Brightness:
Signal arrows on the chart have transparency based on grade:
• A+: Full brightness (alpha = 0)
• A: Slight fade (alpha = 15)
• B: Moderate fade (alpha = 35)
• C: Significant fade (alpha = 55)
This visual hierarchy helps traders instantly identify signal quality.
Minimum Grade Filter:
Configurable filter (default: C) sets the minimum grade for signal display:
• Set to "A" for only highest-quality signals
• Set to "B" for moderate selectivity
• Set to "C" for all signals (maximum quantity)
🕐 SESSION INTELLIGENCE
Why Sessions Matter:
Markets behave differently at different times. The London open is fundamentally different from the Asian lunch hour. AMWT incorporates session-aware logic to optimize signal quality.
Session Definitions:
Asian Session (18:00-03:00 ET)
• Characteristics: Lower volatility, range-bound tendency, fewer institutional participants
• Quality Score: 0.40 (40% of peak quality)
• Strategy Implications: Fade extremes, expect ranges, smaller position sizes
• Best For: Mean-reversion setups, accumulation/distribution identification
London Session (03:00-12:00 ET)
• Characteristics: European institutional activity, volatility pickup, trend initiation
• Quality Score: 0.70 (70% of peak quality)
• Strategy Implications: Watch for trend development, breakouts more reliable
• Best For: Initial trend identification, structure breaks
New York Session (08:00-17:00 ET)
• Characteristics: Highest liquidity, US institutional activity, major moves
• Quality Score: 0.95 (95% of peak quality)
• Strategy Implications: Best environment for directional trades
• Best For: Trend continuation, momentum plays
London/NY Overlap (08:00-12:00 ET)
• Characteristics: Peak liquidity, both European and US participants active
• Quality Score: 1.0 (100%—maximum quality)
• Strategy Implications: Highest probability for successful breakouts and trends
• Best For: All signal types—this is prime time
Off-Hours
• Characteristics: Thin liquidity, erratic price action, gaps possible
• Quality Score: 0.30 (30% of peak quality)
• Strategy Implications: Avoid new positions, wider stops if holding
• Best For: Waiting
Smart Weekend Detection:
AMWT properly handles the Sunday evening futures open:
// Traditional (broken):
isWeekend = dayofweek == saturday OR dayofweek == sunday
// AMWT (correct):
anySessionActive = not na(asianTime) or not na(londonTime) or not na(nyTime)
isWeekend = calendarWeekend AND NOT anySessionActive
This ensures Sunday 6pm ET (when futures open) correctly shows "Asian Session" rather than "Weekend."
Session Transition Boosts:
Certain session transitions create trading opportunities:
• Asian → London transition: +15% confidence boost (volatility expansion likely)
• London → Overlap transition: +20% confidence boost (peak liquidity approaching)
• Overlap → NY-only transition: -10% confidence adjustment (liquidity declining)
• Any → Off-Hours transition: Signal suppression recommended
📈 TRADE MANAGEMENT SYSTEM
The Signal Spam Problem:
Many indicators generate signal after signal, creating confusion and overtrading. AMWT implements a complete trade lifecycle management system that prevents signal spam and tracks performance.
Trade Lock Mechanism:
Once a signal fires, the system enters a "trade lock" state:
Trade Lock Duration: Configurable (default 30 bars)
Early Exit Conditions:
• TP3 hit (full target reached)
• Stop Loss hit (trade failed)
• Lock expiration (time-based exit)
During lock:
• No new signals of same type displayed
• Opposite signals can override (reversal)
• Trade status tracked in dashboard
Target Levels:
Each signal generates three profit targets based on ATR:
TP1 (Conservative Target)
• Default: 1.0 × ATR
• Purpose: Quick partial profit, reduce risk
• Action: Take 30-40% off position, move stop to breakeven
TP2 (Standard Target)
• Default: 2.5 × ATR
• Purpose: Main profit target
• Action: Take 40-50% off position, trail stop
TP3 (Extended Target)
• Default: 5.0 × ATR
• Purpose: Runner target for trend days
• Action: Close remaining position or continue trailing
Stop Loss:
• Default: 1.9 × ATR from entry
• Purpose: Define maximum risk
• Placement: Below recent swing low (longs) or above recent swing high (shorts)
Invalidation Level:
Beyond stop loss, AMWT calculates an "invalidation" level where the wave hypothesis dies:
invalidation = entry - (ATR × INVALIDATION_MULT × 1.5)
If price reaches invalidation, the current market interpretation is wrong—not just the trade.
Visual Trade Management:
During active trades, AMWT displays:
• Entry arrow with grade label (▲A+, ▼B, etc.)
• TP1, TP2, TP3 horizontal lines in green
• Stop Loss line in red
• Invalidation line in orange (dashed)
• Progress indicator in dashboard
Persistent Execution Markers:
When targets or stops are hit, permanent markers appear:
• TP hit: Green dot with "TP1"/"TP2"/"TP3" label
• SL hit: Red dot with "SL" label
These persist on the chart for review and statistics.
💰 PERFORMANCE TRACKING & STATISTICS
Tracked Metrics:
• Total Trades: Count of all signals that entered trade lock
• Winning Trades: Signals where at least TP1 was reached before SL
• Losing Trades: Signals where SL was hit before any TP
• Win Rate: Winning / Total × 100%
• Total R Profit: Sum of R-multiples from winning trades
• Total R Loss: Sum of R-multiples from losing trades
• Net R: Total R Profit - Total R Loss
Currency Conversion System:
AMWT can display P&L in multiple formats:
R-Multiple (Default)
• Shows risk-normalized returns
• "Net P&L: +4.2R | 78 trades" means 4.2 times initial risk gained over 78 trades
• Best for comparing across different position sizes
Currency Conversion (USD/EUR/GBP/JPY/INR)
• Converts R-multiples to currency based on:
- Dollar Risk Per Trade (user input)
- Tick Value (user input)
- Selected currency
Example Configuration:
Dollar Risk Per Trade: $100
Display Currency: USD
If Net R = +4.2R
Display: Net P&L: +$420.00 | 78 trades
Ticks
• For futures traders who think in ticks
• Converts based on tick value input
Statistics Reset:
Two reset methods:
1. Toggle Reset
• Turn "Reset Statistics" toggle ON then OFF
• Clears all statistics immediately
2. Date-Based Reset
• Set "Reset After Date" (YYYY-MM-DD format)
• Only trades after this date are counted
• Useful for isolating recent performance
🎨 VISUAL FEATURES
Macro Channel:
Dynamic regression-based channel showing market boundaries:
• Upper/lower bounds calculated from swing pivot linear regression
• Adapts to current market structure
• Shows overall trend direction and potential reversal zones
Chop Boxes:
Semi-transparent overlay during high-chop periods:
• Purple/orange coloring indicates dangerous conditions
• Visual reminder to avoid new positions
Confluence Heat Zones:
Background shading indicating setup quality:
• Darker shading = higher confluence
• Lighter shading = lower confluence
• Helps identify optimal entry timing
EMA Ribbon:
Trend visualization via moving average fill:
• EMA 8/21/50 with gradient fill between
• Green fill when bullish aligned
• Red fill when bearish aligned
• Gray when neutral
Absorption Zone Boxes:
Marks potential accumulation/distribution areas:
• High volume + small body = absorption
• Boxes drawn at these levels
• Often act as support/resistance
Liquidity Pool Lines:
BSL/SSL levels with labels:
• Dashed lines at liquidity clusters
• "BSL" label above swing high clusters
• "SSL" label below swing low clusters
Six Professional Themes:
• Quantum: Deep purples and cyans (default)
• Cyberpunk: Neon pinks and blues
• Professional: Muted grays and greens
• Ocean: Blues and teals
• Matrix: Greens and blacks
• Ember: Oranges and reds
🎓 PROFESSIONAL USAGE PROTOCOL
Phase 1: Learning the System (Week 1)
Goal: Understand AMWT concepts and dashboard interpretation
Setup:
• Signal Mode: Balanced
• Display: All features enabled
• Grade Filter: C (see all signals)
Actions:
• Paper trade ONLY—no real money
• Observe HMM state transitions throughout the day
• Note when agents agree vs disagree
• Watch chop detection engage and disengage
• Track which grades produce winners vs losers
Key Learning Questions:
• How often do A+ signals win vs B signals? (Should see clear difference)
• Which agent tends to be right in current market? (Check dashboard)
• When does chop detection save you from bad trades?
• How do signals near liquidity events perform vs signals in vacuum?
Phase 2: Parameter Optimization (Week 2)
Goal: Tune system to your instrument and timeframe
Signal Mode Testing:
• Run 5 days on Aggressive mode (more signals)
• Run 5 days on Conservative mode (fewer signals)
• Compare: Which produces better risk-adjusted returns?
Grade Filter Testing:
• Track A+ only for 20 signals
• Track A and above for 20 signals
• Track B and above for 20 signals
• Compare win rates and expectancy
Chop Threshold Testing:
• Default (80%): Standard filtering
• Try 70%: More aggressive filtering
• Try 90%: Less filtering
• Which produces best results for your instrument?
Phase 3: Strategy Development (Weeks 3-4)
Goal: Develop personal trading rules based on system signals
Position Sizing by Grade:
• A+ grade: 100% position size
• A grade: 75% position size
• B grade: 50% position size
• C grade: 25% position size (or skip)
Session-Based Rules:
• London/NY Overlap: Take all A/A+ signals
• NY Session: Take all A+ signals, selective on A
• Asian Session: Only A+ signals with extra confirmation
• Off-Hours: No new positions
Chop Zone Rules:
• Chop >70%: Reduce position size 50%
• Chop >80%: No new positions
• Chop <50%: Full position size allowed
Phase 4: Live Micro-Sizing (Month 2)
Goal: Validate paper trading results with minimal risk
Setup:
• 10-20% of intended full position size
• Take ONLY A+ signals initially
• Follow trade management religiously
Tracking:
• Log every trade: Entry, Exit, Grade, HMM State, Chop Level, Agent Consensus
• Calculate: Win rate by grade, by session, by chop level
• Compare to paper trading (should be within 15%)
Red Flags:
• Win rate diverges significantly from paper trading: Execution issues
• Consistent losses during certain sessions: Adjust session rules
• Losses cluster when specific agent dominates: Review that agent's logic
Phase 5: Scaling Up (Months 3-6)
Goal: Gradually increase to full position size
Progression:
• Month 3: 25-40% size (if micro-sizing profitable)
• Month 4: 40-60% size
• Month 5: 60-80% size
• Month 6: 80-100% size
Scale-Up Requirements:
• Minimum 30 trades at current size
• Win rate ≥50%
• Net R positive
• No revenge trading incidents
• Emotional control maintained
💡 DEVELOPMENT INSIGHTS
Why HMM Over Simple Indicators:
Early versions used standard indicators (RSI >70 = overbought, etc.). Win rates hovered at 52-55%. The problem: indicators don't capture state. RSI can stay "overbought" for weeks in a strong trend.
The insight: markets exist in states, and state persistence matters more than indicator levels. Implementing HMM with state transition probabilities increased signal quality significantly. The system now knows not just "RSI is high" but "we're in IMPULSE_UP state with 70% probability of staying in IMPULSE_UP."
The Multi-Agent Evolution:
Original version used a single analytical methodology—trend-following. Performance was inconsistent: great in trends, destroyed in ranges. Added mean-reversion agent: now it was inconsistent the other way.
The breakthrough: use multiple agents and let the system learn which works . Thompson Sampling wasn't the first attempt—tried simple averaging, voting, even hard-coded regime switching. Thompson Sampling won because it's mathematically optimal and automatically adapts without manual regime detection.
Chop Detection Revelation:
Chop detection was added almost as an afterthought. "Let's filter out obviously bad conditions." Testing revealed it was the most impactful single feature. Filtering chop zones reduced losing trades by 35% while only reducing total signals by 20%. The insight: avoiding bad trades matters more than finding good ones.
Liquidity Anchoring Discovery:
Watched hundreds of trades. Noticed pattern: signals that fired after liquidity events (stop runs, volume spikes) had significantly higher win rates than signals in quiet markets. Implemented liquidity detection and anchoring. Win rate on liquidity-anchored signals: 68% vs 52% on non-anchored signals.
The Grade System Impact:
Early system had binary signals (fire or don't fire). Adding grading transformed it. Traders could finally match position size to signal quality. A+ signals deserved full size; C signals deserved caution. Just implementing grade-based sizing improved portfolio Sharpe ratio by 0.3.
🚨 LIMITATIONS & CRITICAL ASSUMPTIONS
What AMWT Is NOT:
• NOT a Holy Grail : No system wins every trade. AMWT improves probability, not certainty.
• NOT Fully Automated : AMWT provides signals and analysis; execution requires human judgment.
• NOT News-Proof : Exogenous shocks (FOMC surprises, geopolitical events) invalidate all technical analysis.
• NOT for Scalping : HMM state estimation needs time to develop. Sub-minute timeframes are not appropriate.
Core Assumptions:
1. Markets Have States : Assumes markets transition between identifiable regimes. Violation: Random walk markets with no regime structure.
2. States Are Inferable : Assumes observable indicators reveal hidden states. Violation: Market manipulation creating false signals.
3. History Informs Future : Assumes past agent performance predicts future performance. Violation: Regime changes that invalidate historical patterns.
4. Liquidity Events Matter : Assumes institutional activity creates predictable patterns. Violation: Markets with no institutional participation.
Performs Best On:
• Liquid Futures : ES, NQ, MNQ, MES, CL, GC
• Major Forex Pairs : EUR/USD, GBP/USD, USD/JPY
• Large-Cap Stocks : AAPL, MSFT, TSLA, NVDA (>$5B market cap)
• Liquid Crypto : BTC, ETH on major exchanges
Performs Poorly On:
• Illiquid Instruments : Low volume stocks, exotic pairs
• Very Low Timeframes : Sub-5-minute charts (noise overwhelms signal)
• Binary Event Days : Earnings, FDA approvals, court rulings
• Manipulated Markets : Penny stocks, low-cap altcoins
Known Weaknesses:
• Warmup Period : HMM needs ~50 bars to initialize properly. Early signals may be unreliable.
• Regime Change Lag : Thompson Sampling adapts over time, not instantly. Sudden regime changes may cause short-term underperformance.
• Complexity : More parameters than simple indicators. Requires understanding to use effectively.
⚠️ RISK DISCLOSURE
Trading futures, stocks, options, forex, and cryptocurrencies involves substantial risk of loss and is not suitable for all investors. Adaptive Market Wave Theory, while based on rigorous mathematical frameworks including Hidden Markov Models and multi-armed bandit algorithms, does not guarantee profits and can result in significant losses.
AMWT's methodologies—HMM state estimation, Thompson Sampling agent selection, and confluence-based grading—have theoretical foundations but past performance is not indicative of future results.
Hidden Markov Model assumptions may not hold during:
• Major news events disrupting normal market behavior
• Flash crashes or circuit breaker events
• Low liquidity periods with erratic price action
• Algorithmic manipulation or spoofing
Multi-agent consensus assumes independent analytical perspectives provide edge. Market conditions change. Edges that existed historically can diminish or disappear.
Users must independently validate system performance on their specific instruments, timeframes, and broker execution environment. Paper trade extensively before risking capital. Start with micro position sizing.
Never risk more than you can afford to lose completely. Use proper position sizing. Implement stop losses without exception.
By using this indicator, you acknowledge these risks and accept full responsibility for all trading decisions and outcomes.
"Elliott Wave was a first-order approximation of market phase behavior. AMWT is the second—probabilistic, adaptive, and accountable."
Initial Public Release
Core Engine:
• True Hidden Markov Model with online Baum-Welch learning
• Viterbi algorithm for optimal state sequence decoding
• 6-state market regime classification
Agent System:
• 3-Bandit consensus (Trend, Reversion, Structure)
• Thompson Sampling with true Beta distribution sampling
• Adaptive weight learning based on performance
Signal Generation:
• Quality-based confluence grading (A+/A/B/C)
• Four signal modes (Aggressive/Balanced/Conservative/Institutional)
• Grade-based visual brightness
Chop Detection:
• 5-factor analysis (ADX, Choppiness Index, Range Compression, Channel Position, Volume)
• 7 regime classifications
• Configurable signal suppression threshold
Liquidity:
• Volume spike detection
• Stop run (liquidity sweep) identification
• BSL/SSL pool mapping
• Absorption zone detection
Trade Management:
• Trade lock with configurable duration
• TP1/TP2/TP3 targets
• ATR-based stop loss
• Persistent execution markers
Session Intelligence:
• Asian/London/NY/Overlap detection
• Smart weekend handling (Sunday futures open)
• Session quality scoring
Performance:
• Statistics tracking with reset functionality
• 7 currency display modes
• Win rate and Net R calculation
Visuals:
• Macro channel with linear regression
• Chop boxes
• EMA ribbon
• Liquidity pool lines
• 6 professional themes
Dashboards:
• Main Dashboard: Market State, Consensus, Trade Status, Statistics
📋 AMWT vs AMWT-PRO:
This version includes all core AMWT functionality:
✓ Full Hidden Markov Model state estimation
✓ 3-Bandit Thompson Sampling consensus system
✓ Complete 5-factor chop detection engine
✓ All four signal modes
✓ Full trade management with TP/SL tracking
✓ Main dashboard with complete statistics
✓ All visual features (channels, zones, pools)
✓ Identical signal generation to PRO
✓ Six professional themes
✓ Full alert system
The PRO version adds the AMWT Advisor panel—a secondary dashboard providing:
• Real-time Market Pulse situation assessment
• Agent Matrix visualization (individual agent votes)
• Structure analysis breakdown
• "Watch For" upcoming setups
• Action Command coaching
Both versions generate identical signals . The Advisor provides additional guidance for interpreting those signals.
Taking you to school. - Dskyz, Trade with probability. Trade with consensus. Trade with AMWT.






















