Z-score RegimeThis indicator compares equity behaviour and credit behaviour by converting both into z-scores. It calculates the z-score of SPX and the z-score of a credit proxy based on the HYG divided by LQD ratio.
SPX z-score shows how far the S&P 500 is from its rolling average.
Credit z-score shows how risk-seeking or risk-averse credit markets are by comparing high-yield bonds to investment-grade bonds.
When both z-scores move together, the market is aligned in either risk-on or risk-off conditions.
When SPX z-score is strong but credit z-score is weak, this may signal equity strength that is not supported by credit markets.
When credit z-score is stronger than SPX z-score, credit markets may be leading risk appetite.
The indicator plots the two z-scores as simple lines for clear regime comparison.
Indicadores y estrategias
Probability Cone█ Overview:
Probability Cone is based on the Expected Move . While Expected Move only shows the historical value band on every bar, probability panel extend the period in the future and plot a cone or curve shape of the probable range. It plots the range from bar 1 all the way to bar 31.
In this model, we assume asset price follows a log-normal distribution and the log return follows a normal distribution.
Note: Normal distribution is just an assumption; it's not the real distribution of return.
The area of probability range is based on an inverse normal cumulative distribution function. The inverse cumulative distribution gives the range of price for given input probability. People can adjust the range by adjusting the standard deviation in the settings. The probability of the entered standard deviation will be shown at the edges of the probability cone.
The shown 68% and 95% probabilities correspond to the full range between the two blue lines of the cone (68%) and the two purple lines of the cone (95%). The probabilities suggest the % of outcomes or data that are expected to lie within this range. It does not suggest the probability of reaching those price levels.
Note: All these probabilities are based on the normal distribution assumption for returns. It's the estimated probability, not the actual probability.
█ Volatility Models :
Sample SD : traditional sample standard deviation, most commonly used, use (n-1) period to adjust the bias
Parkinson : Uses High/ Low to estimate volatility, assumes continuous no gap, zero mean no drift, 5 times more efficient than Close to Close
Garman Klass : Uses OHLC volatility, zero drift, no jumps, about 7 times more efficient
Yangzhang Garman Klass Extension : Added jump calculation in Garman Klass, has the same value as Garman Klass on markets with no gaps.
about 8 x efficient
Rogers : Uses OHLC, Assume non-zero mean volatility, handles drift, does not handle jump 8 x efficient.
EWMA : Exponentially Weighted Volatility. Weight recently volatility more, more reactive volatility better in taking account of volatility autocorrelation and cluster.
YangZhang : Uses OHLC, combines Rogers and Garmand Klass, handles both drift and jump, 14 times efficient, alpha is the constant to weight rogers volatility to minimize variance.
Median absolute deviation : It's a more direct way of measuring volatility. It measures volatility without using Standard deviation. The MAD used here is adjusted to be an unbiased estimator.
You can learn more about each of the volatility models in out Historical Volatility Estimators indicator.
█ How to use
Volatility Period is the sample size for variance estimation. A longer period makes the estimation range more stable less reactive to recent price. Distribution is more significant on larger sample size. A short period makes the range more responsive to recent price. Might be better for high volatility clusters.
People usually assume the mean of returns to be zero. To be more accurate, we can consider the drift in price from calculating the geometric mean of returns. Drift happens in the long run, so short lookback periods are not recommended.
The shape of the cone will be skewed and have a directional bias when the length of mean is short. It might be more adaptive to the current price or trend, but more accurate estimation should use a longer period for the mean.
Using a short look back for mean will make the cone having a directional bias.
When we are estimating the future range for time > 1, we typically assume constant volatility and the returns to be independent and identically distributed. We scale the volatility in term of time to get future range. However, when there's autocorrelation in returns( when returns are not independent), the assumption fails to take account of this effect. Volatility scaled with autocorrelation is required when returns are not iid. We use an AR(1) model to scale the first-order autocorrelation to adjust the effect. Returns typically don't have significant autocorrelation. Adjustment for autocorrelation is not usually needed. A long length is recommended in Autocorrelation calculation.
Note: The significance of autocorrelation can be checked on an ACF indicator.
ACF
Time back settings shift the estimation period back by the input number. It's the origin of when the probability cone start to estimation it's range.
E.g., When time back = 5, the probability cone start its prediction interval estimation from 5 bars ago. So for time back = 5 , it estimates the probability range from 5 bars ago to X number of bars in the future, specified by the Forecast Period (max 1000).
█ Warnings:
People should not blindly trust the probability. They should be aware of the risk evolves by using the normal distribution assumption. The real return has skewness and high kurtosis. While skewness is not very significant, the high kurtosis should be noticed. The Real returns have much fatter tails than the normal distribution, which also makes the peak higher. This property makes the tail ranges such as range more than 2SD highly underestimate the actual range and the body such as 1 SD slightly overestimate the actual range. For ranges more than 2SD, people shouldn't trust them. They should beware of extreme events in the tails.
The uncertainty in future bars makes the range wider. The overestimate effect of the body is partly neutralized when it's extended to future bars. We encourage people who use this indicator to further investigate the Historical Volatility Estimators , Fast Autocorrelation Estimator , Expected Move and especially the Linear Moments Indicator .
The probability is only for the closing price, not wicks. It only estimates the probability of the price closing at this level, not in between.
SMC IndicatorTitle: Smart Money Concepts Structure & ZigZag
Description: Master market structure with this precision Smart Money Concepts (SMC) tool. Unlike standard ZigZag indicators that repaint (change the past) as price moves, this indicator utilizes a robust, non-repainting detection engine to objectively map Swing Highs, Swing Lows, and structural breaks.
It is designed to help traders identify the true trend direction and spot critical reversal points without the confusion of disappearing signals.
How It Works:
1. Non-Repainting Pivots: The core of this indicator is a custom ZigZag algorithm that "locks in" Swing Highs (H) and Swing Lows (L) only after they are statistically confirmed by a user-defined deviation. Once a label appears, it stays there.
2. Break of Structure (BoS):
Signal: Trend Continuation.
Logic: Triggers when price breaks and closes past a confirmed pivot in the direction of the current trend.
Use Case: confirms the trend is healthy and identifies opportunities to join the move.
3. Change of Character (CHoCH):
Signal: Trend Reversal.
Logic: Triggers when price breaks a key pivot in the opposite direction of the current trend.
Use Case: Serves as an early warning signal that the trend may be ending or reversing.
4. The Ghost Line: A dotted line connects the last confirmed pivot to the current live price. This helps you visualize the developing leg of the structure before it is confirmed.
Visual Guide:
🔵 Blue Label: Bullish Break of Structure (BoS).
🔴 Maroon Label: Bearish Break of Structure (BoS).
🟢 Aqua Label: Bullish Change of Character (CHoCH).
🟠 Orange Label: Bearish Change of Character (CHoCH).
H / L: Confirmed Swing Highs and Lows.
Features:
Precision Tuning: "Deviation %" input supports values as low as 0.01 for scalping on 1-minute charts.
Smart Tooltips: Hover over settings to see recommended values for Daily, Hourly, and Minute timeframes.
Clean Visuals: Uses text-only labels to keep the chart clutter-free.
Alerts: Fully alert-enabled for Bullish/Bearish BoS and CHoCH signals.
Credits: This script is built upon classic Market Structure theory and Smart Money Concepts (SMC), optimized for real-time reliability.
Ultimate RSI [captainua]Ultimate RSI
Overview
This indicator combines multiple RSI calculations with volume analysis, divergence detection, and trend filtering to provide a comprehensive RSI-based trading system. The script calculates RSI using three different periods (6, 14, 24) and applies various smoothing methods to reduce noise while maintaining responsiveness. The combination of these features creates a multi-layered confirmation system that reduces false signals by requiring alignment across multiple indicators and timeframes.
The script includes optimized configuration presets for instant setup: Scalping, Day Trading, Swing Trading, and Position Trading. Simply select a preset to instantly configure all settings for your trading style, or use Custom mode for full manual control. All settings include automatic input validation to prevent configuration errors and ensure optimal performance.
Configuration Presets
The script includes preset configurations optimized for different trading styles, allowing you to instantly configure the indicator for your preferred trading approach. Simply select a preset from the "Configuration Preset" dropdown menu:
- Scalping: Optimized for fast-paced trading with shorter RSI periods (4, 7, 9) and minimal smoothing. Noise reduction is automatically disabled, and momentum confirmation is disabled to allow faster signal generation. Designed for quick entries and exits in volatile markets.
- Day Trading: Balanced configuration for intraday trading with moderate RSI periods (6, 9, 14) and light smoothing. Momentum confirmation is enabled for better signal quality. Ideal for day trading strategies requiring timely but accurate signals.
- Swing Trading: Configured for medium-term positions with standard RSI periods (14, 14, 21) and moderate smoothing. Provides smoother signals suitable for swing trading timeframes. All noise reduction features remain active.
- Position Trading: Optimized for longer-term trades with extended RSI periods (24, 21, 28) and heavier smoothing. Filters are configured for highest-quality signals. Best for position traders holding trades over multiple days or weeks.
- Custom: Full manual control over all settings. All input parameters are available for complete customization. This is the default mode and maintains full backward compatibility with previous versions.
When a preset is selected, it automatically adjusts RSI periods, smoothing lengths, and filter settings to match the trading style. The preset configurations ensure optimal settings are applied instantly, eliminating the need for manual configuration. All settings can still be manually overridden if needed, providing flexibility while maintaining ease of use.
Input Validation and Error Prevention
The script includes comprehensive input validation to prevent configuration errors:
- Cross-Input Validation: Smoothing lengths are automatically validated to ensure they are always less than their corresponding RSI period length. If you set a smoothing length greater than or equal to the RSI length, the script automatically adjusts it to (RSI Length - 1). This prevents logical errors and ensures valid configurations.
- Input Range Validation: All numeric inputs have minimum and maximum value constraints enforced by TradingView's input system, preventing invalid parameter values.
- Smart Defaults: Preset configurations use validated default values that are tested and optimized for each trading style. When switching between presets, all related settings are automatically updated to maintain consistency.
Core Calculations
Multi-Period RSI:
The script calculates RSI using the standard Wilder's RSI formula: RSI = 100 - (100 / (1 + RS)), where RS = Average Gain / Average Loss over the specified period. Three separate RSI calculations run simultaneously:
- RSI(6): Uses 6-period lookback for high sensitivity to recent price changes, useful for scalping and early signal detection
- RSI(14): Standard 14-period RSI for balanced analysis, the most commonly used RSI period
- RSI(24): Longer 24-period RSI for trend confirmation, provides smoother signals with less noise
Each RSI can be smoothed using EMA, SMA, RMA (Wilder's smoothing), WMA, or Zero-Lag smoothing. Zero-Lag smoothing uses the formula: ZL-RSI = RSI + (RSI - RSI ) to reduce lag while maintaining signal quality. You can apply individual smoothing lengths to each RSI period, or use global smoothing where all three RSIs share the same smoothing length.
Dynamic Overbought/Oversold Thresholds:
Static thresholds (default 70/30) are adjusted based on market volatility using ATR. The formula: Dynamic OB = Base OB + (ATR × Volatility Multiplier × Base Percentage / 100), Dynamic OS = Base OS - (ATR × Volatility Multiplier × Base Percentage / 100). This adapts to volatile markets where traditional 70/30 levels may be too restrictive. During high volatility, the dynamic thresholds widen, and during low volatility, they narrow. The thresholds are clamped between 0-100 to remain within RSI bounds. The ATR is cached for performance optimization, updating on confirmed bars and real-time bars.
Adaptive RSI Calculation:
An adaptive RSI adjusts the standard RSI(14) based on current volatility relative to average volatility. The calculation: Adaptive Factor = (Current ATR / SMA of ATR over 20 periods) × Volatility Multiplier. If SMA of ATR is zero (edge case), the adaptive factor defaults to 0. The adaptive RSI = Base RSI × (1 + Adaptive Factor), clamped to 0-100. This makes the indicator more responsive during high volatility periods when traditional RSI may lag. The adaptive RSI is used for signal generation (buy/sell signals) but is not plotted on the chart.
Overbought/Oversold Fill Zones:
The script provides visual fill zones between the RSI line and the threshold lines when RSI is in overbought or oversold territory. The fill logic uses inclusive conditions: fills are shown when RSI is currently in the zone OR was in the zone on the previous bar. This ensures complete coverage of entry and exit boundaries. A minimum gap of 0.1 RSI points is maintained between the RSI plot and threshold line to ensure reliable polygon rendering in TradingView. The fill uses invisible plots at the threshold levels and the RSI value, with the fill color applied between them. You can select which RSI (6, 14, or 24) to use for the fill zones.
Divergence Detection
Regular Divergence:
Bullish divergence: Price makes a lower low (current low < lowest low from previous lookback period) while RSI makes a higher low (current RSI > lowest RSI from previous lookback period). Bearish divergence: Price makes a higher high (current high > highest high from previous lookback period) while RSI makes a lower high (current RSI < highest RSI from previous lookback period). The script compares current price/RSI values to the lowest/highest values from the previous lookback period using ta.lowest() and ta.highest() functions with index to reference the previous period's extreme.
Pivot-Based Divergence:
An enhanced divergence detection method that uses actual pivot points instead of simple lowest/highest comparisons. This provides more accurate divergence detection by identifying significant pivot lows/highs in both price and RSI. The pivot-based method uses a tolerance-based approach with configurable constants: 1% tolerance for price comparisons (priceTolerancePercent = 0.01) and 1.0 RSI point absolute tolerance for RSI comparisons (pivotTolerance = 1.0). Minimum divergence threshold is 1.0 RSI point (minDivergenceThreshold = 1.0). It looks for two recent pivot points and compares them: for bullish divergence, price makes a lower low (at least 1% lower) while RSI makes a higher low (at least 1.0 point higher). This method reduces false divergences by requiring actual pivot points rather than just any low/high within a period. When enabled, pivot-based divergence replaces the traditional method for more accurate signal generation.
Strong Divergence:
Regular divergence is confirmed by an engulfing candle pattern. Bullish engulfing requires: (1) Previous candle is bearish (close < open ), (2) Current candle is bullish (close > open), (3) Current close > previous open, (4) Current open < previous close. Bearish engulfing is the inverse: previous bullish, current bearish, current close < previous open, current open > previous close. Strong divergence signals are marked with visual indicators (🐂 for bullish, 🐻 for bearish) and have separate alert conditions.
Hidden Divergence:
Continuation patterns that signal trend continuation rather than reversal. Bullish hidden divergence: Price makes a higher low (current low > lowest low from previous period) but RSI makes a lower low (current RSI < lowest RSI from previous period). Bearish hidden divergence: Price makes a lower high (current high < highest high from previous period) but RSI makes a higher high (current RSI > highest RSI from previous period). These patterns indicate the trend is likely to continue in the current direction.
Volume Confirmation System
Volume threshold filtering requires current volume to exceed the volume SMA multiplied by the threshold factor. The formula: Volume Confirmed = Volume > (Volume SMA × Threshold). If the threshold is set to 0.1 or lower, volume confirmation is effectively disabled (always returns true). This allows you to use the indicator without volume filtering if desired.
Volume Climax is detected when volume exceeds: Volume SMA + (Volume StdDev × Multiplier). This indicates potential capitulation moments where extreme volume accompanies price movements. Volume Dry-Up is detected when volume falls below: Volume SMA - (Volume StdDev × Multiplier), indicating low participation periods that may produce unreliable signals. The volume SMA is cached for performance, updating on confirmed and real-time bars.
Multi-RSI Synergy
The script generates signals when multiple RSI periods align in overbought or oversold zones. This creates a confirmation system that reduces false signals. In "ALL" mode, all three RSIs (6, 14, 24) must be simultaneously above the overbought threshold OR all three must be below the oversold threshold. In "2-of-3" mode, any two of the three RSIs must align in the same direction. The script counts how many RSIs are in each zone: twoOfThreeOB = ((rsi6OB ? 1 : 0) + (rsi14OB ? 1 : 0) + (rsi24OB ? 1 : 0)) >= 2.
Synergy signals require: (1) Multi-RSI alignment (ALL or 2-of-3), (2) Volume confirmation, (3) Reset condition satisfied (enough bars since last synergy signal), (4) Additional filters passed (RSI50, Trend, ADX, Volume Dry-Up avoidance). Separate reset conditions track buy and sell signals independently. The reset condition uses ta.barssince() to count bars since the last trigger, returning true if the condition never occurred (allowing first signal) or if enough bars have passed.
Regression Forecasting
The script uses historical RSI values to forecast future RSI direction using four methods. The forecast horizon is configurable (1-50 bars ahead). Historical data is collected into an array, and regression coefficients are calculated based on the selected method.
Linear Regression: Calculates the least-squares fit line (y = mx + b) through the last N RSI values. The calculation: meanX = sumX / horizon, meanY = sumY / horizon, denominator = sumX² - horizon × meanX², m = (sumXY - horizon × meanX × meanY) / denominator, b = meanY - m × meanX. The forecast projects this line forward: forecast = b + m × i for i = 1 to horizon.
Polynomial Regression: Fits a quadratic curve (y = ax² + bx + c) to capture non-linear trends. The system of equations is solved using Cramer's rule with a 3×3 determinant. If the determinant is too small (< 0.0001), the system falls back to linear regression. Coefficients are calculated by solving: n×c + sumX×b + sumX²×a = sumY, sumX×c + sumX²×b + sumX³×a = sumXY, sumX²×c + sumX³×b + sumX⁴×a = sumX²Y. Note: Due to the O(n³) computational complexity of polynomial regression, the forecast horizon is automatically limited to a maximum of 20 bars when using polynomial regression to maintain optimal performance. If you set a horizon greater than 20 bars with polynomial regression, it will be automatically capped at 20 bars.
Exponential Smoothing: Applies exponential smoothing with adaptive alpha = 2/(horizon+1). The smoothing iterates from oldest to newest value: smoothed = alpha × series + (1 - alpha) × smoothed. Trend is calculated by comparing current smoothed value to an earlier smoothed value (at 60% of horizon): trend = (smoothed - earlierSmoothed) / (horizon - earlierIdx). Forecast: forecast = base + trend × i.
Moving Average: Uses the difference between short MA (horizon/2) and long MA (horizon) to estimate trend direction. Trend = (maShort - maLong) / (longLen - shortLen). Forecast: forecast = maShort + trend × i.
Confidence bands are calculated using RMSE (Root Mean Squared Error) of historical forecast accuracy. The error calculation compares historical values with forecast values: RMSE = sqrt(sumSquaredError / count). If insufficient data exists, it falls back to calculating standard deviation of recent RSI values. Confidence bands = forecast ± (RMSE × confidenceLevel). All forecast values and confidence bands are clamped to 0-100 to remain within RSI bounds. The regression functions include comprehensive safety checks: horizon validation (must not exceed array size), empty array handling, edge case handling for horizon=1 scenarios, division-by-zero protection, and bounds checking for all array access operations to prevent runtime errors.
Strong Top/Bottom Detection
Strong buy signals require three conditions: (1) RSI is at its lowest point within the bottom period: rsiVal <= ta.lowest(rsiVal, bottomPeriod), (2) RSI is below the oversold threshold minus a buffer: rsiVal < (oversoldThreshold - rsiTopBottomBuffer), where rsiTopBottomBuffer = 2.0 RSI points, (3) The absolute difference between current RSI and the lowest RSI exceeds the threshold value: abs(rsiVal - ta.lowest(rsiVal, bottomPeriod)) > threshold. This indicates a bounce from extreme levels with sufficient distance from the absolute low.
Strong sell signals use the inverse logic: RSI at highest point, above overbought threshold + rsiTopBottomBuffer (2.0 RSI points), and difference from highest exceeds threshold. Both signals also require: volume confirmation, reset condition satisfied (separate reset for buy vs sell), and all additional filters passed (RSI50, Trend, ADX, Volume Dry-Up avoidance).
The reset condition uses separate logic for buy and sell: resetCondBuy checks bars since isRSIAtBottom, resetCondSell checks bars since isRSIAtTop. This ensures buy signals reset based on bottom conditions and sell signals reset based on top conditions, preventing incorrect signal blocking.
Filtering System
RSI(50) Filter: Only allows buy signals when RSI(14) > 50 (bullish momentum) and sell signals when RSI(14) < 50 (bearish momentum). This filter ensures you're buying in uptrends and selling in downtrends from a momentum perspective. The filter is optional and can be disabled. Recommended to enable for noise reduction.
Trend Filter: Uses a long-term EMA (default 200) to determine trend direction. Buy signals require price above EMA, sell signals require price below EMA. The EMA slope is calculated as: emaSlope = ema - ema . Optional EMA slope filter additionally requires the EMA to be rising (slope > 0) for buy signals or falling (slope < 0) for sell signals. This provides stronger trend confirmation by requiring both price position and EMA direction.
ADX Filter: Uses the Directional Movement Index (calculated via ta.dmi()) to measure trend strength. Signals only fire when ADX exceeds the threshold (default 20), indicating a strong trend rather than choppy markets. The ADX calculation uses separate length and smoothing parameters. This filter helps avoid signals during sideways/consolidation periods.
Volume Dry-Up Avoidance: Prevents signals during periods of extremely low volume relative to average. If volume dry-up is detected and the filter is enabled, signals are blocked. This helps avoid unreliable signals that occur during low participation periods.
RSI Momentum Confirmation: Requires RSI to be accelerating in the signal direction before confirming signals. For buy signals, RSI must be consistently rising (recovering from oversold) over the lookback period. For sell signals, RSI must be consistently falling (declining from overbought) over the lookback period. The momentum check verifies that all consecutive changes are in the correct direction AND the cumulative change is significant. This filter ensures signals only fire when RSI momentum aligns with the signal direction, reducing false signals from weak momentum.
Multi-Timeframe Confirmation: Requires higher timeframe RSI to align with the signal direction. For buy signals, current RSI must be below the higher timeframe RSI by at least the confirmation threshold. For sell signals, current RSI must be above the higher timeframe RSI by at least the confirmation threshold. This ensures signals align with the larger trend context, reducing counter-trend trades. The higher timeframe RSI is fetched using request.security() from the selected timeframe.
All filters use the pattern: filterResult = not filterEnabled OR conditionMet. This means if a filter is disabled, it always passes (returns true). Filters can be combined, and all must pass for a signal to fire.
RSI Centerline and Period Crossovers
RSI(50) Centerline Crossovers: Detects when the selected RSI source crosses above or below the 50 centerline. Bullish crossover: ta.crossover(rsiSource, 50), bearish crossover: ta.crossunder(rsiSource, 50). You can select which RSI (6, 14, or 24) to use for these crossovers. These signals indicate momentum shifts from bearish to bullish (above 50) or bullish to bearish (below 50).
RSI Period Crossovers: Detects when different RSI periods cross each other. Available pairs: RSI(6) × RSI(14), RSI(14) × RSI(24), or RSI(6) × RSI(24). Bullish crossover: fast RSI crosses above slow RSI (ta.crossover(rsiFast, rsiSlow)), indicating momentum acceleration. Bearish crossover: fast RSI crosses below slow RSI (ta.crossunder(rsiFast, rsiSlow)), indicating momentum deceleration. These crossovers can signal shifts in momentum before price moves.
StochRSI Calculation
Stochastic RSI applies the Stochastic oscillator formula to RSI values instead of price. The calculation: %K = ((RSI - Lowest RSI) / (Highest RSI - Lowest RSI)) × 100, where the lookback is the StochRSI length. If the range is zero, %K defaults to 50.0. %K is then smoothed using SMA with the %K smoothing length. %D is calculated as SMA of smoothed %K with the %D smoothing length. All values are clamped to 0-100. You can select which RSI (6, 14, or 24) to use as the source for StochRSI calculation.
RSI Bollinger Bands
Bollinger Bands are applied to RSI(14) instead of price. The calculation: Basis = SMA(RSI(14), BB Period), StdDev = stdev(RSI(14), BB Period), Upper = Basis + (StdDev × Deviation Multiplier), Lower = Basis - (StdDev × Deviation Multiplier). This creates dynamic zones around RSI that adapt to RSI volatility. When RSI touches or exceeds the bands, it indicates extreme conditions relative to recent RSI behavior.
Noise Reduction System
The script includes a comprehensive noise reduction system to filter false signals and improve accuracy. When enabled, signals must pass multiple quality checks:
Signal Strength Requirement: RSI must be at least X points away from the centerline (50). For buy signals, RSI must be at least X points below 50. For sell signals, RSI must be at least X points above 50. This ensures signals only trigger when RSI is significantly in oversold/overbought territory, not just near neutral.
Extreme Zone Requirement: RSI must be deep in the OB/OS zone. For buy signals, RSI must be at least X points below the oversold threshold. For sell signals, RSI must be at least X points above the overbought threshold. This ensures signals only fire in extreme conditions where reversals are more likely.
Consecutive Bar Confirmation: The signal condition must persist for N consecutive bars before triggering. This reduces false signals from single-bar spikes or noise. The confirmation checks that the signal condition was true for all bars in the lookback period.
Zone Persistence (Optional): Requires RSI to remain in the OB/OS zone for N consecutive bars, not just touch it. This ensures RSI is truly in an extreme state rather than just briefly touching the threshold. When enabled, this provides stricter filtering for higher-quality signals.
RSI Slope Confirmation (Optional): Requires RSI to be moving in the expected signal direction. For buy signals, RSI should be rising (recovering from oversold). For sell signals, RSI should be falling (declining from overbought). This ensures momentum is aligned with the signal direction. The slope is calculated by comparing current RSI to RSI N bars ago.
All noise reduction filters can be enabled/disabled independently, allowing you to customize the balance between signal frequency and accuracy. The default settings provide a good balance, but you can adjust them based on your trading style and market conditions.
Alert System
The script includes separate alert conditions for each signal type: buy/sell (adaptive RSI crossovers), divergence (regular, strong, hidden), crossovers (RSI50 centerline, RSI period crossovers), synergy signals, and trend breaks. Each alert type has its own alertcondition() declaration with a unique title and message.
An optional cooldown system prevents alert spam by requiring a minimum number of bars between alerts of the same type. The cooldown check: canAlert = na(lastAlertBar) OR (bar_index - lastAlertBar >= cooldownBars). If the last alert bar is na (first alert), it always allows the alert. Each alert type maintains its own lastAlertBar variable, so cooldowns are independent per signal type. The default cooldown is 10 bars, which is recommended for noise reduction.
Higher Timeframe RSI
The script can display RSI from a higher timeframe using request.security(). This allows you to see the RSI context from a larger timeframe (e.g., daily RSI on an hourly chart). The higher timeframe RSI uses RSI(14) calculation from the selected timeframe. This provides context for the current timeframe's RSI position relative to the larger trend.
RSI Pivot Trendlines
The script can draw trendlines connecting pivot highs and lows on RSI(6). This feature helps visualize RSI trends and identify potential trend breaks.
Pivot Detection: Pivots are detected using a configurable period. The script can require pivots to have minimum strength (RSI points difference from surrounding bars) to filter out weak pivots. Lower minPivotStrength values detect more pivots (more trendlines), while higher values detect only stronger pivots (fewer but more significant trendlines). Pivot confirmation is optional: when enabled, the script waits N bars to confirm the pivot remains the extreme, reducing repainting. Pivot confirmation functions (f_confirmPivotLow and f_confirmPivotHigh) are always called on every bar for consistency, as recommended by TradingView. When pivot bars are not available (na), safe default values are used, and the results are then used conditionally based on confirmation settings. This ensures consistent calculations and prevents calculation inconsistencies.
Trendline Drawing: Uptrend lines connect confirmed pivot lows (green), and downtrend lines connect confirmed pivot highs (red). By default, only the most recent trendline is shown (old trendlines are deleted when new pivots are confirmed). This keeps the chart clean and uncluttered. If "Keep Historical Trendlines" is enabled, the script preserves up to N historical trendlines (configurable via "Max Trendlines to Keep", default 5). When historical trendlines are enabled, old trendlines are saved to arrays instead of being deleted, allowing you to see multiple trendlines simultaneously for better trend analysis. The arrays are automatically limited to prevent memory accumulation.
Trend Break Detection: Signals are generated when RSI breaks above or below trendlines. Uptrend breaks (RSI crosses below uptrend line) generate buy signals. Downtrend breaks (RSI crosses above downtrend line) generate sell signals. Optional trend break confirmation requires the break to persist for N bars and optionally include volume confirmation. Trendline angle filtering can exclude flat/weak trendlines from generating signals (minTrendlineAngle > 0 filters out weak/flat trendlines).
How Components Work Together
The combination of multiple RSI periods provides confirmation across different timeframes, reducing false signals. RSI(6) catches early moves, RSI(14) provides balanced signals, and RSI(24) confirms longer-term trends. When all three align (synergy), it indicates strong consensus across timeframes.
Volume confirmation ensures signals occur with sufficient market participation, filtering out low-volume false breakouts. Volume climax detection identifies potential reversal points, while volume dry-up avoidance prevents signals during unreliable low-volume periods.
Trend filters align signals with the overall market direction. The EMA filter ensures you're trading with the trend, and the EMA slope filter adds an additional layer by requiring the trend to be strengthening (rising EMA for buys, falling EMA for sells).
ADX filter ensures signals only fire during strong trends, avoiding choppy/consolidation periods. RSI(50) filter ensures momentum alignment with the trade direction.
Momentum confirmation requires RSI to be accelerating in the signal direction, ensuring signals only fire when momentum is aligned. Multi-timeframe confirmation ensures signals align with higher timeframe trends, reducing counter-trend trades.
Divergence detection identifies potential reversals before they occur, providing early warning signals. Pivot-based divergence provides more accurate detection by using actual pivot points. Hidden divergence identifies continuation patterns, useful for trend-following strategies.
The noise reduction system combines multiple filters (signal strength, extreme zone, consecutive bars, zone persistence, RSI slope) to significantly reduce false signals. These filters work together to ensure only high-quality signals are generated.
The synergy system requires alignment across all RSI periods for highest-quality signals, significantly reducing false positives. Regression forecasting provides forward-looking context, helping anticipate potential RSI direction changes.
Pivot trendlines provide visual trend analysis and can generate signals when RSI breaks trendlines, indicating potential reversals or continuations.
Reset conditions prevent signal spam by requiring a minimum number of bars between signals. Separate reset conditions for buy and sell signals ensure proper signal management.
Usage Instructions
Configuration Presets (Recommended): The script includes optimized preset configurations for instant setup. Simply select your trading style from the "Configuration Preset" dropdown:
- Scalping Preset: RSI(4, 7, 9) with minimal smoothing. Noise reduction disabled, momentum confirmation disabled for fastest signals.
- Day Trading Preset: RSI(6, 9, 14) with light smoothing. Momentum confirmation enabled for better signal quality.
- Swing Trading Preset: RSI(14, 14, 21) with moderate smoothing. Balanced configuration for medium-term trades.
- Position Trading Preset: RSI(24, 21, 28) with heavier smoothing. Optimized for longer-term positions with all filters active.
- Custom Mode: Full manual control over all settings. Default behavior matches previous script versions.
Presets automatically configure RSI periods, smoothing lengths, and filter settings. You can still manually adjust any setting after selecting a preset if needed.
Getting Started: The easiest way to get started is to select a configuration preset matching your trading style (Scalping, Day Trading, Swing Trading, or Position Trading) from the "Configuration Preset" dropdown. This instantly configures all settings for optimal performance. Alternatively, use "Custom" mode for full manual control. The default configuration (Custom mode) shows RSI(6), RSI(14), and RSI(24) with their default smoothing. Overbought/oversold fill zones are enabled by default.
Customizing RSI Periods: Adjust the RSI lengths (6, 14, 24) based on your trading timeframe. Shorter periods (6) for scalping, standard (14) for day trading, longer (24) for swing trading. You can disable any RSI period you don't need.
Smoothing Selection: Choose smoothing method based on your needs. EMA provides balanced smoothing, RMA (Wilder's) is traditional, Zero-Lag reduces lag but may increase noise. Adjust smoothing lengths individually or use global smoothing for consistency. Note: Smoothing lengths are automatically validated to ensure they are always less than the corresponding RSI period length. If you set smoothing >= RSI length, it will be auto-adjusted to prevent invalid configurations.
Dynamic OB/OS: The dynamic thresholds automatically adapt to volatility. Adjust the volatility multiplier and base percentage to fine-tune sensitivity. Higher values create wider thresholds in volatile markets.
Volume Confirmation: Set volume threshold to 1.2 (default) for standard confirmation, higher for stricter filtering, or 0.1 to disable volume filtering entirely.
Multi-RSI Synergy: Use "ALL" mode for highest-quality signals (all 3 RSIs must align), or "2-of-3" mode for more frequent signals. Adjust the reset period to control signal frequency.
Filters: Enable filters gradually to find your preferred balance. Start with volume confirmation, then add trend filter, then ADX for strongest confirmation. RSI(50) filter is useful for momentum-based strategies and is recommended for noise reduction. Momentum confirmation and multi-timeframe confirmation add additional layers of accuracy but may reduce signal frequency.
Noise Reduction: The noise reduction system is enabled by default with balanced settings. Adjust minSignalStrength (default 3.0) to control how far RSI must be from centerline. Increase requireConsecutiveBars (default 1) to require signals to persist longer. Enable requireZonePersistence and requireRsiSlope for stricter filtering (higher quality but fewer signals). Start with defaults and adjust based on your needs.
Divergence: Enable divergence detection and adjust lookback periods. Strong divergence (with engulfing confirmation) provides higher-quality signals. Hidden divergence is useful for trend-following strategies. Enable pivot-based divergence for more accurate detection using actual pivot points instead of simple lowest/highest comparisons. Pivot-based divergence uses tolerance-based matching (1% for price, 1.0 RSI point for RSI) for better accuracy.
Forecasting: Enable regression forecasting to see potential RSI direction. Linear regression is simplest, polynomial captures curves, exponential smoothing adapts to trends. Adjust horizon based on your trading timeframe. Confidence bands show forecast uncertainty - wider bands indicate less reliable forecasts.
Pivot Trendlines: Enable pivot trendlines to visualize RSI trends and identify trend breaks. Adjust pivot detection period (default 5) - higher values detect fewer but stronger pivots. Enable pivot confirmation (default ON) to reduce repainting. Set minPivotStrength (default 1.0) to filter weak pivots - lower values detect more pivots (more trendlines), higher values detect only stronger pivots (fewer trendlines). Enable "Keep Historical Trendlines" to preserve multiple trendlines instead of just the most recent one. Set "Max Trendlines to Keep" (default 5) to control how many historical trendlines are preserved. Enable trend break confirmation for more reliable break signals. Adjust minTrendlineAngle (default 0.0) to filter flat trendlines - set to 0.1-0.5 to exclude weak trendlines.
Alerts: Set up alerts for your preferred signal types. Enable cooldown to prevent alert spam. Each signal type has its own alert condition, so you can be selective about which signals trigger alerts.
Visual Elements and Signal Markers
The script uses various visual markers to indicate signals and conditions:
- "sBottom" label (green): Strong bottom signal - RSI at extreme low with strong buy conditions
- "sTop" label (red): Strong top signal - RSI at extreme high with strong sell conditions
- "SyBuy" label (lime): Multi-RSI synergy buy signal - all RSIs aligned oversold
- "SySell" label (red): Multi-RSI synergy sell signal - all RSIs aligned overbought
- 🐂 emoji (green): Strong bullish divergence detected
- 🐻 emoji (red): Strong bearish divergence detected
- 🔆 emoji: Weak divergence signals (if enabled)
- "H-Bull" label: Hidden bullish divergence
- "H-Bear" label: Hidden bearish divergence
- ⚡ marker (top of pane): Volume climax detected (extreme volume) - positioned at top for visibility
- 💧 marker (top of pane): Volume dry-up detected (very low volume) - positioned at top for visibility
- ↑ triangle (lime): Uptrend break signal - RSI breaks below uptrend line
- ↓ triangle (red): Downtrend break signal - RSI breaks above downtrend line
- Triangle up (lime): RSI(50) bullish crossover
- Triangle down (red): RSI(50) bearish crossover
- Circle markers: RSI period crossovers
All markers are positioned at the RSI value where the signal occurs, using location.absolute for precise placement.
Signal Priority and Interpretation
Signals are generated independently and can occur simultaneously. Higher-priority signals generally indicate stronger setups:
1. Multi-RSI Synergy signals (SyBuy/SySell) - Highest priority: Requires alignment across all RSI periods plus volume and filter confirmation. These are the most reliable signals.
2. Strong Top/Bottom signals (sTop/sBottom) - High priority: Indicates extreme RSI levels with strong bounce conditions. Requires volume confirmation and all filters.
3. Divergence signals - Medium-High priority: Strong divergence (with engulfing) is more reliable than regular divergence. Hidden divergence indicates continuation rather than reversal.
4. Adaptive RSI crossovers - Medium priority: Buy when adaptive RSI crosses below dynamic oversold, sell when it crosses above dynamic overbought. These use volatility-adjusted RSI for more accurate signals.
5. RSI(50) centerline crossovers - Medium priority: Momentum shift signals. Less reliable alone but useful when combined with other confirmations.
6. RSI period crossovers - Lower priority: Early momentum shift indicators. Can provide early warning but may produce false signals in choppy markets.
Best practice: Wait for multiple confirmations. For example, a synergy signal combined with divergence and volume climax provides the strongest setup.
Chart Requirements
For proper script functionality and compliance with TradingView requirements, ensure your chart displays:
- Symbol name: The trading pair or instrument name should be visible
- Timeframe: The chart timeframe should be clearly displayed
- Script name: "Ultimate RSI " should be visible in the indicator title
These elements help traders understand what they're viewing and ensure proper script identification. The script automatically includes this information in the indicator title and chart labels.
Performance Considerations
The script is optimized for performance:
- ATR and Volume SMA are cached using var variables, updating only on confirmed and real-time bars to reduce redundant calculations
- Forecast line arrays are dynamically managed: lines are reused when possible, and unused lines are deleted to prevent memory accumulation
- Calculations use efficient Pine Script functions (ta.rsi, ta.ema, etc.) which are optimized by TradingView
- Array operations are minimized where possible, with direct calculations preferred
- Polynomial regression automatically caps the forecast horizon at 20 bars (POLYNOMIAL_MAX_HORIZON constant) to prevent performance degradation, as polynomial regression has O(n³) complexity. This safeguard ensures optimal performance even with large horizon settings
- Pivot detection includes edge case handling to ensure reliable calculations even on early bars with limited historical data. Regression forecasting functions include comprehensive safety checks: horizon validation (must not exceed array size), empty array handling, edge case handling for horizon=1 scenarios, and division-by-zero protection in all mathematical operations
The script should perform well on all timeframes. On very long historical data, forecast lines may accumulate if the horizon is large; consider reducing the forecast horizon if you experience performance issues. The polynomial regression performance safeguard automatically prevents performance issues for that specific regression type.
Known Limitations and Considerations
- Forecast lines are forward-looking projections and should not be used as definitive predictions. They provide context but are not guaranteed to be accurate.
- Dynamic OB/OS thresholds can exceed 100 or go below 0 in extreme volatility scenarios, but are clamped to 0-100 range. This means in very volatile markets, the dynamic thresholds may not widen as much as the raw calculation suggests.
- Volume confirmation requires sufficient historical volume data. On new instruments or very short timeframes, volume calculations may be less reliable.
- Higher timeframe RSI uses request.security() which may have slight delays on some data feeds.
- Regression forecasting requires at least N bars of history (where N = forecast horizon) before it can generate forecasts. Early bars will not show forecast lines.
- StochRSI calculation requires the selected RSI source to have sufficient history. Very short RSI periods on new charts may produce less reliable StochRSI values initially.
Practical Use Cases
The indicator can be configured for different trading styles and timeframes:
Swing Trading: Select the "Swing Trading" preset for instant optimal configuration. This preset uses RSI periods (14, 14, 21) with moderate smoothing. Alternatively, manually configure: Use RSI(24) with Multi-RSI Synergy in "ALL" mode, combined with trend filter (EMA 200) and ADX filter. This configuration provides high-probability setups with strong confirmation across multiple RSI periods.
Day Trading: Select the "Day Trading" preset for instant optimal configuration. This preset uses RSI periods (6, 9, 14) with light smoothing and momentum confirmation enabled. Alternatively, manually configure: Use RSI(6) with Zero-Lag smoothing for fast signal detection. Enable volume confirmation with threshold 1.2-1.5 for reliable entries. Combine with RSI(50) filter to ensure momentum alignment. Strong top/bottom signals work well for day trading reversals.
Trend Following: Enable trend filter (EMA) and EMA slope filter for strong trend confirmation. Use RSI(14) or RSI(24) with ADX filter to avoid choppy markets. Hidden divergence signals are useful for trend continuation entries.
Reversal Trading: Focus on divergence detection (regular and strong) combined with strong top/bottom signals. Enable volume climax detection to identify capitulation moments. Use RSI(6) for early reversal signals, confirmed by RSI(14) and RSI(24).
Forecasting and Planning: Enable regression forecasting with polynomial or exponential smoothing methods. Use forecast horizon of 10-20 bars for swing trading, 5-10 bars for day trading. Confidence bands help assess forecast reliability.
Multi-Timeframe Analysis: Enable higher timeframe RSI to see context from larger timeframes. For example, use daily RSI on hourly charts to understand the larger trend context. This helps avoid counter-trend trades.
Scalping: Select the "Scalping" preset for instant optimal configuration. This preset uses RSI periods (4, 7, 9) with minimal smoothing, disables noise reduction, and disables momentum confirmation for faster signals. Alternatively, manually configure: Use RSI(6) with minimal smoothing (or Zero-Lag) for ultra-fast signals. Disable most filters except volume confirmation. Use RSI period crossovers (RSI(6) × RSI(14)) for early momentum shifts. Set volume threshold to 1.0-1.2 for less restrictive filtering.
Position Trading: Select the "Position Trading" preset for instant optimal configuration. This preset uses extended RSI periods (24, 21, 28) with heavier smoothing, optimized for longer-term trades. Alternatively, manually configure: Use RSI(24) with all filters enabled (Trend, ADX, RSI(50), Volume Dry-Up avoidance). Multi-RSI Synergy in "ALL" mode provides highest-quality signals.
Practical Tips and Best Practices
Getting Started: The fastest way to get started is to select a configuration preset that matches your trading style. Simply choose "Scalping", "Day Trading", "Swing Trading", or "Position Trading" from the "Configuration Preset" dropdown to instantly configure all settings optimally. For advanced users, use "Custom" mode for full manual control. The default configuration (Custom mode) is balanced and works well across different markets. After observing behavior, customize settings to match your trading style.
Reducing Repainting: All signals are based on confirmed bars, minimizing repainting. The script uses confirmed bar data for all calculations to ensure backtesting accuracy.
Signal Quality: Multi-RSI Synergy signals in "ALL" mode provide the highest-quality signals because they require alignment across all three RSI periods. These signals have lower frequency but higher reliability. For more frequent signals, use "2-of-3" mode. The noise reduction system further improves signal quality by requiring multiple confirmations (signal strength, extreme zone, consecutive bars, optional zone persistence and RSI slope). Adjust noise reduction settings to balance signal frequency vs. accuracy.
Filter Combinations: Start with volume confirmation, then add trend filter for trend alignment, then ADX filter for trend strength. Combining all three filters significantly reduces false signals but also reduces signal frequency. Find your balance based on your risk tolerance.
Volume Filtering: Set volume threshold to 0.1 or lower to effectively disable volume filtering if you trade instruments with unreliable volume data or want to test without volume confirmation. Standard confirmation uses 1.2-1.5 threshold.
RSI Period Selection: RSI(6) is most sensitive and best for scalping or early signal detection. RSI(14) provides balanced signals suitable for day trading. RSI(24) is smoother and better for swing trading and trend confirmation. You can disable any RSI period you don't need to reduce visual clutter.
Smoothing Methods: EMA provides balanced smoothing with moderate lag. RMA (Wilder's smoothing) is traditional and works well for RSI. Zero-Lag reduces lag but may increase noise. WMA gives more weight to recent values. Choose based on your preference for responsiveness vs. smoothness.
Forecasting: Linear regression is simplest and works well for trending markets. Polynomial regression captures curves and works better in ranging markets. Exponential smoothing adapts to trends. Moving average method is most conservative. Use confidence bands to assess forecast reliability.
Divergence: Strong divergence (with engulfing confirmation) is more reliable than regular divergence. Hidden divergence indicates continuation rather than reversal, useful for trend-following strategies. Pivot-based divergence provides more accurate detection by using actual pivot points instead of simple lowest/highest comparisons. Adjust lookback periods based on your timeframe: shorter for day trading, longer for swing trading. Pivot divergence period (default 5) controls the sensitivity of pivot detection.
Dynamic Thresholds: Dynamic OB/OS thresholds automatically adapt to volatility. In volatile markets, thresholds widen; in calm markets, they narrow. Adjust the volatility multiplier and base percentage to fine-tune sensitivity. Higher values create wider thresholds in volatile markets.
Alert Management: Enable alert cooldown (default 10 bars, recommended) to prevent alert spam. Each alert type has its own cooldown, so you can set different cooldowns for different signal types. For example, use shorter cooldown for synergy signals (high quality) and longer cooldown for crossovers (more frequent). The cooldown system works independently for each signal type, preventing spam while allowing different signal types to fire when appropriate.
Technical Specifications
- Pine Script Version: v6
- Indicator Type: Non-overlay (displays in separate panel below price chart)
- Repainting Behavior: Minimal - all signals are based on confirmed bars, ensuring accurate backtesting results
- Performance: Optimized with caching for ATR and volume calculations. Forecast arrays are dynamically managed to prevent memory accumulation.
- Compatibility: Works on all timeframes (1 minute to 1 month) and all instruments (stocks, forex, crypto, futures, etc.)
- Edge Case Handling: All calculations include safety checks for division by zero, NA values, and boundary conditions. Reset conditions and alert cooldowns handle edge cases where conditions never occurred or values are NA.
- Reset Logic: Separate reset conditions for buy signals (based on bottom conditions) and sell signals (based on top conditions) ensure logical correctness.
- Input Parameters: 60+ customizable parameters organized into logical groups for easy configuration. Configuration presets available for instant setup (Scalping, Day Trading, Swing Trading, Position Trading, Custom).
- Noise Reduction: Comprehensive noise reduction system with multiple filters (signal strength, extreme zone, consecutive bars, zone persistence, RSI slope) to reduce false signals.
- Pivot-Based Divergence: Enhanced divergence detection using actual pivot points for improved accuracy.
- Momentum Confirmation: RSI momentum filter ensures signals only fire when RSI is accelerating in the signal direction.
- Multi-Timeframe Confirmation: Optional higher timeframe RSI alignment for trend confirmation.
- Enhanced Pivot Trendlines: Trendline drawing with strength requirements, confirmation, and trend break detection.
Technical Notes
- All RSI values are clamped to 0-100 range to ensure valid oscillator values
- ATR and Volume SMA are cached for performance, updating on confirmed and real-time bars
- Reset conditions handle edge cases: if a condition never occurred, reset returns true (allows first signal)
- Alert cooldown handles na values: if no previous alert, cooldown allows the alert
- Forecast arrays are dynamically sized based on horizon, with unused lines cleaned up
- Fill logic uses a minimum gap (0.1) to ensure reliable polygon rendering in TradingView
- All calculations include safety checks for division by zero and boundary conditions. Regression functions validate that horizon doesn't exceed array size, and all array access operations include bounds checking to prevent out-of-bounds errors
- The script uses separate reset conditions for buy signals (based on bottom conditions) and sell signals (based on top conditions) for logical correctness
- Background coloring uses a fallback system: dynamic color takes priority, then RSI(6) heatmap, then monotone if both are disabled
- Noise reduction filters are applied after accuracy filters, providing multiple layers of signal quality control
- Pivot trendlines use strength requirements to filter weak pivots, reducing noise in trendline drawing. Historical trendlines are stored in arrays and automatically limited to prevent memory accumulation when "Keep Historical Trendlines" is enabled
- Volume climax and dry-up markers are positioned at the top of the pane for better visibility
- All calculations are optimized with conditional execution - features only calculate when enabled (performance optimization)
- Input Validation: Automatic cross-input validation ensures smoothing lengths are always less than RSI period lengths, preventing configuration errors
- Configuration Presets: Four optimized preset configurations (Scalping, Day Trading, Swing Trading, Position Trading) for instant setup, plus Custom mode for full manual control
- Constants Management: Magic numbers extracted to documented constants for improved maintainability and easier tuning (pivot tolerance, divergence thresholds, fill gap, etc.)
- TradingView Function Consistency: All TradingView functions (ta.crossover, ta.crossunder, ta.atr, ta.lowest, ta.highest, ta.lowestbars, ta.highestbars, etc.) and custom functions that depend on historical results (f_consecutiveBarConfirmation, f_rsiSlopeConfirmation, f_rsiZonePersistence, f_applyAllFilters, f_rsiMomentum, f_forecast, f_confirmPivotLow, f_confirmPivotHigh) are called on every bar for consistency, as recommended by TradingView. Results are then used conditionally when needed. This ensures consistent calculations and prevents calculation inconsistencies.
PDH/PDL Sweep & Rejection - sudoPDH/PDL Sweep + Rejection
This indicator identifies classic liquidity sweeps of the previous day's high or low, then confirms whether price rejected that level with force. It is built to highlight moments when the market takes liquidity and immediately snaps back in the opposite direction, a behavior often linked to failed breakouts, engineered stops, or clean reversals. The tool marks these events directly on the chart so you can see them without manually watching the daily levels.
What it detects
The indicator focuses on two events:
PDH sweep and rejection
Price breaks above the previous day's high, overshoots the level by a meaningful amount, and then closes back below the high.
PDL sweep and rejection
Price breaks below the previous day's low, overshoots, and then closes back above the low.
These are structural liquidity events, not random wicks. The script checks for enough overshoot and strong bar range to confirm it was a genuine stop grab rather than noise.
How it works
The indicator evaluates each bar using the following logic:
1. Previous day levels
It pulls yesterday's high and low directly from the daily timeframe. These act as the PDH and PDL reference points for intraday trading.
2. Overshoot measurement
After breaking the level, price must push far enough beyond it to qualify as a sweep. Instead of using arbitrary pips, the required overshoot is scaled relative to ATR. This keeps the logic stable across different assets and volatility conditions.
3. Range confirmation
The bar must be larger than normal compared to ATR. This ensures the sweep happened with momentum and not because of small, choppy price movement.
4. Rejection close
A valid signal only prints if price closes back inside the previous day's range.
For a PDH sweep, the bar must close below PDH.
For a PDL sweep, the bar must close above PDL.
This confirms a failed breakout and a rejection.
What gets placed on the chart
Red downward triangle above the bar: Previous Day High sweep and rejection
Lime upward triangle below the bar: Previous Day Low sweep and rejection
The markers appear exactly on the bar where the sweep and rejection occurred.
How traders can use this
Identify potential reversals
Sweeps often occur when algorithms target liquidity pools. When followed by a strong rejection, the market may be preparing for a reversal or rotation.
Avoid chasing breakouts
A clear sweep warns that a breakout attempt failed. This can prevent traders from entering at the worst possible location.
Time entries at extremes
The markers help you see where the market grabbed stops and immediately turned. These areas can become high quality entry zones in both trend continuation and countertrend setups.
Support liquidity based models
The indicator aligns naturally with trading frameworks that consider liquidity, displacement, failed breaks, and microstructure shifts.
Add confidence to confluence-based setups
Combine sweeps with displacement, FVGs, or higher timeframe levels to refine entry timing.
Why this indicator is helpful
It automates a pattern that traders often identify manually. Sweeps are easy to miss in fast markets, and this tool eliminates the need to constantly monitor daily levels. By marking only the events that show overshoot plus rejection plus significant range, it filters out the weak or false signals and leaves only meaningful liquidity events.
Correlation Scanner📊 CORRELATION SCANNER - Financial Instruments Correlation Analyzer
🎯 ORIGINALITY AND PURPOSE
Correlation Scanner is a professional tool for analyzing correlation relationships between different financial instruments. Unlike standard correlation indicators that show the relationship between only two instruments, this script allows you to simultaneously track the correlation of up to 10 customizable instruments with a selected base asset.
The indicator is designed for traders working with cross-market analysis, portfolio diversification, and searching for related assets for arbitrage strategies.
🔧 HOW IT WORKS
The indicator uses the built-in ta.correlation() function to calculate the Pearson correlation coefficient between instrument closing prices over a specified period. Mathematical foundation:
1. Correlation Calculation: for each instrument, the correlation coefficient with the base asset is calculated over N bars (default 60)
2. Results Sorting: instruments are automatically ranked by absolute correlation value (from strongest to weakest)
3. Visualization: results are displayed in a table with color coding:
- Green: positive correlation (instruments move in the same direction)
- Red: negative correlation (instruments move in opposite directions)
- Color intensity depends on correlation strength
4. Correlation Strength Classification:
- Very Strong (💪💪💪): |r| > 0.8 — very strong relationship
- Strong (💪💪): |r| > 0.6 — strong relationship
- Medium (💪): |r| > 0.4 — medium relationship
- Weak: |r| > 0.2 — weak relationship
- Very Weak: |r| ≤ 0.2 — very weak relationship
📋 SETTINGS AND USAGE
MAIN PARAMETERS:
• Main Instrument — base instrument for comparison (default TVC:DXY - US Dollar Index)
• Correlation Period — calculation period in bars (10-500, default 60)
• Number of Instruments to Display — number of instruments to show (1-10)
• Table Position — table location on the chart
INSTRUMENT CONFIGURATION:
The indicator allows configuring up to 10 instruments for analysis. For each, you can specify:
• Instrument — instrument ticker (e.g., FX_IDC:EURUSD)
• Name — display name (emojis supported)
VISUAL SETTINGS:
• Show Chart Label with Correlation — display current chart's correlation with base instrument
• Table Header Color — table header color
• Table Row Background — table row background color
💡 USAGE EXAMPLES
1. DOLLAR IMPACT ANALYSIS: set DXY as the base instrument and track how dollar index changes affect currency pairs, gold, and cryptocurrencies
2. HEDGING ASSETS SEARCH: find instruments with strong negative correlation for risk diversification
3. PAIRS TRADING: identify assets with high positive correlation to find divergences and arbitrage opportunities
4. CROSS-MARKET ANALYSIS: track relationships between stocks, bonds, commodities, and currencies
5. SYSTEMIC RISK ASSESSMENT: identify periods of increased correlation between assets, which may indicate systemic risks
⚠️ IMPORTANT NOTES
• Correlation does NOT imply causation
• Correlation can change over time — regularly review the analysis period
• High past correlation doesn't guarantee the relationship will persist in the future
• Recommended to use the indicator in combination with fundamental analysis
🔔 ALERTS
The indicator includes a built-in alert condition: triggers when strong correlation (|r| > 0.8) is detected between the current chart and the base instrument.
Baba-pro EMA Break Sniper This indicator is designed to provide high-precision entries based on the interaction between EMAs, momentum, and clean price breaks.
Instead of relying on traditional EMA crossovers — which are often too slow — this tool focuses on direct EMA breakouts, allowing you to catch moves before most traders even react.
Breakout Signal (Trend+ATR+ADX+Score)Breakout Signal – Trend + ATR + ADX + Strength Score
This indicator detects high-quality bullish breakout conditions using a multi-filter confirmation system designed to reduce false signals and highlight only strong momentum events.
A breakout signal triggers when all core conditions align:
📌 Breakout Conditions
1. Price Breakout
Breakout occurs when the current high exceeds the previous close by X%.
This avoids noisy open-based signals and focuses on genuine upward expansion.
2. Volume Spike
Current volume must be higher than the average volume × multiplier.
This ensures the breakout is supported by real trading activity.
3. Trend Filter (MA)
Price must be trading above a moving average.
This prevents counter-trend breakouts and focuses on momentum continuation.
4. ATR Rising
ATR must be rising relative to its own moving average.
A rising ATR confirms volatility expansion — a key ingredient of valid breakouts.
5. ADX Trend Strength
ADX must exceed a user-defined threshold (default: 20).
This confirms the market is in a strong trend environment, reducing false signals.
⭐ Breakout Strength Score (0–5)
Each of the 5 filters contributes 1 point:
Trend OK
Volume Spike
ATR Rising
ADX Strong
Price Breakout
A score label appears on valid breakouts:
5/5 → Very strong breakout
4/5 → Strong breakout
3/5 → Moderate breakout
0–2 → Weak / avoided signals
Minor Break of Structure (Minor BoS)This indicator extracts and isolates the Minor Break of Structure (BoS) logic from a full SMC framework and presents it as a clean, lightweight tool for structure-based price action traders.
Unlike traditional BOS indicators that rely on swing calculations with heavy filtering, this script uses original SMC-style minor structure logic to detect meaningful shifts in internal order flow.
A Minor BoS appears when price breaks above a minor swing high (bullish) or below a minor swing low (bearish), confirming a short-term continuation in trend direction.
Features:
Bullish Minor BoS detection
Bearish Minor BoS detection
Automatic line plotting with extend-right
Clear “Minor BoS” label with tiny footprint
Customizable line styles and colors
Lightweight & optimized for fast execution
Zero repainting on BoS confirmations
This tool is ideal for traders who want a simple, clean, and reliable structure-based signal without the noise of major structure, order blocks, liquidity sweeps, or external SMC modules.
USD Liquidity / FX Swap + Money Market StressThis indicator shows, in a simple way, how tight or loose USD liquidity is. It combines two things: signs of stress in the FX market (Fed swap lines + dollar strength) and signs from the money market (the difference between repo rates like SOFR/TGCR and the Fed’s IORB rate). All of this is merged into a single blue line: when it rises, liquidity tends to be more abundant; when it falls, there is more stress and the dollar becomes “expensive” to obtain.
You read it like a traffic light:
If the background is red, the indicator is below the lower threshold → liquidity stress, an environment that is more prone to sell-offs and violent moves in risk assets (including crypto).
If the background is green, the indicator is above the upper threshold → more relaxed liquidity, a backdrop that is more favorable for risk rallies to be sustained.
No background color → neutral zone, neither very good nor very bad: you trade according to your usual system.
It is designed as a macro context filter, not as a buy/sell signal. In red, it makes sense to be more defensive with risk and leverage; in green, if your technical system gives a long signal, you have a somewhat more favorable tailwind. It should always be used together with other tools and strict risk management.
Price Volume Heatmap [MHA Finverse]Price Volume Heatmap - Advanced Volume Profile Analysis
Unlock the power of institutional-level volume analysis with the Price Volume Heatmap indicator. This sophisticated tool visualizes market structure through volume distribution across price levels, helping you identify key support/resistance zones, high-probability reversal areas, and optimal entry/exit points.
🎯 What Makes This Indicator Unique?
Unlike traditional volume indicators that only show volume over time, this heatmap displays volume distribution across price levels , revealing where the most significant trading activity occurred. The gradient coloring system instantly highlights high-volume nodes (areas of strong interest) and low-volume nodes (potential breakout zones).
📊 Core Features
1. Dynamic Volume Heatmap
- Visualizes volume concentration across 250 customizable price levels
- Gradient color scheme from high volume (white) to low volume (teal/green)
- Adjustable brightness multiplier for enhanced contrast and clarity
- Real-time updates as market conditions evolve
2. Point of Control (POC)
- Automatically identifies the price level with the highest traded volume
- Acts as a magnetic price level where markets often return
- Critical for identifying fair value areas and potential reversal zones
- Customizable line style, width, and color
3. Flexible Lookback Settings
- Lookback Bars: Set any value from 1-5000 bars to control analysis depth
- Visible Range Mode: Analyze only what's currently visible on your chart
- Timeframe-Specific Settings: Different lookback periods for 1m, 5m, 15m, 30m, 1h, Daily, and Weekly charts
- Adapts to your trading style - scalping to position trading
4. Session Separation Analysis
- Tokyo Session: 00:00-09:00 UTC
- London Session: 07:00-16:00 UTC
- New York Session: 13:00-22:00 UTC
- Sydney Session: 21:00-06:00 UTC
- Daily Reset: Analyze each trading day independently
Session separation allows you to understand volume distribution specific to each major trading session, revealing institutional order flow patterns and session-specific support/resistance levels.
5. Profile Width Options
- Dynamic: Profile width adjusts based on lookback period
- Fixed Bars: Set a specific bar count for consistent profile width
- Extend Forward: Project the profile into future bars for planning trades
6. Smart Alerts
- POC crossover/crossunder alerts
- New session start notifications
- Never miss critical price action at high-volume nodes
📈 How to Use This Indicator Professionally
Understanding Market Structure:
High Volume Nodes (HVN):
- Appear as bright/white areas in the heatmap
- Represent price levels where significant trading occurred
- Act as strong support/resistance zones
- Markets often consolidate or bounce from these levels
- Trading Strategy: Look for entries when price tests HVN areas with confluence from other indicators
Low Volume Nodes (LVN):
- Appear as darker/teal areas in the heatmap
- Represent price levels with minimal trading activity
- Price tends to move quickly through these areas
- Often form "gaps" in the volume profile
- Trading Strategy: Expect rapid price movement through LVN zones; avoid placing stop losses here
Point of Control (POC):
- The single most important price level in your analysis window
- Represents the fairest price where maximum volume traded
- Price gravitates toward POC like a magnet
- Trading Strategy:
* When price is above POC: bullish bias, POC acts as support
* When price is below POC: bearish bias, POC acts as resistance
* POC breaks often lead to significant trend changes
Session-Based Analysis:
Use session separation to understand how different market participants trade:
Asian Session (Tokyo/Sydney):
- Typically lower volatility and range-bound
- Volume profiles often show tight, balanced distribution
- Use for identifying overnight ranges and gap fill zones
London Session:
- Highest volume session for forex pairs
- Often shows strong directional bias
- Look for breakouts from Asian ranges during London open
New York Session:
- Maximum participation when overlapping with London
- Institutional order flow most visible
- POC during NY session often becomes key level for following sessions
🎯 Practical Trading Applications
1. Identifying Support & Resistance:
High volume nodes from the heatmap are far more reliable than traditional swing highs/lows. When price approaches an HVN, expect reaction - either a bounce or a significant breakout if breached.
2. Trend Confirmation:
- Healthy uptrend: POC rising over time, HVN forming at higher levels
- Healthy downtrend: POC falling over time, HVN forming at lower levels
- Consolidation: POC relatively flat, volume balanced across range
3. Breakout Trading:
When price breaks through a Low Volume Node with momentum, it often continues to the next High Volume Node. Use LVN areas as measured move targets.
4. Reversal Zones:
Multiple HVN stacking on top of each other creates a "volume shelf" - an extremely strong support/resistance zone where reversals are highly probable.
5. Risk Management:
- Place stops beyond HVN areas (not within LVN zones)
- Size positions based on distance to nearest HVN
- Use POC as trailing stop level in trending markets
⚙️ Recommended Settings
For Day Trading (Scalping/Intraday):
- Lookback: 200-500 bars
- Rows: 200-250
- Enable session separation for your primary trading session
- Profile Width: Dynamic or Fixed Bars (30-50)
For Swing Trading:
- Lookback: 500-1000 bars
- Rows: 250
- Session separation: Daily Reset
- Profile Width: Dynamic
For Position Trading:
- Lookback: 1000-3000 bars
- Rows: 250
- Use timeframe-specific settings
- Profile Width: Extend Forward (20-50 bars)
💡 Pro Tips
1. Combine this indicator with price action analysis - volume confirms what price is telling you
2. Watch for POC convergence with other technical levels (fibonacci, pivot points, moving averages)
3. Volume at extremes (tops/bottoms of heatmap) often indicates exhaustion
4. Session POC from previous sessions often acts as magnet for current session
5. Increase brightness multiplier (1.5-2.5) for clearer visualization on busy charts
6. Use "Number of Sessions to Display" to analyze consistency of volume levels across multiple sessions
🎨 Customization
Fully customizable visual appearance:
- Gradient colors for volume visualization
- POC line thickness, color, and style
- Session line colors and visibility
- All settings organized in intuitive groups
⚠️ Disclaimer
This indicator is a technical analysis tool and should not be used as the sole basis for trading decisions. Always combine volume analysis with proper risk management, fundamental analysis, and other technical indicators. Past performance does not guarantee future results.
---
Support & Updates
Regular updates and improvements are made to enhance functionality. For questions, suggestions, or bug reports, please use the comments section below.
Happy Trading! 📊💹
TF7 Option vs Index Change RatioOverview
This indicator helps traders visualise the strength and direction of an option's price movement compared to its underlying index (NIFTY or SENSEX).
It calculates a Change Ratio, which is the percentage move in the option compared to the index movement during the same bar. This is especially useful for intraday traders looking for signs of momentum, divergence, or unusual strength/weakness in option pricing.
How It Works
The ratio is calculated as:
(Option LTP − Option Open) / (Index Close − Index Open)
The value is capped between −10 and +10 to filter out extreme or invalid spikes.
The ratio is displayed as a color-coded column chart:
🟩 Green bars: Option is moving in the same direction as the index.
🟥 Red bars: Option is underperforming or moving opposite to the index.
A compact table shows the last 5 bars of:
Option price change (with +/− sign)
Index price change
Calculated ratio (also color-coded)
You can toggle the table visibility in the settings.
Inputs & Features
Select underlying index: NIFTY or SENSEX
Toggle the data table display
Clean formatting with signed values and conditional color highlights
⚠️ Disclaimer
This is a visual analysis tool, not a buy/sell signal. Always validate with your trading strategy and risk management
#OptionsTrading, #NIFTY, #SENSEX, #ChangeRatio, #IndexAnalysis, #Momentum, #Divergence, #Intraday
CRT + SMC MY//@version=5
indicator("CRT + SMC MultiTF (Fixed Requests)", overlay=true, max_labels_count=500, max_boxes_count=200)
// ---------------- INPUTS ----------------
htfTF = input.string("60", title="HTF timeframe (60=1H, 240=4H)")
midTF = input.string("5", title="Mid timeframe (5 or 15)")
execTF = input.string("1", title="Exec timeframe (1 for sniper)")
useMAfilter = input.bool(true, "Require HTF MA filter")
htf_ma_len = input.int(50, "HTF MA length")
showOB = input.bool(true, "Show Order Blocks (midTF)")
showFVG = input.bool(true, "Show Fair Value Gaps (execTF)")
showEntries = input.bool(true, "Show Entry arrows & SL/TP")
slBuffer = input.int(3, "SL buffer (ticks)")
rrTarget = input.float(4.0, "Default R:R target")
useKillzone = input.bool(false, "Use London/NY Killzone (approx NY-5 timezone)")
// ---------------- REQUESTS (ALL at top-level) ----------------
// HTF series
htf_open = request.security(syminfo.tickerid, htfTF, open)
htf_high = request.security(syminfo.tickerid, htfTF, high)
htf_low = request.security(syminfo.tickerid, htfTF, low)
htf_close = request.security(syminfo.tickerid, htfTF, close)
htf_ma = request.security(syminfo.tickerid, htfTF, ta.sma(close, htf_ma_len))
htf_prev_high = request.security(syminfo.tickerid, htfTF, high )
htf_prev_low = request.security(syminfo.tickerid, htfTF, low )
// midTF series for OB detection
mid_open = request.security(syminfo.tickerid, midTF, open)
mid_high = request.security(syminfo.tickerid, midTF, high)
mid_low = request.security(syminfo.tickerid, midTF, low)
mid_close = request.security(syminfo.tickerid, midTF, close)
mid_median_body = request.security(syminfo.tickerid, midTF, ta.median(math.abs(close - open), 8))
// execTF series for FVG and micro structure
exec_high = request.security(syminfo.tickerid, execTF, high)
exec_low = request.security(syminfo.tickerid, execTF, low)
exec_open = request.security(syminfo.tickerid, execTF, open)
exec_close = request.security(syminfo.tickerid, execTF, close)
// Also get shifted values needed for heuristics (all top-level)
exec_high_1 = request.security(syminfo.tickerid, execTF, high )
exec_high_2 = request.security(syminfo.tickerid, execTF, high )
exec_low_1 = request.security(syminfo.tickerid, execTF, low )
exec_low_2 = request.security(syminfo.tickerid, execTF, low )
mid_low_1 = request.security(syminfo.tickerid, midTF, low )
mid_high_1 = request.security(syminfo.tickerid, midTF, high )
// ---------------- HTF logic ----------------
htf_ma_bias_long = htf_close > htf_ma
htf_ma_bias_short = htf_close < htf_ma
htf_sweep_high = (htf_high > htf_prev_high) and (htf_close < htf_prev_high)
htf_sweep_low = (htf_low < htf_prev_low) and (htf_close > htf_prev_low)
htf_final_long = htf_sweep_low and (not useMAfilter or htf_ma_bias_long)
htf_final_short = htf_sweep_high and (not useMAfilter or htf_ma_bias_short)
// HTF label (single label updated)
var label htf_label = na
if barstate.islast
label.delete(htf_label)
if htf_final_long
htf_label := label.new(bar_index, high, "HTF BIAS: LONG", style=label.style_label_left, color=color.green, textcolor=color.white)
else if htf_final_short
htf_label := label.new(bar_index, low, "HTF BIAS: SHORT", style=label.style_label_left, color=color.red, textcolor=color.white)
// ---------------- midTF OB detection (heuristic) ----------------
mid_body = math.abs(mid_close - mid_open)
is_bear_mid = (mid_open > mid_close) and (mid_body >= mid_median_body)
is_bull_mid = (mid_open < mid_close) and (mid_body >= mid_median_body)
mid_bear_disp = is_bear_mid and (mid_low < mid_low_1)
mid_bull_disp = is_bull_mid and (mid_high > mid_high_1)
// Store last OB values (safe top-level assignments)
var float last_bear_ob_top = na
var float last_bear_ob_bot = na
var int last_bear_ob_time = na
var float last_bull_ob_top = na
var float last_bull_ob_bot = na
var int last_bull_ob_time = na
if mid_bear_disp
last_bear_ob_top := mid_open
last_bear_ob_bot := mid_close
last_bear_ob_time := timenow
if mid_bull_disp
last_bull_ob_top := mid_close
last_bull_ob_bot := mid_open
last_bull_ob_time := timenow
// Draw OB boxes (draw always but can be toggled)
if showOB
if not na(last_bear_ob_top)
box.new(bar_index - 1, last_bear_ob_top, bar_index + 1, last_bear_ob_bot, border_color=color.new(color.red,0), bgcolor=color.new(color.red,85))
if not na(last_bull_ob_top)
box.new(bar_index - 1, last_bull_ob_top, bar_index + 1, last_bull_ob_bot, border_color=color.new(color.green,0), bgcolor=color.new(color.green,85))
// ---------------- execTF FVG detection (top-level logic) ----------------
// simple 3-candle gap heuristic
bull_fvg_local = exec_low_2 > exec_high_1
bear_fvg_local = exec_high_2 < exec_low_1
// Compute FVG box coords at top-level
fvg_bull_top = exec_high_1
fvg_bull_bot = exec_low_2
fvg_bear_top = exec_high_2
fvg_bear_bot = exec_low_1
if showFVG
if bull_fvg_local
box.new(bar_index - 2, fvg_bull_top, bar_index, fvg_bull_bot, border_color=color.new(color.green,0), bgcolor=color.new(color.green,85))
if bear_fvg_local
box.new(bar_index - 2, fvg_bear_top, bar_index, fvg_bear_bot, border_color=color.new(color.red,0), bgcolor=color.new(color.red,85))
// ---------------- micro structure on execTF ----------------
micro_high = exec_high
micro_low = exec_low
micro_high_1 = exec_high_1
micro_low_1 = exec_low_1
micro_bos_long = micro_high > micro_high_1
micro_bos_short = micro_low < micro_low_1
// ---------------- killzone check (top-level) ----------------
kill_ok = true
if useKillzone
hh = hour(time('GMT-5'))
mm = minute(time('GMT-5'))
// London approx
inLondon = (hh > 2 or (hh == 2 and mm >= 45)) and (hh < 5 or (hh == 5 and mm <= 0))
inNY = (hh > 8 or (hh == 8 and mm >= 20)) and (hh < 11 or (hh == 11 and mm <= 30))
kill_ok := inLondon or inNY
// ---------------- Entry logic (top-level boolean decisions) ----------------
hasBullOB = not na(last_bull_ob_top)
hasBearOB = not na(last_bear_ob_top)
entryLong = htf_final_long and hasBullOB and micro_bos_long and bull_fvg_local and kill_ok
entryShort = htf_final_short and hasBearOB and micro_bos_short and bear_fvg_local and kill_ok
// ---------------- SL / TP suggestions and plotting ----------------
var label lastEntryLabel = na
if entryLong or entryShort
entryPrice = close
suggestedSL = entryLong ? (htf_low - slBuffer * syminfo.mintick) : (htf_high + slBuffer * syminfo.mintick)
slDist = math.abs(entryPrice - suggestedSL)
suggestedTP = entryLong ? (entryPrice + slDist * rrTarget) : (entryPrice - slDist * rrTarget)
if showEntries
label.delete(lastEntryLabel)
lastEntryLabel := label.new(bar_index, entryPrice, entryLong ? "ENTRY LONG" : "ENTRY SHORT", style=label.style_label_center, color=entryLong ? color.green : color.red, textcolor=color.white)
line.new(bar_index, suggestedSL, bar_index + 20, suggestedSL, color=color.orange, style=line.style_dashed)
line.new(bar_index, suggestedTP, bar_index + 40, suggestedTP, color=color.aqua, style=line.style_dashed)
plotshape(entryLong, title="Entry Long", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(entryShort, title="Entry Short", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
alertcondition(entryLong, title="CRT SMC Entry Long", message="Entry Long — HTF bias + midTF OB + execTF confirmation")
alertcondition(entryShort, title="CRT SMC Entry Short", message="Entry Short — HTF bias + midTF OB + execTF confirmation")
Easy Crypto Signal FREEAs you can see, the indicator is doing well, we'll see what happens next, I invite you to the discussion
NEXFEL - Adaptive MACD Flow PRONEXFEL – Adaptive MACD Flow PRO is a next-generation market analysis engine built on an enhanced Adaptive MACD core.
It combines R² correlation, multi-timeframe sentiment, volatility modeling, trend structure and regime detection to deliver highly refined BUY/SELL signals directly on the chart.
With dynamic target projection, confidence scoring, flow-based candle coloring and a real-time analytics panel, this tool provides a clear and intelligent read of momentum shifts before they fully develop — ideal for precision scalping and high-performance decision-making.
Weekly Inside Bar LTEshow weekly inside bar on lower timeframe so you can use for breakouts and breakout failures
MSSM – Multi-Session Structural Map (Precision Sweeps)MSSM – Multi-Session Structural Map (Precision Sweeps)
This indicator provides a structured view of the market based on four key components:
1). Previous session levels
2). Confirmed fractal swing points
3). Volume pocket highlights
4). Non-repainting precision liquidity sweep markers
It is designed to help analyze how price interacts with important reference areas and structural points. This tool does not generate signals or predictions. All information is visual and educational only.
HOW THE INDICATOR WORKS
PREVIOUS SESSION LEVELS
The script plots the previous session’s High, Low, and Mid. These levels help observe how the current session behaves around the prior day’s range. They act as reference areas only.
FRACTAL SWING MAP (NON-REPAINTING)
Confirmed fractals are used to mark historical swing highs and swing lows. Since fractals confirm after a certain number of bars, the swings do not repaint once formed. These swings provide a clearer view of market structure.
VOLUME POCKETS
The indicator highlights areas where volume expands relative to a rolling volume average. These regions show increased participation or activity. The highlights are informational and do not imply direction.
PRECISION LIQUIDITY SWEEPS (NON-REPAINTING)
A sweep is tagged only when:
• Price trades beyond a confirmed swing high or swing low
• Price closes back inside the previous swing level
• A wick rejection occurs
• Volume expands relative to a recent rolling average
These markers simply show where price interacted with liquidity around prior structural levels. They do not indicate a trading signal or bias.
HOW TO ADD THE INDICATOR
Open the Pine Editor in TradingView
Search the indicator name and add to favorites.
Click “Add to chart”
Adjust settings as needed (fractals, sweeps, volume pockets, or session levels)
HOW TO READ AND USE THE INDICATOR
SESSION LEVELS
Observe whether price respects, rejects, compresses around, or expands beyond the previous session high, low, or midpoint. These are observational reference levels only.
FRACTALS
Fractal highs and lows help visualize structural turning points. They provide a clearer picture of where liquidity may rest above or below past swing levels.
VOLUME POCKETS
When volume expands compared to the recent average, the candle is shaded. These areas may show increased participation, but no directional meaning is implied.
PRECISION SWEEPS
Sweeps highlight when price reaches beyond a prior confirmed swing level and then rejects that area with displacement. These markers identify interactions with liquidity, but they are not signals and do not forecast future outcomes.
CUSTOMIZATION OPTIONS
Users can adjust:
• Session level visibility
• Fractal sensitivity
• Volume pocket threshold
• Sweep sensitivity and visibility
• Transparency and styling
This makes the tool flexible across different symbols and timeframes.
IMPORTANT NOTES AND POLICY COMPLIANCE
• The indicator does not provide buy or sell signals
• The indicator does not predict price or direction
• All plotted elements are based on past price behavior
• All components are informational only
• Users should perform their own analysis and risk evaluation
• Past behavior does not guarantee future performance
SUMMARY
MSSM provides a structured view of price by combining previous session levels, confirmed swing structure, volume expansion zones, and non-repainting sweep identification. Its purpose is to assist traders in visually analyzing market structure while staying fully aligned with TradingView’s House Rules and content policies.
MACDiver — From axis v1.1MACDiver Indicator
A Pine Script indicator that identifies bullish and bearish divergences between price action and the MACD oscillator. It uses pivot highs/lows in both price and MACD series to detect potential reversal signals. When price makes higher highs (or lower lows) while MACD makes lower highs (or higher lows), the indicator marks these divergences with lines and labels on the chart, providing potential trading signals.
Multi Timeframe Trend IndicatorDiscreet visual display across 4 timeframes (adjustable). If you trade on a 5-minute timeframe, for example, you have an all-in-one visual display across the 4 higher timeframes (e.g., m15, m30, h1 and h4) for better decision-making.
Composite Market Momentum Indicator//@version=5
indicator("Composite Market Momentum Indicator", shorttitle="CMMI", overlay=false)
// Define Inputs
lenRSI = input.int(14, title="RSI Length")
lenMom = input.int(9, title="Momentum Length")
lenShortRSI = input.int(3, title="Short RSI Length")
lenShortRSISma = input.int(3, title="Short RSI SMA Length")
lenSMA1 = input.int(9, title="Composite SMA 1 Length")
lenSMA2 = input.int(34, title="Composite SMA 2 Length")
// Step 1: Create a 9-period momentum indicator of the 14-period RSI
rsiValue = ta.rsi(close, lenRSI)
momRSI = ta.mom(rsiValue, lenMom)
// Step 2: Create a 3-period RSI and a 3-period SMA of that RSI
shortRSI = ta.rsi(close, lenShortRSI)
shortRSISmoothed = ta.sma(shortRSI, lenShortRSISma)
// Step 3: Add Step 1 and Step 2 together to create the Composite Index
compositeIndex = momRSI + shortRSISmoothed
// Step 4: Create two simple moving averages of the Composite Index
sma1 = ta.sma(compositeIndex, lenSMA1)
sma2 = ta.sma(compositeIndex, lenSMA2)
// Step 5: Plot the composite index and its two simple moving averages
plot(compositeIndex, title="Composite Index", color=color.new(#f7cf05, 0), linewidth=2)
plot(sma1, title="SMA 13", color=color.new(#f32121, 0), linewidth=1, style=plot.style_line)
plot(sma2, title="SMA 33", color=color.new(#105eef, 0), linewidth=1, style=plot.style_line)
// Add horizontal lines for reference
hline(0, "Zero Line", color.new(color.gray, 50))
SKeTCHeX - Enhanced 20SMA Cloud
// ║
// ║ Enhanced 20SMA Cloud with Trend Colors
// ║ Developer: SKeTCHeX Institutional Algorithmic Systems
// ║
// ║ DESCRIPTION:
// ║ Professional-grade moving average indicator featuring dynamic cloud
// ║ visualization with intelligent trend-based coloring. The SMA automatically
// ║ changes color based on price position (green when bullish, red when
// ║ bearish), while the surrounding cloud provides dynamic support/resistance
// ║ zones using either ATR volatility measurement or percentage-based width.
// ║
// ║ FEATURES:
// ║ • Real-time trend detection with color-coded SMA
// ║ • Dynamic cloud bands (ATR-based or percentage-based)
// ║ • Multiple price source options (Close, Open, High, Low, HL2, HLC3, OHLC4)
// ║ • Customizable shift for forward/backward projection
// ║ • Institutional-grade visual clarity for multi-timeframe analysis
// ║
// ║ USAGE:
// ║ Green SMA/Cloud = Bullish bias (price above SMA)
// ║ Red SMA/Cloud = Bearish bias (price below SMA)
// ║ Cloud bands act as dynamic support/resistance zones
TTP IFVG Signals With EMA /ICT Gold scalpingThis script uses original logic and alerting rules. in Japan
finding ICT IFVG and EMA conditions.
#IFVG, Forex, ICT, EMA, Scalping, Indicator
This indicator automatically finds IFVG (Imbalance / Fair Value Gap) zones and gives you a buy or sell signal when price comes back and breaks out through that gap.
It also draws a colored box over the gap so you can see the zone visually, and it raises alerts when a new signal appears.
High-level logic:
On every bar, the script looks back up to “IFVG_GapBars” bars.
For each offset i it checks a 3-candle pattern:
– If the low of the newer candle is above the high of the older candle: bullish FVG (price jumped up, leaving a gap).
– If the high of the newer candle is below the low of the older candle: bearish FVG (price jumped down, leaving a gap).
When a valid FVG is found:
– For a bullish FVG it looks for a later close that breaks down through that gap (sell signal).
– For a bearish FVG it looks for a later close that breaks up through that gap (buy signal).
– A moving-average trend filter must agree (downtrend for sells, uptrend for buys).
– It checks that price has not already “filled” the gap before the breakout.
If all conditions are satisfied, it:
– Sets signal_dir = 1 for a buy, or -1 for a sell.
– Draws a box from the original FVG bar to the bar just before the breakout (extended a bit to the right), between the gap high and gap low.
– Plots an ▲ label for buys or ▼ label for sells.
– Triggers the corresponding alert conditions.
Now the parameters:
PipSizeMultilier (PipSizeManual)
Multiplies the symbol’s minimum tick size (syminfo.mintick).
It is used when converting “MinFVG_Pips” into an actual price distance.
If you feel the indicator is too sensitive (too many small gaps), you can increase this multiplier to effectively require a larger price difference.
TickSize
Internal value = syminfo.mintick * PipSizeMultiplier.
This is the actual price step the script uses as a “pip” when checking minimum gap size.
FVG Search Lookback (IFVG_GapBars)
How many bars back from the current bar the script will scan for a 3-candle FVG pattern.
Larger value = it can find older FVGs, but loop cost is higher.
Min FVG Size (Pips/Points) (MinFVG_Pips)
Minimum allowed size of the gap, measured in “pips/points” using TickSize.
If the vertical distance between the gap high and gap low is smaller than this, the gap is ignored.
0.0 means “no size filter” (every FVG is allowed).
FVG Epsilon (Price Units) (FVG_EpsPoints)
Tolerance for the FVG detection.
It is subtracted/added in the condition that checks “low > old high” or “high < old low”.
0.0 means strict gap (no overlap at all). A small positive epsilon allows tiny overlaps to still count as a gap.
Show IFVG Zones (ShowZones)
If true, the script draws a box over the IFVG zone when a signal is confirmed.
If false, no boxes are drawn; you only see the ▲ / ▼ markers and alerts.
Buy Zone Color (ZoneColorBuy)
Fill color and border color for boxes created from bearish FVGs that later produce a buy signal.
Sell Zone Color (ZoneColorSell)
Fill color and border color for boxes created from bullish FVGs that later produce a sell signal.
Box Extension (Bars) (BoxExtension)
How many extra bars to extend the right side of the box beyond the breakout bar.
The internal right coordinate is “bar_index - 1 + BoxExtension”.
Increase this if you want the zone to visually extend further into the future.
MA Period (MA_Period)
Lookback length of the moving average used as a trend filter.
MA Type (MA_Kind)
Type of moving average: “SMA” or “EMA”.
If SMA is chosen, the script uses ta.sma; if EMA, it uses ta.ema.
Moving-average filter behavior:
For sell signals (from bullish FVG): MA must be sloping down (MA < MA ) and price must be below MA.
For buy signals (from bearish FVG): MA must be sloping up (MA > MA ) and price must be above MA.
If these conditions are not satisfied, the FVG is ignored even if the gap and breakout conditions are met.
Signals and alerts:
signal_dir = 1 → buy signal, ▲ label below the bar, “IFVG Buy Alert” / “IFVG Buy/Sell Alert” can fire.
signal_dir = -1 → sell signal, ▼ label above the bar, “IFVG Sell Alert” / “IFVG Buy/Sell Alert” can fire.
signal_dir = 0 → no new signal on this bar.
In short:
This indicator finds 3-candle IFVG gaps, filters them by size and trend, waits for a clean breakout through the gap, draws a box on the original gap zone, and gives you a clear buy or sell signal plus alerts.
Monday Range Levels (Fixed for Forex/XAU)Monday Range Levels Indicator (10-Line Summary)
1. Core Purpose: Defines the initial weekly range in Forex and XAU/USD for structured trading.
2. Range Definition: Automatically plots the High and Low price levels from the first hours of the 3. Monday session.
4. Liquidity Focus: Used primarily to anticipate liquidity sweeps at the start of the trading week.
5. Specific Market: Optimized for high-volatility pairs, especially XAU/USD (Gold) and major Forex pairs.
6. Session Control: Accurately identifies the start of the week regardless of local settings.
7. Timezone Customization: Allows flexible adjustment to NY Time, UTC, or UTC+7 (Vietnam Time).
8. Visual Clarity: Full customization options for line colors, text size, and range shading.
9. Strategic Use: Supports Breakout Trading and Mean Reversion strategies throughout the week.
10. Discipline Tool: Encourages structured trading by providing fixed, objective reference levels.
Application: Simple, reliable tool for consistent Day Trading and Scalping.
"If I get enough love/support, I'll be dropping more indicators for the fam!"






















