Divergence Detector (MACD + Volume)Divergence Detector (MACD + Volume Confirmation)
This indicator automatically detects bullish and bearish divergences between price and MACD, enhanced with volume confirmation to filter out weak signals.
🔹 Core Logic
Pivot Detection:
The script identifies swing highs and lows (pivots) using customizable left/right lookback values.
Bullish Divergence:
Occurs when price makes a lower low, but MACD makes a higher low.
A label "Bull Div" appears below the bar; if confirmed by high volume, it shows "Bull Div 🔥".
Bearish Divergence:
Occurs when price makes a higher high, but MACD makes a lower high.
A label "Bear Div" appears above the bar; if confirmed by high volume, it shows "Bear Div 📉".
Volume Confirmation:
The indicator checks whether the volume at the pivot bar is above the moving average of volume (customizable length).
This ensures that divergence signals are backed by strong market participation.
Inputs
MACD Fast/Slow/Signal Length – standard MACD parameters
Pivot Lookback Left/Right – defines the swing structure sensitivity
Volume MA Length – defines how volume strength is validated
Output
Labels:
🔹 Bull Div / Bull Div 🔥 → Bullish divergence (confirmed with volume)
🔹 Bear Div / Bear Div 📉 → Bearish divergence (confirmed with volume)
Tips
Works best on higher timeframes and trending markets.
Volume confirmation helps filter false divergences in low liquidity conditions.
Combine with trend or structure indicators for better trade setups.
----------------------------------------------------------------------------------------------
اندیکاتور شناسایی واگرایی MACD با تأیید حجم
این اندیکاتور بهصورت خودکار واگراییهای صعودی و نزولی بین قیمت و MACD را شناسایی کرده و با استفاده از تأیید حجم (Volume Confirmation) سیگنالهای ضعیف را فیلتر میکند.
🔹 منطق عملکرد
شناسایی پیوتها:
نقاط چرخش (سقف و کف) با استفاده از تعداد کندلهای قابل تنظیم در دو سمت شناسایی میشوند.
واگرایی صعودی (Bullish):
زمانی که قیمت کف پایینتر و MACD کف بالاتر میسازد.
برچسب "Bull Div" در زیر کندل نمایش داده میشود؛ اگر حجم بالا باشد، با علامت 🔥 مشخص میگردد.
واگرایی نزولی (Bearish):
زمانی که قیمت سقف بالاتر و MACD سقف پایینتر میسازد.
برچسب "Bear Div" در بالای کندل نمایش داده میشود؛ اگر حجم بالا باشد، با 📉 مشخص میگردد.
تأیید حجم:
اگر حجم در کندل پیوت بالاتر از میانگین متحرک حجم باشد، سیگنال معتبرتر در نظر گرفته میشود.
تنظیمات ورودی
تنظیمات MACD (Fast, Slow, Signal)
پارامترهای شناسایی پیوت (Left / Right)
طول میانگین متحرک حجم (Volume MA Length)
خروجیها
Bull Div 🔥 / Bear Div 📉 برای واگراییهای تأییدشده با حجم
Bull Div / Bear Div برای واگراییهای بدون تأیید حجم
نکات کاربردی
بهترین عملکرد در تایمفریمهای بالا و بازارهای دارای روند
تأیید حجم به حذف سیگنالهای اشتباه در شرایط حجم پایین کمک میکند
برای دقت بیشتر، آن را با اندیکاتورهای روند یا ساختار ترکیب کنید
⚠️ Disclaimer:
This script is provided for educational and informational purposes only.
It does not constitute financial advice, and the author is not responsible for any financial losses caused by its use.
Always confirm signals with your own analysis and other tools before making trading decisions.
⚠️ توجه:
این اسکریپت صرفاً جهت آموزش و اطلاعرسانی طراحی شده و توصیه مالی یا سرمایهگذاری محسوب نمیشود.
نویسنده مسئول هیچگونه ضرر یا زیان احتمالی ناشی از استفاده از آن نیست.
لطفاً پیش از هر تصمیم معاملاتی، تحلیل شخصی خود را انجام داده و از این ابزار در کنار سایر ابزارهای تحلیل و مدیریت ریسک استفاده کنید.
指标和策略
DeepClean Linear indicator 1. Indicator Name
DeepClean Linear indicator
2. One-Line Introduction
A trend-recognition indicator that overlays a “transparent wave” on price, removing noise and revealing directional bias and trend intensity in a highly intuitive visual form.
3. Overall Summary
The DeepClean Linear indicator calculates trend direction using changes in linear regression slope and determines trend strength by comparing how consistently the regression line moves over a defined lookback window.
Rather than merely identifying trend direction, the indicator applies a triple-layer noise-filtering process (EMA → SMA → RMA) to produce a clean, wave-shaped data line that filters out unnecessary market noise.
This transparent wave sits directly on top of price, allowing traders to visually compare price movement and trend strength at the same time.
A stronger trend results in a taller, thicker wave, while weakening momentum causes the wave to thin, making it easier to spot trend continuation, exhaustion, or upcoming reversal.
Color automatically shifts based on trend:
Bright cyan/teal during bullish conditions
Reddish tones during bearish conditions
Transparency dynamically adjusts depending on strength
The indicator excels at identifying the true underlying trend by ignoring minor fluctuations and is well suited for scalping, swing trading, and position trading.
It also significantly reduces false signals in ranging markets, making it ideal for trend-following strategies.
4. Advantages
① Ultra-Clean Noise-Reduced Wave
Utilizes a 3-stage smoothing filter (EMA → SMA → RMA) to produce a much cleaner wave than standard moving averages, highlighting only core trend movement.
② Trend Direction & Strength at a Glance
Based on comparative linear regression behavior, the indicator quantifies both direction and strength, making convergence/divergence highly visible.
③ Intuitive Price Overlay Visualization
The semi-transparent wave sits directly on price action, allowing traders to instantly see divergence from price, trend weakening, or early turning points.
④ Dynamic Transparency Coloring
Strong trends appear bold and intense, while weaker trends fade visually—making signal interpretation effortless.
⑤ Excellent Range Filtering
During low-direction phases (state = 0), the wave turns neutral, preventing forced or premature entries.
⑥ Multi-Timeframe Compatibility
The wave remains stable from 1-minute to weekly charts, making it suitable for trend analysis, execution, and risk control across all timeframes.
📌 Core Concept Overview
The indicator evaluates the relative comparison of linear regression values over the last n periods.
A positive trend value indicates bullish bias
A negative trend value indicates bearish bias
Intensity represents strength and controls wave height
waveTop / waveBot define the visual wave area relative to price
State Values
1 = Bullish Trend
-1 = Bearish Trend
0 = Neutral / Weak Direction
⚙️ Settings Overview
Option Description
Trend Lookback (n) Comparison window for regression slope. Higher = bigger trend focus.
Range Tolerance (%) Strength threshold to classify bullish/bearish movement. Higher = more conservative.
Source Price source for regression calculations.
Linear Reg Length Length of the linear regression.
Noise Filter Strength (smoothK) Controls the smoothing intensity. Higher = smoother wave.
Wave Amplitude (amp) Adjusts the height/thickness of the wave.
Bull/Bear Color Colors for bullish/bearish waves.
Base Transparency Base opacity level; modified dynamically by trend strength.
📈 Bullish Timing Recognition Examples
Wave begins turning brighter teal and more opaque, indicating strengthening upward pressure.
waveTop expands above price, signaling early trend expansion.
State flips to 1, often marking a trend restart or early reversal phase.
A steadily rising wave height suggests sustained bullish momentum.
📉 Bearish Timing Recognition Examples
Wave shifts into red tones, showing bearish dominance.
waveBot expands below price, indicating rising downside volatility.
State stays at -1 while intensity increases, signaling entry into strong downtrend conditions.
A shift from weak → strong bearish intensity can provide short-entry timing cues.
🧪 Recommended Usage
Use as a core component in trend-following systems
Adjust position size based on wave thickness (trend strength)
Combine with RSI/MACD to reduce false signals during overbought/oversold zones
Sudden wave expansion during volatility increases helps detect trend acceleration
In sideways markets, frequent state = 0 readings help avoid low-probability trades
🔒 Important Notes
As a trend-based indicator, it may misread choppy/ranging markets
Because of smoothing, signals may appear slightly delayed
Extreme news volatility can temporarily distort trend clarity
Atlas 8 Currency Session Momentum (6H, London)This indicator calculates real-time currency strength for the 8 major currencies (USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF) using a balanced multi-pair engine and a 6-hour momentum reset.
🔍 How it works
The indicator computes the relative strength of each currency by averaging the percentage change of 7 major cross-pairs for each currency.
A currency's value increases when pairs where it is the base appreciate, and decreases when pairs where it is the quote depreciate.
This creates a symmetric and stable strength calculation similar to institutional relative-value models.
🕒 Session-based Momentum Reset
The global trading day is split into 4 × 6-hour blocks:
• 00:00–06:00 Tokyo
• 06:00–12:00 London
• 12:00–18:00 New York
• 18:00–24:00 Late US/Asia pre-open
At each new 6-hour session, all strength lines reset to 0.
This highlights fresh intraday momentum generated by liquidity transitions between sessions.
🎯 What the indicator shows
• Relative strength of all 8 currencies
• Smooth momentum curves using EMA smoothing
• Vertical dividers at each new session
• Background color for each session
• Real intraday build-up of strength/weakness (not cumulative from previous day)
This tool is designed for intraday traders who follow cross-currency momentum during session transitions (Tokyo → London → NY).
🧭 How to use it
• Look for the strongest vs weakest currency after each session reset
• Identify fresh trends during London and NY opens
• Confirm currency-pair bias using strength divergence
• Track momentum exhaustion when lines flatten or converge
10/20 EMA 50/100/200 SMA — by mijoomoCreated by mijoomo.
This indicator combines EMA 10 & EMA 20 with SMA 50/100/200 in one clean package.
Each moving average is toggleable, fully labeled, and alert-compatible.
Designed for traders who want a simple and effective multi-MA trend tool.
Sideways & Breakout Detector + Forecast//@version=6
indicator("Sideways & Breakout Detector + Forecast", overlay=true, max_labels_count=500)
// Inputs
lengthATR = input.int(20, "ATR Länge")
lengthMA = input.int(50, "Trend MA Länge")
sqFactor = input.float(1.2, "Seitwärtsfaktor")
brkFactor = input.float(1.5, "Breakoutfaktor")
// ATR / Volatilität
atr = ta.atr(lengthATR)
atrSMA = ta.sma(atr, lengthATR)
// Basislinie / Trend
basis = ta.sma(close, lengthATR)
trendMA = ta.sma(close, lengthMA)
// Seitwärtsbedingung
isSideways = atr < atrSMA * sqFactor
// Breakouts
upperBreak = close > basis + atr * brkFactor
lowerBreak = close < basis - atr * brkFactor
// Vorhergesagter Ausbruch (Forecast)
// Wenn Seitwärtsphase + Kurs nahe obere oder untere Kanalgrenze
forecastBull = isSideways and (close > basis + 0.5 * atr)
forecastBear = isSideways and (close < basis - 0.5 * atr)
// Farben
barcolor(isSideways ? color.new(color.yellow, 40) : na)
barcolor(upperBreak ? color.green : na)
barcolor(lowerBreak ? color.red : na)
// Breakout-Bänder
plot(basis + atr * brkFactor, "Bull Break Zone", color=color.new(color.green, 60))
plot(basis - atr * brkFactor, "Bear Break Zone", color=color.new(color.red, 60))
// Labels (klein)
if isSideways
label.new(bar_index, close, "Seitwärts", color=color.yellow, style=label.style_label_center, size=size.tiny)
if upperBreak
label.new(bar_index, high, "Bull Breakout", color=color.green, style=label.style_label_up, size=size.tiny)
if lowerBreak
label.new(bar_index, low, "Bear Breakout", color=color.red, style=label.style_label_down, size=size.tiny)
// Vorhergesagte Ausbrüche markieren
plotshape(forecastBull, title="Forecast Bull", location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, size=size.tiny)
plotshape(forecastBear, title="Forecast Bear", location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, size=size.tiny)
// Alerts
alertcondition(isSideways, "Seitwärtsphase", "Der Markt läuft seitwärts.")
alertcondition(upperBreak, "Bull Breakout", "Ausbruch nach oben!")
alertcondition(lowerBreak, "Bear Breakout", "Ausbruch nach unten!")
alertcondition(forecastBull, "Forecast Bull", "Voraussichtlicher Bull-Ausbruch!")
alertcondition(forecastBear, "Forecast Bear", "Voraussichtlicher Bear-Ausbruch!")
ColorGradientLibrary "ColorGradient"
Library for creating color gradients and palettes with hex colors
hexToColor(hexStr)
hexToColor
Parameters:
hexStr (string) : Hex color string (e.g., "#FF0000" or "FF0000")
Returns: color value
gradientStep(color1, color2, steps, step)
gradientStep
Parameters:
color1 (string) : Starting color (hex string)
color2 (string) : Ending color (hex string)
steps (int) : Number of steps including start and end
step (int) : Current step (0 to steps-1)
Returns: Interpolated color
multiGradientStep(colors, totalSteps, step)
multiGradientStep
Parameters:
colors (array) : Array of hex color strings
totalSteps (int) : Total number of steps across all colors
step (int) : Current step (0 to totalSteps-1)
Returns: Interpolated color
applyPaletteStyle(hexStr, style)
applyPaletteStyle
Parameters:
hexStr (string) : Hex color string
style (string) : "normal", "pale", "pastel", "bright", "matte"
Returns: Adjusted color
getStyledGradient(colors, totalSteps, step, style)
getStyledGradient
Parameters:
colors (array) : Array of hex color strings
totalSteps (int) : Total number of steps
step (int) : Current step
style (string) : Palette style ("normal", "pale", "pastel", "bright", "matte")
Returns: Styled color
Session Open Range, Breakout & Trap Framework - TrendPredator OBSession Open Range, Breakout & Trap Framework — TrendPredator Open Box
Stacey Burke’s trading approach combines concepts from George Douglas Taylor, Tony Crabel, Steve Mauro, and Robert Schabacker. His framework focuses on reading price behaviour across daily templates and identifying how markets move through recurring cycles of expansion, contraction, and reversal. While effective, much of this analysis requires real-time interpretation of session-based behaviour, which can be demanding for traders working on lower intraday timeframes.
The TrendPredator indicators formalize parts of this methodology by introducing mechanical rules for multi-timeframe bias tracking and session structure analysis. They aim to present the key elements of the system—bias, breakouts, fakeouts, and range behaviour—in a consistent and objective way that reduces discretionary interpretation.
The Open Box indicator focuses specifically on the opening behaviour of major trading sessions. It builds on principles found in classical Open Range Breakout (ORB) techniques described by Tony Crabel, where a defined time window around the session open forms a structural reference range. Price behaviour relative to this range—breaking out, failing back inside, or expanding—can highlight developing session bias, potential trap formation, and directional conviction.
This indicator applies these concepts throughout the major equity sessions. It automatically maps the session’s initial range (“Open Box”) and tracks how price interacts with it as liquidity and volatility increase. It also incorporates related structural references such as:
* the first-hour high and low of the futures session
* the exact session open level
* an anchored VWAP starting at the session open
* automated expansion levels projected from the Open Box
In combination, these components provide a unified view of early session activity, including breakout attempts, fakeouts, VWAP reactions, and liquidity targeting. The Open Box offers a structured lens for observing how price transitions through the major sessions (Asia → London → New York) and how these behaviours relate to higher-timeframe bias defined in the broader TrendPredator framework.
Core Features
Open Box (Session Structure)
The indicator defines an initial session range beginning at the selected session open. This “Open Box” represents a fixed time window—commonly the first 30 minutes, or any user-defined duration—that serves as a structural reference for analysing early session behaviour.
The range highlights whether price remains inside the box, breaks out, or rejects the boundaries, providing a consistent foundation for interpreting early directional tendencies and recognising breakout, continuation, or fakeout characteristics.
How it works:
* At the session open, the indicator calculates the high and low over the specified time window.
* This range is plotted as the initial structure of the session.
* Price behaviour at the boundaries can illustrate emerging bias or potential trap formation.
* An optional secondary range (e.g., 15-minute high/low) can be enabled to capture early volatility with additional precision.
Inputs / Options:
* Session specifications (Tokyo, London, New York)
* Open Box start and end times (e.g., equity open + first 30 minutes, or any custom length)
* Open Box colour and label settings
* Formatting options for Open Box high and low lines
* Optional secondary range per session (e.g., 15-minute high/low)
* Forward extension of Open Box high/low lines
* Number of historic Open Boxes to display
Session VWAPs
The indicator plots VWAPs for each major trading session—Asia, London, and New York—anchored to their respective session opens. These session-specific VWAPs assist in tracking how value develops through the day and how price interacts with session-based volume distributions.
How it works:
* At each session open, a VWAP is anchored to the open price.
* The VWAP updates throughout the session as new volume and price data arrive.
* Deviations above or below the VWAP may indicate balance, imbalance, or directional control.
* Viewed together, session VWAPs help identify transitions in value across sessions.
Inputs / Options:
* Enable or disable VWAP per session
* Adjustable anchor and end times (optionally to end of day)
* Line styling and label settings
* Number of historic VWAPs to draw
First Hour High/Low Extensions
The indicator marks the high and low formed during the first hour of each session. These reference points often function as early control levels and provide context for assessing whether the session is establishing bias, consolidating, or exhibiting reversal behaviour.
How it works:
* After the session starts, the indicator records the highest and lowest prices during the first hour.
* These levels are plotted and extended across the session.
* They provide a visual reference for observing reactions, targets, or rejection zones.
Inputs / Options:
* Enable or disable for each session
* Line style, colour, and label visibility
* Number of historic sessions displayed
EQO Levels (Equity Open)
The indicator plots the opening price of each configured session. These “Equity Open” levels represent short-term reference points that can attract price early in the session.
Once the level is revisited after the Open Box has formed, it is automatically cut to avoid clutter. If not revisited, the line remains as an untested reference, similar to a naked point of control.
How it works:
* At session open, the open price is recorded.
* The level is plotted as a local reference.
* If price interacts with the level after the Open Box completes, the line is cut.
* Untested EQOs extend forward until interacted with.
Inputs / Options:
* Enable/disable per session
* Line style and label settings
* Optional extension into the next day
* Option for cutting vs. hiding on revisit
* Number of historic sessions displayed
OB Range Expansions (Automatic)
Range expansions are calculated from the height of the Open Box. These levels provide structured reference zones for identifying potential continuation or exhaustion areas within a session.
How it works:
* After the Open Box is formed, multiples of the range (e.g., 1×, 2×, 3×) are projected.
* These expansion levels are plotted above and below the range.
* Price reactions near these areas can illustrate continuation, hesitation, or potential reversal.
Inputs / Options:
* Enable or disable per session
* Select number of multiples
* Line style, colour, and label settings
* Extension length into the session
Stacey Burke 12-Candle Window Marker
The indicator can highlight the 12-candle window often referenced in Stacey Burke’s session methodology. This window represents the key active period of each session where breakout attempts, volatility shifts, and reversal signatures often occur.
How it works:
* A configurable window (default 12 candles) is highlighted from each session open.
* This window acts as a guide for observing active session behaviour.
* It remains visible throughout the session for structural context.
Inputs / Options:
* Enable/disable per session
* Configurable window duration (default: 3 hours)
* Colour and transparency controls
Concept and Integration
The Open Box is built around the same multi-timeframe logic that underpins the broader TrendPredator framework.
While higher-timeframe tools track bias and setups across the H8–D–W–M levels, the Open Box focuses on the H1–M30 domain to define session structure and observe how early intraday behaviour aligns with higher-timeframe conditions.
The indicator integrates with the TrendPredator FO (Breakout, Fakeout & Trend Switch Detector), which highlights microstructure signals on lower timeframes (M15/M5). Together they form a layered workflow:
* Higher timeframes: context, bias, and developing setups
* TrendPredator OB: intraday and intra-session structure
* TrendPredator FO: microstructure confirmation (e.g., FOL/FOH, switches)
This alignment provides a structured way to observe how daily directional context interacts with intraday behaviour.
See the public open source indicator TP FO here (click on it for access):
Practical Application
Before Session Open
* Review previous session Open Box, Open level, and VWAPs
* Assess how higher-timeframe bias aligns with potential intraday continuation or reversal
* Note untested EQO levels or VWAPs that may function as liquidity attractors
During Session Open
* Observe behaviour around the first-hour high/low and higher-timeframe reference levels
* Monitor how the M15 and 30-minute ranges close
* Track reactions relative to the session open level and the session VWAP
After the Open Box completes
* Assess price interaction with Open Box boundaries and first-hour levels
* Use microstructure signals (e.g., FOH/FOL, switches) for potential confirmation
* Refer to expansion levels as reference zones for management or target setting
After Session
* Review how price behaved relative to the Open Box, EQO levels, VWAPs, and expansion zones
* Analyse breakout attempts, fakeouts, and whether intraday structure aligned with the broader daily move
Example Workflow and Trade
1. Higher-timeframe analysis signals a Daily Fakeout Low Continuation (bullish context).
2. The New York session forms an Open Box; price breaks above and holds above the first-hour high.
3. A Fakeout Low + Switch Bar appears on M5 (via FO), after retesting the session VWAP triggering the entry.
4. 1x expansion level serves as reference targets for take profit.
Relation to the TrendPredator Ecosystem
The Open Box is part of the TrendPredator Indicator Family, designed to apply multi-timeframe logic consistently across:
* higher-timeframe context and setups
* intraday and session structure (OB)
* microstructure confirmation (FO)
Together, these modules offer a unified structure for analysing how daily and intraday cycles interact.
Disclaimer
This indicator is for educational purposes only and does not guarantee profits.
It does not provide buy or sell signals but highlights structural and behavioural areas for analysis.
Users are solely responsible for their trading decisions and outcomes.
Heikin Ashi Croce - MinimalHeikin Ashi Doji Marker – Minimal Version (Numeric Parameters)
This indicator identifies potential Heikin Ashi doji candles and marks them with a small triangle above the candle.
Numeric criteria used to detect a doji:
Body size: up to 60% of the total candle range
Upper wick: at least 15% of the total candle range
Lower wick: at least 15% of the total candle range
Wick balance: the ratio of upper wick to lower wick between 0.5 and 2
Purpose:
The indicator highlights visually evident doji candles while leaving the final decision to the trader’s discretion. It is non-restrictive, allowing traders to filter signals based on context, trend, and pullbacks.
Sniper Entry AU - AYUSHThis indicator combines EMA 9, EMA 15, and VWAP to identify trend direction and intraday strength. EMA 9 and EMA 15 show short-term momentum and crossover signals, while VWAP acts as an institutional reference point for fair value. Together, they help traders spot trend continuation, pullbacks, and high-quality entry zones during intraday sessions.
ATR Risk Manager v5.2 [Auto-Extrapolate]If you ever had problems knowing how much contracts to use for a particular timeframe to keep your risk within acceptable levels, then this indicator should help. You just have to define your accepted risk based on ATR and also percetage of your drawdown, then the indicator will tell you how many contracts you should use. If the risk is too high, it will also tell you not to trade. This is only for futures NQ MNQ ES MES GC MGC CL MCL MYM and M2K.
Omega Correlation [OmegaTools]Omega Correlation (Ω CRR) is a cross-asset analytics tool designed to quantify both the strength of the relationship between two instruments and the tendency of one to move ahead of the other. It is intended for traders who work with indices, futures, FX, commodities, equities and ETFs, and who require something more robust than a simple linear correlation line.
The indicator operates in two distinct modes, selected via the “Show” parameter: Correlation and Anticipation. In Correlation mode, the script focuses on how tightly the current chart and the chosen second asset move together. In Anticipation mode, it shifts to a lead–lag perspective and estimates whether the second asset tends to behave as a leader or a follower relative to the symbol on the chart.
In both modes, the core inputs are the chart symbol and a user-selected second symbol. Internally, both assets are transformed into normalized log-returns: the script computes logarithmic returns, removes short-term mean and scales by realized volatility, then clips extreme values. This normalisation allows the tool to compare behaviour across assets with different price levels and volatility profiles.
In Correlation mode, the indicator computes a composite correlation score that typically ranges between –1 and +1. Values near +1 indicate strong and persistent positive co-movement, values near zero indicate an unstable or weak link, and values near –1 indicate a stable anti-correlation regime. The composite score is constructed from three components.
The first component is a normalized return co-movement measure. After transforming both instruments into normalized returns, the script evaluates how similar those returns are bar by bar. When the two assets consistently deliver returns of similar sign and magnitude, this component is high and positive. When they frequently diverge or move in opposite directions, it becomes negative. This captures short-term co-movement in a volatility-adjusted way.
The second component focuses on high–low swing alignment. Rather than looking only at closes, it examines the direction of changes in highs and lows for each bar. If both instruments are printing higher highs and higher lows together, or lower highs and lower lows together, the swing structure is considered aligned. Persistent alignment contributes positively to the correlation score, while repeated mismatches between the swing directions reduce it. This helps differentiate between superficial price noise and structural similarity in trend behaviour.
The third component is a classical Pearson correlation on closing prices, computed over a longer lookback. This serves as a stabilising backbone that summarises general co-movement over a broader window. By combining normalized return co-movement, swing alignment and standard price correlation with calibrated weights, the Correlation mode provides a richer view than a single linear measure, capturing both short-term dynamic interaction and longer-term structural linkage.
In Anticipation mode, Omega Correlation estimates whether the second asset tends to lead or lag the current chart. The output is again a continuous score around the range. Positive values suggest that the second asset is acting more as a leader, with its past moves bearing informative value for subsequent moves of the chart symbol. Negative values indicate that the second asset behaves more like a laggard or follower. Values near zero suggest that no stable lead–lag structure can be identified.
The anticipation score is built from four elements inspired by quantitative lead–lag and price discovery analysis. The first element is a residual lead correlation, conceptually similar to Granger-style logic. The script first measures how much of the chart symbol’s normalized returns can be explained by its own lagged values. It then removes that component and studies the correlation between the residuals and lagged returns of the second asset. If the second asset’s past returns consistently explain what the chart symbol does beyond its own autoregressive behaviour, this residual correlation becomes significantly positive.
The second element is an asymmetric lead–lag structure measure. It compares the strength of relationships in both directions across multiple lags: the correlation of the current symbol with lagged versions of the second asset (candidate leader) versus the correlation of lagged values of the current symbol with the present values of the second asset. If the forward direction (second asset leading the first) is systematically stronger than the backward direction, the structure is skewed toward genuine leadership of the second asset.
The third element is a relative price discovery score, constructed by building a dynamic hedge ratio between the two prices and defining a spread. The indicator looks at how changes in each asset contribute to correcting deviations in this spread over time. When the chart symbol tends to do most of the adjustment while the second asset remains relatively stable, it suggests that the second asset is taking a greater role in determining the equilibrium price and the chart symbol is adjusting to it. The difference in adjustment intensity between the two instruments is summarised into a single score.
The fourth element is a breakout follow-through causality component. The script scans for breakout events on the second asset, where its price breaks out of a recent high or low range while the chart symbol has not yet done so. It then evaluates whether the chart symbol subsequently confirms the breakout direction, remains neutral, or moves against it. Events where the second asset breaks and the first asset later follows in the same direction add positive contribution, while failed or contrarian follow-through reduce this component. The contribution is also lightly modulated by the strength of the breakout, via the underlying normalized return.
The four elements of the Anticipation mode are combined into a single leading correlation score, providing a compact and interpretable measure of whether the second asset currently behaves as an effective early signal for the symbol you trade.
To aid interpretation, Omega Correlation builds dynamic bands around the active series (correlation or anticipation). It estimates a long-term central tendency and a typical deviation around it, plotting upper and lower bands that highlight unusually high or low values relative to recent history. These bands can be used to distinguish routine fluctuations from genuinely extreme regimes.
The script also computes percentile-based levels for the correlation series and uses them to track two special price levels on the main chart: lost correlation levels and gained correlation levels. When the correlation drops below an upper percentile threshold, the current price is stored as a lost correlation level and plotted as a horizontal line. When the correlation rises above a lower percentile threshold, the current price is stored as a gained correlation level. These levels mark zones where a historically strong relationship between the two markets broke down or re-emerged, and can be used to frame divergence, convergence and spread opportunities.
An information panel summarises, in real time, whether the second asset is behaving more as a leading, lagging or independent instrument according to the anticipation score, and suggests whether the current environment is more conducive to de-alignment, re-alignment or classic spread behaviour based on the correlation regime. This makes the tool directly interpretable even for users who are not familiar with all the underlying statistical details.
Typical applications for Omega Correlation include intermarket analysis (for example, index vs index, commodity vs related equity sector, FX vs bonds), dynamic hedge sizing, regime detection for algorithmic strategies, and the identification of lead–lag structures where a macro driver or benchmark can be monitored as an early signal for the instrument actually traded. The indicator can be applied across intraday and higher timeframes, with the understanding that the strength and nature of relationships will differ across horizons.
Omega Correlation is designed as an advanced analytical framework, not as a standalone trading system. Correlation and lead–lag relationships are statistical in nature and can change abruptly, especially around macro events, regime shifts or liquidity shocks. A positive anticipation reading does not guarantee that the second asset will always move first, and a high correlation regime can break without warning. All outputs of this tool should be combined with independent analysis, sound risk management and, when appropriate, backtesting or forward testing on the user’s specific instruments and timeframes.
The intention behind Omega Correlation is to bring techniques inspired by quantitative research, such as normalized return analysis, residual correlation, asymmetric lead–lag structure, price discovery logic and breakout event studies, into an accessible TradingView indicator. It is intended for traders who want a structured, professional way to understand how markets interact and to incorporate that information into their discretionary or systematic decision-making processes.
Stratégie SMC V18.2 (BTC/EUR FINAL R3 - Tendance)This strategy is an automated implementation of Smart Money Concepts (SMC), designed to operate on the Bitcoin/Euro (BTC/EUR) chart using the 15-minute Timeframe (M15).It focuses on identifying high-probability zones (Order Blocks) after a confirmed Break of Structure (BOS) and a Liquidity Sweep, utilizing an H1/EMA 200 trend filter to only execute trades in the direction of the dominant market flow.Risk management is strict: every trade uses a fixed Risk-to-Reward Ratio (R:R) of 1:3.🧱 Core Logic Components
1. Trend Filter (H1/EMA 200)Objective: To avoid counter-trend entries, which has allowed the success rate to increase to nearly $65\%$ in backtests.Mechanism: A $200$-period EMA is plotted on a higher timeframe (Default: H1/60 minutes).Long (Buy): Entry is only permitted if the current price (M15) is above the trend EMA.Short (Sell): Entry is only permitted if the current price (M15) is below the trend EMA.
2. Order Block (OB) DetectionA potential Order Block is identified on the previous candle if it is
accompanied by an inefficiency (FVG - Fair Value Gap).
3. Advanced SMC ValidationBOS (Break of Structure): A recent BOS must be confirmed by breaking the swing high/low defined by the swing length (Default: 4 M15 candles).Liquidity (Liquidity Sweep): The Order Block zone must have swept recent liquidity (defined by the Liquidity Search Length) within a certain tolerance (Default: $0.1\%$).Point of Interest: The OB must form in a premium zone (for shorts) or a discount zone (for longs) relative to the current swing range (above or below the $50\%$ level of the range).
4. Execution and Risk ManagementEntry: The trade is triggered when the price touches the active Order Block (mitigation).Stop Loss (SL): The SL is fixed at the low of the OB (for longs) or the high of the OB (for shorts).Take Profit (TP): The TP is strictly set at a level corresponding to 3 times the SL distance (R:R 1:3).Lot Sizing: The trade quantity is calculated to risk a fixed amount (Default: 2.00 Euros) per transaction, capped by a Lot Max and Lot Min defined by the user.
Input Parameters (Optimized for BTC/EUR M15)Users can adjust these parameters to modify sensitivity and risk profile. The default values are those optimized for the high-performing backtest (Profit Factor $> 3$).ParameterDescriptionDefault Value (M15)Long. Swing (BOS)Candle length used to define the swing (and thus the BOS).4Long. Recherche Liq.Number of candles to scan to confirm a liquidity sweep.7Tolérance Liq. (%)Price tolerance to validate the liquidity sweep (as a percentage of price).0.1Timeframe TendanceChart timeframe used for the EMA filter (e.g., 60 = H1).60 (H1)Longueur EMA TendancePeriods used for the trend EMA.200Lot Max (Quantité Max BTC)Maximum quantity of BTC the strategy is allowed to trade.0.01Lot Min Réel (Exigence Broker)Minimum quantity required by the broker/exchange.0.00001
لbsm15// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) creativecommons.org
// © LuxAlgo
//@version=5
indicator("لbsm15", overlay = true, max_lines_count = 500, max_boxes_count = 500, max_bars_back = 3000)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
liqGrp = 'Liquidity Detection'
liqLen = input.int (7, title = 'Detection Length', minval = 3, maxval = 13, inline = 'LIQ', group = liqGrp)
liqMar = 10 / input.float (6.9, 'Margin', minval = 4, maxval = 9, step = 0.1, inline = 'LIQ', group = liqGrp)
liqBuy = input.bool (true, 'Buyside Liquidity Zones, Margin', inline = 'Buyside', group = liqGrp)
marBuy = input.float(2.3, '', minval = 1.5, maxval = 10, step = .1, inline = 'Buyside', group = liqGrp)
cLIQ_B = input.color (color.new(#4caf50, 0), '', inline = 'Buyside', group = liqGrp)
liqSel = input.bool (true, 'Sellside Liquidity Zones, Margin', inline = 'Sellside', group = liqGrp)
marSel = input.float(2.3, '', minval = 1.5, maxval = 10, step = .1, inline = 'Sellside', group = liqGrp)
cLIQ_S = input.color (color.new(#f23645, 0), '', inline = 'Sellside', group = liqGrp)
lqVoid = input.bool (false, 'Liquidity Voids, Bullish', inline = 'void', group = liqGrp)
cLQV_B = input.color (color.new(#4caf50, 0), '', inline = 'void', group = liqGrp)
cLQV_S = input.color (color.new(#f23645, 0), 'Bearish', inline = 'void', group = liqGrp)
lqText = input.bool (false, 'Label', inline = 'void', group = liqGrp)
mode = input.string('Present', title = 'Mode', options = , inline = 'MOD', group = liqGrp)
visLiq = input.int (3, ' # Visible Levels', minval = 1, maxval = 50, inline = 'MOD', group = liqGrp)
//-----------------------------------------------------------------------------}
//General Calculations
//-----------------------------------------------------------------------------{
maxSize = 50
atr = ta.atr(10)
atr200 = ta.atr(200)
per = mode == 'Present' ? last_bar_index - bar_index <= 500 : true
//-----------------------------------------------------------------------------}
//User Defined Types
//-----------------------------------------------------------------------------{
// @type used to store pivot high/low data
//
// @field d (array) The array where the trend direction is to be maintained
// @field x (array) The array where the bar index value of pivot high/low is to be maintained
// @field y (array) The array where the price value of pivot high/low is to be maintained
type ZZ
int d
int x
float y
// @type bar properties with their values
//
// @field o (float) open price of the bar
// @field h (float) high price of the bar
// @field l (float) low price of the bar
// @field c (float) close price of the bar
// @field i (int) index of the bar
type bar
float o = open
float h = high
float l = low
float c = close
int i = bar_index
// @type liquidity object definition
//
// @field bx (box) box maitaing the liquity level margin extreme levels
// @field bxz (box) box maitaing the liquity zone margin extreme levels
// @field bxt (box) box maitaing the labels
// @field brZ (bool) mainains broken zone status
// @field brL (bool) mainains broken level status
// @field ln (line) maitaing the liquity level line
// @field lne (line) maitaing the liquity extended level line
type liq
box bx
box bxz
box bxt
bool brZ
bool brL
line ln
line lne
//-----------------------------------------------------------------------------}
//Variables
//-----------------------------------------------------------------------------{
var ZZ aZZ = ZZ.new(
array.new (maxSize, 0),
array.new (maxSize, 0),
array.new (maxSize, na)
)
bar b = bar.new()
var liq b_liq_B = array.new (1, liq.new(box(na), box(na), box(na), false, false, line(na), line(na)))
var liq b_liq_S = array.new (1, liq.new(box(na), box(na), box(na), false, false, line(na), line(na)))
var b_liq_V = array.new_box()
var int dir = na, var int x1 = na, var float y1 = na, var int x2 = na, var float y2 = na
//-----------------------------------------------------------------------------}
//Functions/methods
//-----------------------------------------------------------------------------{
// @function maintains arrays
// it prepends a `value` to the arrays and removes their oldest element at last position
// @param aZZ (UDT, array, array>) The UDT obejct of arrays
// @param _d (array) The array where the trend direction is maintained
// @param _x (array) The array where the bar index value of pivot high/low is maintained
// @param _y (array) The array where the price value of pivot high/low is maintained
//
// @returns none
method in_out(ZZ aZZ, int _d, int _x, float _y) =>
aZZ.d.unshift(_d), aZZ.x.unshift(_x), aZZ.y.unshift(_y), aZZ.d.pop(), aZZ.x.pop(), aZZ.y.pop()
// @function (build-in) sets the maximum number of bars that is available for historical reference
max_bars_back(time, 1000)
//-----------------------------------------------------------------------------}
//Calculations
//-----------------------------------------------------------------------------{
x2 := b.i - 1
ph = ta.pivothigh(liqLen, 1)
pl = ta.pivotlow (liqLen, 1)
if ph
dir := aZZ.d.get(0)
x1 := aZZ.x.get(0)
y1 := aZZ.y.get(0)
y2 := nz(b.h )
if dir < 1
aZZ.in_out(1, x2, y2)
else
if dir == 1 and ph > y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if per
count = 0
st_P = 0.
st_B = 0
minP = 0.
maxP = 10e6
for i = 0 to maxSize - 1
if aZZ.d.get(i) == 1
if aZZ.y.get(i) > ph + (atr / liqMar)
break
else
if aZZ.y.get(i) > ph - (atr / liqMar) and aZZ.y.get(i) < ph + (atr / liqMar)
count += 1
st_B := aZZ.x.get(i)
st_P := aZZ.y.get(i)
if aZZ.y.get(i) > minP
minP := aZZ.y.get(i)
if aZZ.y.get(i) < maxP
maxP := aZZ.y.get(i)
if count > 2
getB = b_liq_B.get(0)
if st_B == getB.bx.get_left()
getB.bx.set_top(math.avg(minP, maxP) + (atr / liqMar))
getB.bx.set_rightbottom(b.i + 10, math.avg(minP, maxP) - (atr / liqMar))
else
b_liq_B.unshift(
liq.new(
box.new(st_B, math.avg(minP, maxP) + (atr / liqMar), b.i + 10, math.avg(minP, maxP) - (atr / liqMar), bgcolor=color(na), border_color=color(na)),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
box.new(st_B, st_P, b.i + 10, st_P, text = 'Buyside liquidity', text_size = size.tiny, text_halign = text.align_left, text_valign = text.align_bottom, text_color = color.new(cLIQ_B, 25), bgcolor = color(na), border_color = color(na)),
false,
false,
line.new(st_B , st_P, b.i - 1, st_P, color = color.new(cLIQ_B, 0)),
line.new(b.i - 1, st_P, na , st_P, color = color.new(cLIQ_B, 0), style = line.style_dotted))
)
alert('buyside liquidity level detected/updated for ' + syminfo.ticker)
if b_liq_B.size() > visLiq
getLast = b_liq_B.pop()
getLast.bx.delete()
getLast.bxz.delete()
getLast.bxt.delete()
getLast.ln.delete()
getLast.lne.delete()
if pl
dir := aZZ.d.get (0)
x1 := aZZ.x.get (0)
y1 := aZZ.y.get (0)
y2 := nz(b.l )
if dir > -1
aZZ.in_out(-1, x2, y2)
else
if dir == -1 and pl < y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if per
count = 0
st_P = 0.
st_B = 0
minP = 0.
maxP = 10e6
for i = 0 to maxSize - 1
if aZZ.d.get(i) == -1
if aZZ.y.get(i) < pl - (atr / liqMar)
break
else
if aZZ.y.get(i) > pl - (atr / liqMar) and aZZ.y.get(i) < pl + (atr / liqMar)
count += 1
st_B := aZZ.x.get(i)
st_P := aZZ.y.get(i)
if aZZ.y.get(i) > minP
minP := aZZ.y.get(i)
if aZZ.y.get(i) < maxP
maxP := aZZ.y.get(i)
if count > 2
getB = b_liq_S.get(0)
if st_B == getB.bx.get_left()
getB.bx.set_top(math.avg(minP, maxP) + (atr / liqMar))
getB.bx.set_rightbottom(b.i + 10, math.avg(minP, maxP) - (atr / liqMar))
else
b_liq_S.unshift(
liq.new(
box.new(st_B, math.avg(minP, maxP) + (atr / liqMar), b.i + 10, math.avg(minP, maxP) - (atr / liqMar), bgcolor=color(na), border_color=color(na)),
box.new(na, na, na, na, bgcolor=color(na), border_color=color(na)),
box.new(st_B, st_P, b.i + 10, st_P, text = 'Sellside liquidity', text_size = size.tiny, text_halign = text.align_left, text_valign = text.align_top, text_color = color.new(cLIQ_S, 25), bgcolor=color(na), border_color=color(na)),
false,
false,
line.new(st_B , st_P, b.i - 1, st_P, color = color.new(cLIQ_S, 0)),
line.new(b.i - 1, st_P, na , st_P, color = color.new(cLIQ_S, 0), style = line.style_dotted))
)
alert('sellside liquidity level detected/updated for ' + syminfo.ticker)
if b_liq_S.size() > visLiq
getLast = b_liq_S.pop()
getLast.bx.delete()
getLast.bxz.delete()
getLast.bxt.delete()
getLast.ln.delete()
getLast.lne.delete()
for i = 0 to b_liq_B.size() - 1
x = b_liq_B.get(i)
if not x.brL
x.lne.set_x2(b.i)
if b.h > x.bx.get_top()
x.brL := true
x.brZ := true
alert('buyside liquidity level breached for ' + syminfo.ticker)
x.bxz.set_lefttop(b.i - 1, math.min(x.ln.get_y1() + marBuy * (atr), b.h))
x.bxz.set_rightbottom(b.i + 1, x.ln.get_y1())
x.bxz.set_bgcolor(color.new(cLIQ_B, liqBuy ? 73 : 100))
else if x.brZ
if b.l > x.ln.get_y1() - marBuy * (atr) and b.h < x.ln.get_y1() + marBuy * (atr)
x.bxz.set_right(b.i + 1)
x.bxz.set_top(math.max(b.h, x.bxz.get_top()))
if liqBuy
x.lne.set_x2(b.i + 1)
else
x.brZ := false
for i = 0 to b_liq_S.size() - 1
x = b_liq_S.get(i)
if not x.brL
x.lne.set_x2(b.i)
if b.l < x.bx.get_bottom()
x.brL := true
x.brZ := true
alert('sellside liquidity level breached for ' + syminfo.ticker)
x.bxz.set_lefttop(b.i - 1, x.ln.get_y1())
x.bxz.set_rightbottom(b.i + 1, math.max(x.ln.get_y1() - marSel * (atr), b.l))
x.bxz.set_bgcolor(color.new(cLIQ_S, liqSel ? 73 : 100))
else if x.brZ
if b.l > x.ln.get_y1() - marSel * (atr) and b.h < x.ln.get_y1() + marSel * (atr)
x.bxz.set_rightbottom(b.i + 1, math.min(b.l, x.bxz.get_bottom()))
if liqSel
x.lne.set_x2(b.i + 1)
else
x.brZ := false
if lqVoid and per
bull = b.l - b.h > atr200 and b.l > b.h and b.c > b.h
bear = b.l - b.h > atr200 and b.h < b.l and b.c < b.l
if bull
l = 13
if bull
st = math.abs(b.l - b.l ) / l
for i = 0 to l - 1
array.push(b_liq_V, box.new(b.i - 2, b.l + i * st, b.i, b.l + (i + 1) * st, border_color = na, bgcolor = color.new(cLQV_B, 90) ))
else
st = math.abs(b.l - b.h ) / l
for i = 0 to l - 1
if lqText and i == 0
array.push(b_liq_V, box.new(b.i - 2, b.h + i * st, b.i, b.h + (i + 1) * st, text = 'Liquidity Void ', text_size = size.tiny, text_halign = text.align_right, text_valign = text.align_bottom, text_color = na, border_color = na, bgcolor = color.new(cLQV_B, 90) ))
else
array.push(b_liq_V, box.new(b.i - 2, b.h + i * st, b.i, b.h + (i + 1) * st, border_color = na, bgcolor = color.new(cLQV_B, 90) ))
if bear
l = 13
if bear
st = math.abs(b.h - b.h) / l
for i = 0 to l - 1
array.push(b_liq_V, box.new(b.i - 2, b.h + i * st, b.i, b.h + (i + 1) * st, border_color = na, bgcolor = color.new(cLQV_S, 90) ))
else
st = math.abs(b.l - b.h) / l
for i = 0 to l - 1
if lqText and i == l - 1
array.push(b_liq_V, box.new(b.i - 2, b.h + i * st, b.i, b.h + (i + 1) * st, text = 'Liquidity Void ', text_size = size.tiny, text_halign = text.align_right, text_valign = text.align_top, text_color = na, border_color = na, bgcolor = color.new(cLQV_S, 90) ))
else
array.push(b_liq_V, box.new(b.i - 2, b.h + i * st, b.i, b.h + (i + 1) * st, border_color = na, bgcolor = color.new(cLQV_S, 90) ))
if b_liq_V.size() > 0
qt = b_liq_V.size()
for bn = qt - 1 to 0
if bn < b_liq_V.size()
cb = b_liq_V.get(bn)
ba = math.avg(cb.get_bottom(), cb.get_top())
if math.sign(b.c - ba) != math.sign(b.c - ba) or math.sign(b.c - ba) != math.sign(b.l - ba) or math.sign(b.c - ba) != math.sign(b.h - ba)
b_liq_V.remove(bn)
else
cb.set_right(b.i + 1)
if b.i - cb.get_left() > 21
cb.set_text_color(color.new(color.gray, 25))
//-----------------------------------------------------------------------------}
stock-vs-industry using NQUSB benchmark idexesOriginal idea from Stock versus Industry by Tr33man .
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
═══ PRIMARY IMPROVEMENT: NQUSB Hierarchical Index Benchmarks ═══
The KEY improvement: Multi-Level Industry Granularity with Drill-Down/Drill-Up Navigation
From: Simple ETF Comparison (1 Level) Stock → Industry ETF (e.g., "SOXX" for all semiconductors)
To: NQUSB Hierarchical Comparison (4 Levels)
Level 4 (Primary): NQUSB10102010 → Semiconductors (most specific)
Level 3 (Secondary): NQUSB101020 → Technology Hardware and Equipment
Level 2 (Tertiary): NQUSB101010 → Software and Computer Services
Level 1 (Quaternary): NQUSB10 → Technology (broadest sector)
Users can now drill up and down the industry hierarchy to see how their stock performs against different levels of industry classification!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
═══ WHY THIS MATTERS ═══
Original Limitations:
Single comparison level - ETF only
No drill-down capability - Can't zoom in to more specific industries
No drill-up capability - Can't zoom out to broader sectors
ETF limitations - Not all industries have dedicated ETFs
Arbitrary mappings - Manual ETF selection may not represent true industry
Improved Capabilities:
4-level hierarchical navigation - Drill-down and drill-up through industry classifications
361 NQUSB official indices - NASDAQ US Benchmark Index structure
Official NASDAQ classification - Industry-standard taxonomy
Large Mid Cap (LM) option - Focus on larger companies when needed
Enhanced UI - Clear level indicators and full index descriptions
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
═══ EXAMPLE: ANALYZING NVDA (Semiconductors) ═══
Level 4 - Primary (Most Specific):
NQUSB10102010 - Semiconductors
→ NVDA vs. AMD, AVGO, QCOM, TXN, etc. (direct competitors)
Level 3 - Secondary (Broader):
NQUSB101020 - Tech Hardware & Equipment
→ NVDA vs. AAPL, CSCO + semiconductors
Level 2 - Tertiary (Even Broader):
NQUSB101010 - Software and Computer Services
→ NVDA vs. all tech hardware
Level 1 - Quaternary (Broadest):
NQUSB10 - Technology Sector
→ NVDA vs. entire technology sector
You can now zoom in to see direct competitors or zoom out to understand macro sector trends - all in one indicator!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
═══ COMPARISON SUMMARY ═══
Original Version:
Comparison System: Industry ETFs
Industry Levels: 1 (flat ETF mapping)
Total Classifications: ~140 industries
Hierarchy Navigation: ❌ No
Data Source: Manual ETF curation
Improved Version:
Comparison System: NQUSB Official Indices
Industry Levels: 4 (hierarchical drill-down/up)
Total Classifications: 361 NQUSB indices
Hierarchy Navigation: ✅ 4-level drill navigation
Data Source: NASDAQ official taxonomy
Large/Mid Cap Option: ✅ LM variant toggle
Level Indicator: ✅ to labels
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
═══ ADDITIONAL FEATURES ═══
Dual Comparison System - Toggle between ETF mode (original) and Index Benchmark mode (NQUSB hierarchy)
Better Fallback Logic - Manual Override > NQUSB Index > ETF > SPY default
Enhanced Display - 4-row information table with full NQUSB index description
Backward Compatible - All original ETF mappings still work, existing charts won't break
Large Mid Cap Toggle - Optional "LM" suffix for focusing on larger companies only
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
For complete documentation, data files, technical details, and the full NQUSB hierarchy structure, visit the GitHub repository.
The result: More accurate, more flexible, and more comprehensive industry strength analysis - enabling traders to understand exactly where their stock's performance comes from by drilling through multiple levels of industry classification.
MOEX Day Volume24-hour trading volume indicator for a security in rubles with data on correlation with the Moscow Exchange Index
DJ BTC DailyThis Strategy only works on BTC daily. The only concern is the low winrate that could be a psycological hurdle. Please do comment for adjustments I should try and incorprate and let's find a killer strategy together :-)
SuperTrend Zone Rejection [STRZ] CONCEPT -
This indicator identifies trend-continuation setups by combining the Super Trend with dynamic Average True Range (ATR) value zones. It highlights specific price action behaviour's—specifically wick rejections and momentum closes—that occur during pullbacks into the trend baseline.
HOW IT WORKS -
The script operates on three logic gates:
>> Trend Filter: Uses a standard Super Trend (Factor 3, Period 10 default) to define market direction.
>> Dynamic Zones: Projects a volatility-based zone (default 2.0x ATR) above or below the Super Trend line to define a valid pullback area.
>> Signal Detection: Identifies specific candle geometries occurring within these zones.
>> Rejection: Candles with significant wicks testing the zone support/resistance.
>> Momentum: Candles that open within the zone and close in the upper/lower quartile of their range.
FEATURES -
>> Dynamic Channel: Visualizes the active buy/sell zone using a continuous, non-repainting box.
>> Volatile Filtering: Filters out low-volatility candles (doji's/noise) based on minimum ATR size.
>> Visuals: Color-coded trend visualization with distinct signal markers for qualified entries.
SETTINGS -
>> Super Trend: Adjustable Factor and ATR Period.
>> Zone Multiplier: Controls the width of the pullback zone relative to ATR.
>> Visuals: Customizable colours for zones and signals to fit light/dark themes.
Dual MACD AccelerationDual MACD Acceleration Indicator – Synopsis
Purpose:
This indicator identifies early momentum shifts in the market by comparing a fast MACD (8/20/6) with a slower MACD (12/26/9). It highlights potential strong buy and sell signals when the faster MACD crosses the slower MACD, allowing traders to catch trend accelerations before the full move develops.
Components
Fast MACD (8/20/6)
Responds quickly to short-term price changes.
Detects early momentum shifts.
Slow MACD (12/26/9)
Captures the dominant trend.
Provides a smoother reference for comparison.
Acceleration Signals
Long (▲): Fast MACD crosses above Slow MACD → potential bullish acceleration.
Short (▼): Fast MACD crosses below Slow MACD → potential bearish acceleration.
Zero Line
Optional visual reference for overall trend direction.
Crosses above zero = bullish trend, below zero = bearish trend.
Key Features
Clean, minimal chart display.
Optional toggles to show/hide each MACD line.
Label markers indicate crossovers.
Built-in alert conditions for automated notifications.
Trading Use
Trend Confirmation:
Best used with higher timeframe filters (VWAP or EMAs) to avoid fakeouts.
Entry Timing:
Enter on the first pullback after a crossover signal.
Only trade in the direction of the dominant trend.
Stops & Risk:
Use recent swing lows/highs for stop placement.
TP levels can be structure-based or trailing with price momentum.
Synopsis Summary:
The Dual MACD Acceleration Indicator is a lightweight, early-momentum tool designed for scalpers and short-term traders. It captures fast shifts in trend by comparing a faster and slower MACD, highlighting strong buy and sell opportunities while remaining clean and easy to read. For higher accuracy, combine with trend filters like VWAP or EMAs.
Highlight Running 30m CandleThis script highlight 30 minute running candle.
mostly used for crypto trading
Roshan Dash Ultimate Trading DashboardHas the key moving averages sma (10,20,50,200) in daily and above timeframe. And for lower timeframe it has ema (10,20,50,200) and vwap. Displays key information like marketcap, sector, lod%, atr, atr% and distance of atr from 50sma . All things which help determine whether or not to take trade.
50 & 200 SMA + RSI Average Strategy (Long Only, Single Trade)It works better in trending markets. It delivers its best performance in the 4-hour to 1-day timeframes.
Multi-Ticker Anchored CandlesMulti-Ticker Anchored Candles (MTAC) is a simple tool for overlaying up to 3 tickers onto the same chart. This is achieved by interpreting each symbol's OHLC data as percentages, then plotting their candle points relative to the main chart's open. This allows for a simple comparison of tickers to track performance or locate relationships between them.
> Background
The concept of multi-ticker analysis is not new, this type of analysis can be extremely helpful to get a gauge of the over all market, and it's sentiment. By analyzing more than one ticker at a time, relationships can often be observed between tickers as time progresses.
While seeing multiple charts on top of each other sounds like a good idea...each ticker has its own price scale, with some being only cents while others are thousands of dollars.
Directly overlaying these charts is not possible without modification to their sources.
By using a fixed point in time (Period Open) and percentage performance relative to that point for each ticker, we are able to directly overlay symbols regardless of their price scale differences.
The entire process used to make this indicator can be summed up into 2 keywords, "Scaling & Anchoring".
> Scaling
First, we start by determining a frame of reference for our analysis. The indicator uses timeframe inputs to determine sessions which are used, by default this is set to 1 day.
With this in place, we then determine our point of reference for scaling. While this could be any point in time, the most sensible for our application is the daily (or session) open.
Each symbol shares time, therefore, we can take a price point from a specified time (Opening Price) and use it to sync our analysis over each period.
Over the day, we track the percentage performance of each ticker's OHLC values relative to its daily open (% change from open).
Since each ticker's data is now tracked based on its opening price, all data is now using the same scale.
The scale is simply "% change from open".
> Anchoring
Now that we have our scaled data, we need to put it onto the chart.
Since each point of data is relative to it's daily open (anchor point), relatively speaking, all daily opens are now equal to each other.
By adding the scaled ticker data to the main chart's daily open, each of our resulting series will be properly scaled to the main chart's data based on percentages.
Congratulations, We have now accurately scaled multiple tickers onto one chart.
> Display
The indicator shows each requested ticker as different colored candlesticks plotted on top of the main chart.
Each ticker has an associated label in front of the current bar, each component of this label can be toggled on or off to allow only the desired information to be displayed.
To retain relevance, at the start of each session, a "Session Break" line is drawn, as well as the opening price for the session. These can also be toggled.
Note: The opening price is the opening price for ALL tickers, when a ticker crosses the open on the main chart, it is crossing its own opening price as well.
> Examples
In the chart below, we can see NYSE:MCD NASDAQ:WEN and NASDAQ:JACK overlaid on a NASDAQ:SBUX chart.
From this, we can see NASDAQ:JACK was the top gainer on the day. While this was the case, it also fell roughly 4% from its peak near lunchtime. Unlike the top gainer, we can see the other 3 tickers ended their day near their daily high.
In the explanations above, the daily timeframe is used since it is the default; however, the analysis is not constrained to only days. The anchoring period can be set to any timeframe period.
In the chart below, you can observe the Daily, Weekly, and Monthly anchored charts side-by-side.
This can be used on all tickers, timeframes, and markets. While a typical application may be comparing relevant assets... the script is not limited.
Below we have a chart tracking COMEX:GCV2026 , FX:EURUSD , and COINBASE:DOGEUSD on the AMEX:SPY chart.
While these tickers are not typically compared side-by-side, here it is simply a display of the capabilities of the script.
Enjoy!






















