@Complete Squeeze Cycle Detector v2.0 FINALDescription:
The Complete Squeeze Cycle Detector identifies and tracks the full lifecycle of squeeze formations, from pre-squeeze consolidation through active squeeze periods to squeeze completion. The indicator systematically detects the characteristic conditions that precede and accompany squeeze events.
The indicator monitors multiple factors associated with squeeze development including:
• Volatility compression relative to recent volume activity
• Elevated market stress conditions as measured by VIX levels
• Momentum compression through rate of change measurements across multiple time periods
• Alignment of multiple exponential moving averages indicating consolidation
The squeeze cycle is classified into three distinct phases: Pre-Squeeze Setup, Active Squeeze, and Squeeze Complete. Each phase is identified based on threshold levels of multiple compression metrics, with adjustable sensitivity settings to control the strictness of detection.
The indicator provides visual identification of each phase through labels, background coloring, and an optional dashboard, allowing users to distinguish between the preparation phase where volatility contracts, the active squeeze phase where compression reaches critical levels, and the completion phase where the squeeze releases and directional movement resumes.
This systematic approach enables users to identify squeeze formations throughout their complete development cycle rather than focusing only on the breakout phase.
Göstergeler ve stratejiler
Daily Protocol [#] by @shulktrades@shulktrades aka Shulkins aka shulk
Open Source Script created from the code “ICT Everything” by @coldbrewrosh
*Adjusted Key Times and Standard Deviations to better fit my model*
Daily Protocol Indicator - Description
Overview
The Daily Protocol indicator is a comprehensive trading tool designed to help traders identify and visualize key intraday time-based levels and sessions for forex and other markets. This indicator automatically marks important market opening times, session ranges, and standard deviation projections to assist in technical analysis and trade planning.
Key Features
Time-Based Vertical Lines
Midnight Open (00:00): Marks the start of each trading day
News Open (08:30): Highlights the typical economic news release time
NY AM Open (09:30): Identifies the US equity market opening
Opening Price Lines
Midnight Opening Price: Tracks the price at market day start
News Opening Price (08:30): Shows the price level at news time
NY AM Opening Price (09:30): Displays equity market open price
Afternoon Opening Price (13:30): Optional afternoon session marker
Weekly & Monthly Opening Prices: Higher timeframe reference levels
Session Range Boxes
London Session (LNDN): 02:00-05:00 range with optional standard deviation projections
Asian Session (ASIA): 20:00-00:00 range with optional standard deviation projections
NY AM Session (NYAM): 09:30-10:00 range with optional standard deviation projections
Standard Deviation Projections
Automatically calculates and displays 1-4 standard deviation levels based on session ranges
Configurable directional display (both sides, upside only, or downside only)
Helps identify potential target zones and reversal areas
Additional Features
Day of Week Labels: Clearly marks each trading day
Customizable Timezone: Supports multiple global timezones
Historical Lines Toggle: Option to show/hide past levels for cleaner charts
Terminus Settings: Control how far price lines extend into the future
Color Customization: Full control over all colors, line styles, and widths
Range Statistics Table: Displays current session ranges and pip counts (forex only)
Best Use Cases
Identifying overnight key times and structure before market opens for NY
Planning entries around major session times
Setting targets using standard deviation projections
Understanding market structure through time-based analysis
Backtesting strategies based on session behavior
Timeframe Recommendation
Works best on intraday timeframes (1-60 minutes). The indicator automatically hides on timeframes above 61 minutes to prevent chart clutter.
Customization
Extensive settings allow traders to:
Enable/disable any individual component
Adjust all colors, line styles, and widths
Control label display and formatting
Set timezone preferences
Configure standard deviation calculations
Choose which sessions and times to display
This indicator is ideal for traders who follow time-based trading methodologies and want to incorporate structured intraday analysis into their workflow.
Adaptive Trend Direction Degree (Lax)Trend direction
Trend strength
Momentum
Potential reversal points
Liquidity Trend & Squeeze RadarThe Liquidity Trend & Squeeze Radar is a comprehensive trading system designed to visualize the three most critical components of price action: Trend, Volatility, and Momentum. The core philosophy of this tool is to identify periods of market "compression" (low volatility), where energy builds up, and then signal when that energy is released (expansion) for a potential breakout trade. It combines an EMA Cloud for trend direction with a TTM-style Squeeze indicator and a linear regression momentum filter.
Key Components
Trend Cloud (Structure) This component identifies the overall market bias. It uses a Fast EMA and a Slow EMA to create a shaded "Cloud."
Uptrend: The Fast EMA is above the Slow EMA. The Cloud is shaded green (default).
Downtrend: The Fast EMA is below the Slow EMA. The Cloud is shaded red (default).
Usage: Generally, traders should look to take Long signals only when the Trend Cloud is bullish and Short signals when the Trend Cloud is bearish.
Volatility Radar (The Squeeze) This logic detects when the market enters a period of low volatility. It calculates this by comparing Bollinger Bands (Expansion) against Keltner Channels (Average Range).
Squeeze Active: When the Bollinger Bands narrow and go inside the Keltner Channels, a "Squeeze" is active. This is represented by gray dots plotted along the Fast EMA and gray-colored price candles.
Usage: Do not trade during a Squeeze. This indicates indecision and chop. Treat this as a "Wait" signal while potential energy builds.
Momentum Filter (Hidden Logic) While the Squeeze is active, the script calculates the underlying momentum using Linear Regression. This predicts the likely direction of the breakout before it happens. This data is displayed in the Dashboard.
Breakout Signals (Fire) When the Squeeze condition ends (volatility expands), the script checks the Momentum filter.
Bullish Breakout: If the Squeeze ends and Momentum is positive, a triangle pointing up is plotted below the bar.
Bearish Breakout: If the Squeeze ends and Momentum is negative, a triangle pointing down is plotted above the bar.
Status Dashboard A table located in the top-right corner provides a real-time summary of the market state without needing to interpret the chart visuals manually. It lists the current Trend direction, Volatility state (Squeeze vs. Expansion), and Momentum value (Positive vs. Negative).
How to Trade This Indicator
Step 1: Identify the Trend Observe the background Cloud. Ensure you are trading in the direction of the dominant flow. If the Cloud is green, favor Longs. If red, favor Shorts.
Step 2: Wait for the Squeeze Look for the gray dots to appear on the moving average line and for the candles to turn gray. This indicates the market is resting and building energy. During this phase, you are stalking the trade. Avoid entering positions while the gray dots remain visible.
Step 3: The Breakout (The Trigger) Wait for the gray dots to disappear. This means the Squeeze has "Fired."
Long Entry: Look for a Triangle Up signal. Ideally, this should occur when the Trend Cloud is green.
Short Entry: Look for a Triangle Down signal. Ideally, this should occur when the Trend Cloud is red.
Step 4: Confirmation Check the Dashboard table. High-probability trades occur when all three metrics align (e.g., Trend is BULL, Volatility is EXPANSION, and Momentum is POSITIVE).
Settings Guide
Trend Structure:
Fast/Slow EMA Length: Adjusts the sensitivity of the Trend Cloud. Higher numbers effectively smooth out noise but react slower to trend changes.
Show Trend Cloud: Toggles the shaded area between EMAs on or off.
Volatility Radar:
Bollinger/Keltner Settings: These define the Squeeze sensitivity.
Keltner Mult: The most important setting. The default is 1.5. Lowering this to 1.0 will make the Squeeze harder to trigger (requiring extreme compression), leading to fewer but potentially more explosive signals.
Momentum:
Momentum Length: The lookback period for the linear regression calculation used to determine breakout direction.
Visuals:
Colorize Candles: Paints the price bars based on the current state (Gray for Squeeze, Green/Red for Trend).
Show Dashboard: Toggles the visibility of the data table.
Disclaimer This indicator and guide are for educational and informational purposes only. They do not constitute financial, investment, or trading advice. Trading in financial markets involves a significant risk of loss and is not suitable for every investor. Past performance of any trading system or methodology is not necessarily indicative of future results. The user assumes all responsibility for any trades made using this tool. Always use proper risk management.
Adaptive Trend Mapper-ATM (Arjo)Adaptive Trend Mapper (ATM) is a multi-factor trend, momentum, and compression-analysis tool designed to help traders visually map the strength and direction of market pressure.
Instead of simply combining existing indicators, ATM creates a new composite framework that blends momentum imbalance, directional strength, volatility contraction, and adaptive smoothing into a single, unified model.
Originality and usefulness
Adaptive Trend Mapper (ATM) does not replicate any one indicator.
It generates two custom indices— Bull Pressure Index and Bear Pressure Index —derived from a mathematical combination of RSI, inverse-RSI, and ADX. These indices behave differently from traditional oscillators:
They represent directional pressure on a 0–100 scale , not momentum.
They are designed to converge/diverge, forming a basis for the built-in Squeeze Detection Engine.
They can be optionally step-compressed , making the movement easier to read on fast or small charts.
The script also integrates a custom SuperSmoother trend model (not TradingView’s built-in function), which acts as an adaptive trend curve on the chart.
All calculations are combined intentionally—not as a mashup—to create a framework that allows traders to understand trend strength, compression phases, and micro-trend shifts in one place.
How the Indicator Works
1. Bull & Bear Pressure Indices:
These indices measure directional imbalance:
Bull Index = ADX strength weighted against inverse-RSI
Bear Index = ADX strength weighted against normal RSI
This produces two opposing pressure curves that rise or fall depending on whether buyers or sellers dominate.
You can optionally smooth these using:
SMA / EMA / WMA / RMA via the “Smoothing Settings” panel.
2. Squeeze & Compression Detection:
A squeeze is detected when:
ADX stays below a user-defined threshold
Bull–Bear Index difference shrinks
Average difference is falling (convergence)
This is a volatility-contraction model inspired by squeeze logic but applied to directional pressure, not Bollinger Bands/Keltner Channels .
3. Adaptive Trend Curve (SuperSmoother Engine)
The indicator applies a two-pole SuperSmoother filter to the price, then smooths it again using EMA.
The slope color flips between bullish and bearish and is displayed using:
A thin SuperSmoother curve
A thicker band for visual context
4. EMA-50 Trend Context:
An optional EMA-50 helps identify broad directional bias .
5. Step-Based Scaling
You can quantize the Bull/Bear indices using custom step intervals.
This makes the indicator easier to read on noisy intraday charts.
How to Use the Indicator
1. Trend Analysis
A rising Bull Index shows strengthening upward pressure
A rising Bear Index shows strengthening downward pressure
Wide divergence between the indices signals a strong trend
2. Compression / Squeeze Analysis
Yellow background = volatility compression + pressure convergence
Breakouts from this zone often precede directional expansion
3. Trendline Reading
SuperSmoother line color flip = micro trend shift
EMA-50 slope gives macro-trend direction
Perfect for combining trend and momentum maps on the same chart
4. Visual Interpretation
Cyan/teal → strong bullish pressure
Purple/red/orange → various levels of bearish control
Neutral/teal background → weak ADX
Yellow background → squeeze zone
Open-Source Notes
This script uses:
TradingView built-in RSI, ADX/DMI, and smoothing functions
A SuperSmoother implementation based on known DSP filter coefficients
All remaining logic, signal methods, composite indices, and compression model are original developments by ARJO .
The script is published open-source to comply with TradingView’s reuse policy.
Disclaimer
This tool is for educational and analytical purposes only.
It does not generate buy or sell signals.
Always use proper risk management.
Happy Trading (ARJO)
Confirmed Pivots + MACD Signals (with BOS Lines)Confirmed Pivots + MACD Signals
This indicator combines confirmed swing highs/lows (pivots) with MACD-based momentum signals to highlight key reversal and continuation points on the chart.
Core Logic
Confirmed Pivots:
The script identifies swing highs and lows using the user-defined pivot confirmation length.
Once a structure is broken beyond the last pivot, that level becomes a confirmed support (CL) or resistance (CH) line.
These levels are plotted as dashed horizontal rays and labeled directly on the chart.
MACD Integration:
The classic MACD crossover/under logic is used:
Bullish Crossover: MACD line crosses above the Signal line.
Bearish Crossunder: MACD line crosses below the Signal line.
Signal Filtering by Proximity:
A Proximity Zone (%) defines how close price must be to an active support or resistance to trigger a signal.
Buy Signal: When price is within the support zone and a bullish MACD crossover occurs.
Sell Signal: When price is within the resistance zone and a bearish MACD crossunder occurs.
Inputs
Pivot Confirmation Length: Bars used to confirm swing points.
MACD Fast/Slow/Signal Lengths: Standard MACD settings.
Proximity Zone (%): Defines zone width (e.g., 1% around active level).
Output
Labels: "CH" (Confirmed High) and "CL" (Confirmed Low) with color-coded dashed lines.
Signals: "BUY" and "SELL" markers appear when both pivot and MACD conditions align.
Tips
Works best on higher timeframes (H1 and above).
Combine with price action or trend filters for confirmation.
Use proximity percentage according to volatility (e.g., smaller % for low-vol assets).
⚠️ Disclaimer:
This script is provided for educational and informational purposes only.
It does not constitute financial or investment advice, and the author is not responsible for any financial losses that may occur from its use.
Always perform your own analysis and use this indicator together with other technical and risk management tools before making trading decisions.
---------------------------------------------------------------------------------------------
سقف و کف تاییدشده + سیگنالهای MACD
این اندیکاتور ترکیبی از شناسایی سقفها و کفهای تاییدشده (Pivot High/Low) به همراه سیگنالهای مومنتوم MACD است که نقاط برگشت یا ادامهی روند را روی چارت مشخص میکند.
🔹 منطق عملکرد
تایید سقف و کفها:
ابتدا سقف و کفهای محلی بر اساس تعداد کندلهای تنظیمشده شناسایی میشوند.
وقتی ساختار قیمتی از آخرین سقف یا کف عبور کند، آن سطح به عنوان حمایت یا مقاومت تاییدشده در نظر گرفته شده و با برچسبهای “CL” (کف تاییدشده) و “CH” (سقف تاییدشده) و خطوط نقطهچین رسم میشود.
ادغام با MACD:
از منطق کلاسیک کراساور/کراسآندر MACD استفاده شده است:
کراس صعودی: عبور خط MACD از بالای خط سیگنال.
کراس نزولی: عبور خط MACD از زیر خط سیگنال.
فیلتر سیگنال با ناحیه مجاور:
با استفاده از درصد ناحیه مجاور (Proximity Zone %)، فقط زمانی سیگنال صادر میشود که قیمت نزدیک حمایت یا مقاومت فعال باشد.
سیگنال خرید: وقتی قیمت در ناحیهی حمایت و همزمان MACD صعودی شود.
سیگنال فروش: وقتی قیمت در ناحیهی مقاومت و همزمان MACD نزولی شود.
تنظیمات ورودی
طول تأیید پیوتها
تنظیمات MACD (Fast, Slow, Signal)
درصد ناحیه مجاور برای فعال شدن سیگنالها
خروجیها
برچسبهای “CL” و “CH” برای سطوح تاییدشده
نشانگرهای “BUY” و “SELL” در محل صدور سیگنال
نکات کاربردی
بهترین عملکرد در تایمفریمهای بالاتر (۱ ساعته به بالا)
برای دقت بیشتر، آن را با فیلتر روند یا پرایساکشن ترکیب کنید
درصد ناحیه مجاور را با توجه به نوسانات دارایی تنظیم کنید
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.
@Aladdin's Trading Web – Command CenterThe indicator uses standard Pine Script functionality including z-score normalization, standard deviation calculations, percentage change measurements, and request.security calls for multiple predefined symbols. There are no proprietary algorithms, external data feeds, or restricted calculation methods that would require protecting the source code.
Description:
The @Aladdin's Trading Web – Command Center indicator provides a composite market regime assessment through a weighted combination of multiple intermarket relationships. The indicator calculates normalized z-scores across several key market components including banks, volatility, the US dollar, credit spreads, interest rates, and alternative assets.
Each component is standardized using z-score methodology over a user-defined lookback period and combined according to configurable weighting parameters. The resulting composite measure provides a normalized assessment of the prevailing market environment, with the option to invert rate relationships for specific market regime conditions.
The indicator focuses on capturing the synchronized behavior across these interconnected market segments to provide a unified view of systemic market conditions.
MTC – Multi-Timeframe Trend Confirmator V2MTC – Multi-Timeframe Trend Confirmator V2
A comprehensive trend analysis indicator that systematically combines six technical indicators across three customizable timeframes, using a weighted scoring system to identify high-probability trend conditions.
ORIGINALITY AND CONCEPT
This indicator is original in its approach to multi-timeframe trend confirmation. Rather than relying on a single indicator or timeframe, it creates a composite score by evaluating six different technical conditions simultaneously across three timeframes. The scoring system weighs certain indicators more heavily based on their reliability in trend identification. The visual gauge provides an at-a-glance view of trend alignment across timeframes, making it easier to identify when multiple timeframes agree - a condition that typically produces stronger, more reliable trends.
HOW IT WORKS - DETAILED SCORING METHODOLOGY
The indicator evaluates six technical conditions on each timeframe. Each condition contributes to a composite score:
EMA 200 (Weight: 1 point)
Bullish: Price closes above EMA 200 (+1)
Bearish: Price closes below EMA 200 (-1)
Rationale: Long-term trend direction
SMA 50/200 Crossover (Weight: 1 point)
Bullish: SMA 50 above SMA 200 (+1)
Bearish: SMA 50 below SMA 200 (-1)
Rationale: Golden/Death cross confirmation
RSI 14 (Weight: 1 point)
Bullish: RSI above 55 (+1)
Bearish: RSI below 45 (-1)
Neutral: RSI between 45-55 (0)
Rationale: Momentum filter with buffer zone to avoid chop
MACD (12,26,9) (Weight: 1 point)
Bullish: MACD line above signal line (+1)
Bearish: MACD line below signal line (-1)
Rationale: Trend momentum confirmation
ADX 14 (Weight: 2 points - DOUBLE WEIGHTED)
Requires ADX above 25 to activate
Bullish: DI+ above DI- and ADX > 25 (+2)
Bearish: DI- above DI+ and ADX > 25 (-2)
Neutral: ADX below 25 (0)
Rationale: Trend strength filter - only counts when a strong trend exists. Double weighted because ADX is specifically designed to measure trend strength, making it more reliable than oscillators.
Supertrend (Factor: 3.0, ATR Period: 10) (Weight: 2 points - DOUBLE WEIGHTED)
Bullish: Direction indicator = -1 (+2)
Bearish: Direction indicator = +1 (-2)
Rationale: Dynamic support/resistance that adapts to volatility. Double weighted because Supertrend provides clear, objective trend signals with built-in stop-loss levels.
COMPOSITE SCORE CALCULATION:
Total possible score range: -10 to +10 points
Score interpretation:
Score > 2: UPTREND (majority of indicators bullish, especially weighted ones)
Score < -2: DOWNTREND (majority of indicators bearish, especially weighted ones)
Score between -2 and +2: NEUTRAL/RANGING (mixed signals or weak trend)
The threshold of +/- 2 was chosen because it requires more than just basic agreement - it typically means at least 3-4 indicators align, or that the heavily-weighted indicators (ADX, Supertrend) confirm the direction.
MULTI-TIMEFRAME LOGIC:
The indicator calculates the composite score independently for three timeframes:
Higher Timeframe (default: 4H) - Major trend direction
Mid Timeframe (default: 1H) - Intermediate trend
Lower Timeframe (default: 15min) - Entry timing
Main Trend Confirmation Rule:
The indicator only signals a confirmed trend when BOTH the higher timeframe AND mid timeframe scores agree (both > 2 for uptrend, or both < -2 for downtrend). This dual-timeframe confirmation significantly reduces false signals during choppy or ranging markets.
HOW TO USE IT
Setup:
Add indicator to chart
Customize timeframes based on your trading style:
Scalpers: 15min, 5min, 1min
Day traders: 4H, 1H, 15min (default)
Swing traders: Daily, 4H, 1H
Toggle individual indicators on/off based on your preference
Adjust Supertrend parameters if needed for your instrument's volatility
Reading the Gauge (Top Right Corner):
Each row shows one timeframe
Left column: Timeframe label
Middle column: Visual strength bars (10 bars = maximum score)
Green bars = Bullish score
Red bars = Bearish score
Yellow bars = Neutral/ranging
More filled bars = stronger trend
Right column: Numerical score
Trading Signals:
Entry Signals:
Long Entry: Wait for upward triangle arrow (appears when higher + mid TF both bullish)
Confirm gauge shows green bars on higher and mid timeframes
Lower timeframe should ideally turn green for entry timing
Chart background tints light green
Short Entry: Wait for downward triangle arrow (appears when higher + mid TF both bearish)
Confirm gauge shows red bars on higher and mid timeframes
Lower timeframe should ideally turn red for entry timing
Chart background tints light red
Position Management:
Stay in position while higher and mid timeframes remain aligned
Consider reducing position size when mid timeframe score weakens
Exit when higher timeframe trend reverses (daily label changes)
Avoiding False Signals:
Ignore signals when gauge shows mixed colors across timeframes
Avoid trading when scores are close to threshold (+/- 2 to +/- 4 range)
Best trades occur when all three timeframes align (all green or all red in gauge)
Use the numerical scores: higher absolute values (7-10) indicate stronger, more reliable trends
Practical Examples:
Example 1 - Strong Uptrend Entry:
Higher TF: +8 (strong green bars)
Mid TF: +6 (strong green bars)
Lower TF: +4 (moderate green bars)
Action: Look for long entries on lower timeframe pullbacks
Background is tinted green, upward arrow appears
Example 2 - Ranging Market (Avoid):
Higher TF: +3 (weak green)
Mid TF: -1 (weak red)
Lower TF: +2 (neutral yellow)
Action: Stay out, wait for alignment
Example 3 - Trend Reversal Warning:
Higher TF: +7 (still green)
Mid TF: -3 (turned red)
Lower TF: -5 (strong red)
Action: Consider exiting longs, prepare for potential higher TF reversal
Customization Options:
Timeframes: Adjust all three to match your trading horizon
Indicator Toggles: Disable indicators that don't suit your instrument:
Disable RSI for highly volatile crypto markets
Disable SMA crossover for range-bound instruments
Keep ADX and Supertrend enabled for trending markets
Visual Preferences:
Arrow size: 5 options from Tiny to Huge
Gauge size: Small/Medium/Large for different screen sizes
Toggle arrows on/off if you only want the gauge
Alert Setup:
Right-click chart, "Add Alert"
Condition: MTC v6 - UPTREND or DOWNTREND
Get notified when multi-timeframe confirmation occurs
Best Practices:
Use with Price Action: The indicator works best when combined with support/resistance levels, chart patterns, and volume analysis
Risk Management: Even with multi-timeframe confirmation, always use stop losses
Market Context: Works best in trending markets; less reliable in strong consolidation
Backtesting: Test the default settings on your specific instrument and timeframe before live trading
Patience: Wait for full multi-timeframe alignment rather than taking premature signals
Technical Notes:
All calculations use Pine Script's security function to fetch data from multiple timeframes
Prevents repainting by using confirmed bar data
Gauge updates in real-time on the last bar
Daily labels mark at the open of each new daily candle
Works on all instruments and timeframes
This indicator is ideal for traders who want objective, systematic trend identification without the complexity of analyzing multiple indicators manually across different timeframes.
-NATANTIA
NAKED NINJA DOUBLE MACD SUPER STOC HELL 3just eye ball it on charts and you will see how it all works dedicatated to an OG
Bassi's Consolidation Breakout — ULTIMATE PRO + VPOverview
Bassi’s Consolidation Breakout — ULTIMATE PRO + VP is a professional-grade breakout detection system that combines price structure, volume confirmation, volatility compression, and custom volume profile logic.
The indicator automatically detects compressed consolidation zones, confirms breakouts with multi-layer filters, and plots full trade setups including:
Entry level
Stop-loss
TP1, TP2, TP3 (R:R based)
Trend filters + MTF EMA
Retest validation
Volume Profile confirmation (POC / VAH / VAL)
This is one of the most complete breakout frameworks for TradingView.
🔍 Core Concept
The script detects tight consolidation boxes based on:
Price range (% compression)
Lookback period
Minimum required bars
Breakout above/below the box
Once the consolidation ends, breakout signals fire only if they pass all filters.
This focuses your trading on high-probability breakouts only.
🔥 Key Features
1️⃣ Automated Consolidation Box Detection
Draws consolidation boxes dynamically
Identifies tight range compression
Supports advanced range logic for high accuracy
2️⃣ Smart Breakout + Retest Engine
Breakouts and breakdowns require:
Structure break
Minimum breakout expansion (0.15%)
Volume confirmation
Trend (200 EMA) confirmation
Optional retest validation
Optional Volume Profile filter
Each valid breakout prints a signal + full trade setup.
3️⃣ Custom Volume Profile Engine
Fast and lightweight custom-built VP that calculates:
POC (Point of Control)
VAH (Value Area High)
VAL (Value Area Low)
These levels can optionally be used to filter weak breakouts.
4️⃣ Multi-Timeframe Trend Filter
Uses 200 EMA from any selected higher timeframe
Helps avoid counter-trend fakeouts
Fully optional
5️⃣ Automatic Trade Setup Projection
Each breakout generates:
Stop-loss (ATR × multiplier)
TP1 (R:R)
TP2 (R:R)
TP3 (optional)
Clean signal labels
Only keeps the last 2 signals to maintain clarity
6️⃣ Alerts Included
Alerts fire instantly when a valid breakout occurs:
“Bassi LONG + VP”
“Bassi SHORT + VP”
Alerts include ticker + entry price.
📘 Usage Guide & Trading Rules
✔ Recommended Trading Steps
1. Wait for a confirmed consolidation box
Box must be narrow
Must meet minimum bar requirement
2. Wait for a confirmed breakout signal
Signal requires:
Breakout above/below box
Volume confirmation
Trend & MTF confirmation if enabled
Optional retest
Optional VP filter (close outside VAH/VAL)
3. Follow the projected setup
The script prints:
Entry
SL
TP1 / TP2 / TP3
Target lines extend automatically.
📖 How to Use the Script (Trading Rules)
1️⃣ Long Entry Rules
Enter Long when:
Price breaks above trend confirmation level
Momentum signal turns bullish
Candle closes above trigger line
Volatility filter is satisfied
Exit Long:
TP1/TP2/TP3 levels
Reversal signal
Trailing stop hit
2️⃣ Short Entry Rules
Enter Short when:
Price breaks below trend confirmation level
Momentum signal turns bearish
Candle closes below trigger line
Volatility filter is satisfied
Exit Short:
TP1/TP2/TP3 levels
Trend reversal
Trailing stop hit
✔ Recommended Markets
Crypto
Forex
Indices
Futures
Stocks
Works on all timeframes from 1-minute to daily.
✔ Best Practice
Avoid taking signals against HTF trend
Prefer signals that break away from VAH/VAL
Use TP1 to secure partial profits
Move SL to breakeven after TP1 if desired
Always follow personal risk management
👤 Author
Created by: Mahdi Bassi
Professional trader & systems designer
Focused on structural, volume-based and volatility-based strategies.
⚠️ Disclaimer
This script is for educational purposes only.
No indicator can guarantee profits.
Always use proper risk management and trade responsibly.
BPR (Ballanced price range) DetectorHow This BPR Detector Works
This indicator is designed to detect and visualize balanced price ranges (BPRs) on price charts. The indicator has two main components:
Regular FVG Detection - The indicator first detects regular Fair Value Gaps in price action, which are spaces where price has moved quickly leaving a gap. This is necessary because BPRs are derived from regular FVGs.
BPR Detection - When the price action inverts and moves through a regular FVG in the opposite direction, the indicator identifies this as a BPR. This concept is important in Inner Circle Trader (ICT) methodology as it can signal potential changes in trend direction. Additionally the detection logic is refined by incorporating displacement.
The main functionality preserved includes:
Detection of regular FVGs (required to find BPRs)
Conversion of regular FVGs to BPRs when price moves through them creating a FVG in the opposite direction
Visual display of both FVG and BPR zones
Mitigation tracking for both types of imbalances
Displacement visualization that helps identify energetic price moves
Key Settings
FVG Settings - Control the appearance and behaviour of regular Fair Value Gaps
BPR Settings - Control the appearance of Breaker Price Ranges (which have different colours by default)
Mitigation Settings - Define how the indicator determines when an imbalance has been filled
Displacement Settings - Optional highlighting of energetic price moves that may lead to imbalances
Kvng solzfx Gold StrategyThis indicator helps to find gold setups using kvng solz fx buy only strategy on gold
Bollinger Bands with ATR SL Hariss 369Bollinger Bands are a popular technical analysis tool developed by John Bollinger. They consist of three lines plotted on a price chart:
Middle Band – a simple moving average (usually 20 periods).
Upper Band – the middle band plus two standard deviations.
Lower Band – the middle band minus two standard deviations.
Key Features:
Volatility Indicator: The bands expand when volatility increases and contract when volatility decreases.
Trend Analysis: Prices near the upper band indicate overbought conditions, while prices near the lower band indicate oversold conditions.
Trading Signals: Traders often look for price touches, breaks, or rebounds from the bands to identify potential entries or exits.
To strengthen the trend quality RVOL has been considered. The ideal value of RVOL is 1.5
Higher Time Frame Trend filter gives trend clarity in higher time frame. One can select RVOL and HTF (Higher Time Frame) filter.
Bollinger bands indicator is basically a trend following indicator. We should go with the trend rather book profit @1:1 or 1:2 basis. In that case we might miss the long trend. The middle band is generally considered as stop loss. However, ATR based stop loss has been designed in the script in order to capture the volatility in decent way.
Break out signal is initiated on break out with volume taking higher time frame into consideration.
One can use this indicator in any time frame and any class of asset. To filter higher time frame eg. entry / exit 5 min chart, 15m/1h can be taken as higher time frame, for 1h entry/ exit, 4h can be taken as higher time frame trend filter.
ل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))
//-----------------------------------------------------------------------------}
rahulp33It is a 15-min high-low for the day; this will help the fellow chartist understand a trend emerging for the day. This indicator, along with others, gives a general sense of the daily trend, but it's not the sole factor to consider.
Megvie Scalping C - Pullback EMA20/50 (3-5m) by Lynda//@version=5
indicator("Megvie Scalping C - Pullback EMA20/50 (3-5m)", overlay=true, max_labels_count=500, max_lines_count=500)
// === INPUTS ===
ema_fast_len = input.int(20, "EMA fast (pullback)")
ema_slow_len = input.int(50, "EMA slow (trend)")
rsi_len = input.int(14, "RSI length")
rsi_min = input.int(40, "RSI min for entry")
atr_len = input.int(14, "ATR length (for SL/TP)")
use_atr_for_sl = input.bool(true, "Use ATR for SL size")
atr_sl_mult = input.float(1.0, "SL = ATR * multiplier", step=0.1)
rr = input.float(1.8, "Risk:Reward (TP = SL * RR)", step=0.1)
max_signals_repeat = input.int(3, "Min bars between signals", minval=1)
// === INDICATORS ===
ema_fast = ta.ema(close, ema_fast_len)
ema_slow = ta.ema(close, ema_slow_len)
rsi = ta.rsi(close, rsi_len)
atr = ta.atr(atr_len)
plot(ema_fast, color=color.new(color.green, 0), title="EMA 20")
plot(ema_slow, color=color.new(color.red, 0), title="EMA 50")
// === TREND FILTER ===
trend_bull = ema_fast > ema_slow
trend_bear = ema_fast < ema_slow
// === PULLBACK CONDITION ===
// Consider a pullback when price traded at/under EMA20 within the last 3 bars and now shows a bullish/bearish confirmation
pullback_bull = ta.lowest(low, 3) <= ema_fast and close > ema_fast
pullback_bear = ta.highest(high, 3) >= ema_fast and close < ema_fast
// === CONFIRMATION CANDLE ===
// Bullish confirmation: current close > open AND close > high (strong close)
// Bearish confirmation: current close < open AND close < low
bullish_candle = close > open and close > high
bearish_candle = close < open and close < low
// === ENTRY SIGNALS (Version C logic) ===
buySignal = trend_bull and pullback_bull and rsi >= rsi_min and bullish_candle
sellSignal = trend_bear and pullback_bear and rsi <= (100 - rsi_min) and bearish_candle
// Prevent firing signals too often
var int lastSignalBar = na
ok_to_fire = na(lastSignalBar) ? true : (bar_index - lastSignalBar) > max_signals_repeat
buyFire = buySignal and ok_to_fire
sellFire = sellSignal and ok_to_fire
if buyFire
lastSignalBar := bar_index
if sellFire
lastSignalBar := bar_index
// === SL / TP CALCULATION ===
var float sl_price = na
var float tp_price = na
var line sl_line = na
var line tp_line = na
var label sig_label = na
if buyFire
if use_atr_for_sl
sl_price := close - atr * atr_sl_mult
else
sl_price := ta.lowest(low, 3) - syminfo.mintick * 5
tp_price := close + (close - sl_price) * rr
// draw lines and label
line.delete(sl_line )
line.delete(tp_line )
label.delete(sig_label )
sl_line := line.new(bar_index, sl_price, bar_index + 50, sl_price, color=color.new(color.red, 0), width=1, extend=extend.right)
tp_line := line.new(bar_index, tp_price, bar_index + 50, tp_price, color=color.new(color.green, 0), width=1, extend=extend.right)
sig_label := label.new(bar_index, low, "BUY SL:" + str.tostring(sl_price, format.mintick) + " TP:" + str.tostring(tp_price, format.mintick), style=label.style_label_up, color=color.new(color.green,0), textcolor=color.white, size=size.small)
if sellFire
if use_atr_for_sl
sl_price := close + atr * atr_sl_mult
else
sl_price := ta.highest(high, 3) + syminfo.mintick * 5
tp_price := close - (sl_price - close) * rr
// draw lines and label
line.delete(sl_line )
line.delete(tp_line )
label.delete(sig_label )
sl_line := line.new(bar_index, sl_price, bar_index + 50, sl_price, color=color.new(color.red, 0), width=1, extend=extend.right)
tp_line := line.new(bar_index, tp_price, bar_index + 50, tp_price, color=color.new(color.green, 0), width=1, extend=extend.right)
sig_label := label.new(bar_index, high, "SELL SL:" + str.tostring(sl_price, format.mintick) + " TP:" + str.tostring(tp_price, format.mintick), style=label.style_label_down, color=color.new(color.red,0), textcolor=color.white, size=size.small)
// === PLOT SIGNAL ARROWS ===
plotshape(buyFire, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="BUY")
plotshape(sellFire, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="SELL")
// === ALERTS ===
alertcondition(buyFire, title="BUY Signal", message="Megvie C: BUY signal. SL: {{plot_0}} TP: {{plot_1}}")
alertcondition(sellFire, title="SELL Signal", message="Megvie C: SELL signal. SL: {{plot_0}} TP: {{plot_1}}")
alertcondition(ta.cross(close, tp_price), title="TP Hit", message="Megvie C: TP reached")
alertcondition(ta.cross(close, sl_price), title="SL Hit", message="Megvie C: SL reached")
// === NOTES ===
// - Optimized for 3-5 minute charts.
// - Test in paper trading before using real capital.
// - Adjust ATR multiplier and RR to match your risk management.
Key Levels: PDH/L, PMH/L, Oopening RangeBasic scrip that shows Previous Day High and Low, and also Pre-Market High Lows, and also the Opening Range. Everything is adjustable.
SPX +10 / -10 From 9:30 Open//@version=5
indicator("SPX +10 / -10 From 9:30 Open", overlay=true)
// Exchange Time (New York)
sess = input.session("0930-1600", "Regular Session (ET)")
// Detect session and 9:30 AM bar
inSession = time(timeframe.period, sess)
// Capture the 9:30 AM open
var float open930 = na
if inSession
// If this is the first bar of the session (9:30 AM)
if time(timeframe.period, sess) == na
open930 := open
else
open930 := na
// Calculate movement from 9:30 AM open
up10 = close >= open930 + 10
dn10 = close <= open930 - 10
// Plot reference lines
plot(open930, "9:30 AM Open", color=color.orange)
plot(open930 + 10, "+10 Level", color=color.green)
plot(open930 - 10, "-10 Level", color=color.red)
// Alert conditions
alertcondition(up10, title="SPX Up +10", message="SPX moved UP +10 from the 9:30 AM open")
alertcondition(dn10, title="SPX Down -10", message="SPX moved DOWN -10 from the 9:30 AM open")
// Plot signals on chart
plotshape(up10, title="+10 Hit", style=shape.labelup, color=color.green, text="+10", location=location.belowbar, size=size.tiny)
plotshape(dn10, title="-10 Hit", style=shape.labeldown, color=color.red, text="-10", location=location.abovebar, size=size.tiny)
Session Markers - JDK AnalysisSession Markers is a tool designed to study how markets behave during specific, recurring time windows. Many traders know that price behaves differently depending on the day of the week, the time of the day, or particular market sessions such as the weekly open, the London session, or the New York open. This indicator makes those recurring windows visible on the chart and then analyzes what price typically does inside them. The result is a clear statistical understanding of how a chosen session behaves, both in direction and in strength.
The script works by allowing the trader to define any time window using a start day and time and an end day and time. Every time this window occurs on the chart, the indicator highlights it with a full-height vertical band. These visual markers reveal patterns that are otherwise difficult to detect manually, such as whether certain sessions tend to trend, reverse, consolidate, or create large imbalances. They also help the trader quickly scan through historical price action to see how the market has behaved under similar conditions.
For every completed session window, the indicator measures how much price changed from the moment the window began to the moment it ended. Instead of using raw price differences, it converts these changes into percentage moves. This makes the measurement consistent across different price ranges and market regimes. A one-percent move always has the same meaning, whether the asset is trading at 100 or 50,000. These percentage moves are collected for a user-selected number of past sessions, creating a dataset of how the market has behaved in the chosen time window.
Based on this dataset, the indicator generates several statistics. It counts how many past sessions closed higher and how many closed lower, producing a directional tendency. It also computes the probability of an upward session by dividing the number of positive sessions by the total. More importantly, it calculates the average percentage movement for all sessions in the lookback period. This average move reflects not just the direction but also the magnitude of price changes. A session with frequent small upward moves but occasional large downward moves will show a negative average movement, even if more sessions ended positive. This creates a more realistic representation of true market behavior.
Using this average movement, the script determines a “Bias” for the session. If the average percentage move is positive, the bias is considered bullish. If it is negative, the bias is bearish. If the values are very close to zero, the bias is neutral. This way, the indicator takes both frequency and impact into account, producing a magnitude-aware assessment instead of one that only counts wins and losses. A sequence such as +5%, –1% results in a bullish bias because the overall impact is strongly positive. On the other hand, a series of small gains followed by a large drop produces a bearish bias even if more sessions ended positive, because the large move dominates the average. This provides a far more truthful picture of what the market tends to do during the chosen window.
All relevant statistics are displayed neatly in a small panel in the top-right corner of the chart. The panel updates in real time as new sessions complete and older ones fall out of the lookback range. It shows how many sessions were analyzed, how many ended up or down, the probability of an upward move, the average percentage change, and the final bias. The background color of the panel instantly reflects that bias, making it easy to interpret at a glance.
To use the tool effectively, the trader simply needs to define a time window of interest. This could be something like the weekly opening window from Sunday to Monday, the London open each day, or even a unique custom window. After selecting how many past sessions to analyze, the indicator takes care of the rest. The vertical session markers reveal the structure visually. The statistics summarize the historical behavior objectively. The magnitude-weighted bias provides a realistic indication of whether the window tends to produce upward or downward movement on average.
Session Markers is helpful because it translates repeated market timing behavior into measurable data. It exposes hidden tendencies that are easy to feel intuitively but hard to quantify manually. By analyzing both direction and magnitude, it prevents misleading interpretations that can arise from looking only at win rates. It helps traders understand whether a session typically produces meaningful moves or just small noise, whether it tends to trend or reverse, and whether its behavior has recently changed. Whether used for bias building, session filtering, or deeper market research, it offers a structured framework for understanding the market through time-based patterns.
Ehlers Cyber Cycle⭐ Ehlers Cyber Cycle
Description (Copy/Paste for Publishing)
The Ehlers Cyber Cycle is a classic digital signal–processing (DSP) oscillator developed by John F. Ehlers, designed to extract the true cyclic component from price while minimizing lag.
This simplified implementation uses the Cyber Cycle formula (price minus smoothing) along with a fast trigger line to generate clean, low-lag reversal signals.
How It Works
• Price is smoothed using a 6-period EMA
• Cyber Cycle = raw cycle component = price – smooth
• A 3-period EMA trigger line acts as a confirmation filter
• Signals are generated on Cyber/Trigger crossovers
• Zero line helps identify positive/negative cycle states
Features
✔ Low-lag cycle oscillator
✔ Automatic buy/sell crossover signals
✔ Zero-line state shift detection
✔ Extremely lightweight and responsive
✔ Works on all assets and timeframes
✔ Perfect for mean-reversion or cycle-based timing
Use Cases
• Reversal timing
• Cycle confirmation
• Early trend detection
• Filtering noise in choppy markets
• Combining with Ehlers-based indicators (Fisher Transform, Roofing Filter, MESA, etc.)
A clean, fast, and accurate cycle tool for traders who want a simple Ehlers oscillator with strong signal clarity.
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.
⚠️ توجه:
این اسکریپت صرفاً جهت آموزش و اطلاعرسانی طراحی شده و توصیه مالی یا سرمایهگذاری محسوب نمیشود.
نویسنده مسئول هیچگونه ضرر یا زیان احتمالی ناشی از استفاده از آن نیست.
لطفاً پیش از هر تصمیم معاملاتی، تحلیل شخصی خود را انجام داده و از این ابزار در کنار سایر ابزارهای تحلیل و مدیریت ریسک استفاده کنید.






















