Market Structure MTF [HH/HL/LH/LL + CHoCH + BOS]Automatic market structure detection with pivot classification (HH/HL/LH/LL), Change of Character (CHoCH) and Break of Structure (BOS) signals. Multi-timeframe support allows overlaying higher timeframe structure on any chart.
█ OVERVIEW
This indicator automatically detects and classifies pivot points to visualize market structure. It identifies trend direction through the sequence of highs and lows, and signals potential reversals through Change of Character (CHoCH) and trend continuation through Break of Structure (BOS).
█ CONCEPTS
Market structure analysis is based on the relationship between consecutive pivot points:
Bullish Structure:
• HH (Higher High): A swing high that exceeds the previous swing high
• HL (Higher Low): A swing low that stays above the previous swing low
• Sequence: HH → HL → HH → HL confirms uptrend
Bearish Structure:
• LH (Lower High): A swing high that fails to exceed the previous swing high
• LL (Lower Low): A swing low that breaks below the previous swing low
• Sequence: LH → LL → LH → LL confirms downtrend
Structure Shifts:
• CHoCH (Change of Character): Signals when the expected sequence breaks, suggesting potential trend reversal
• BOS (Break of Structure): Confirms trend continuation when price breaks a pivot level in trend direction
█ FEATURES
• Automatic pivot detection using configurable lookback period
• Smart classification comparing each pivot to its predecessor
• CHoCH detection when trend sequence is violated
• BOS signals with anti-repetition filter to reduce noise in consolidation zones
• Multi-Timeframe (MTF) support to display higher timeframe structure
• Horizontal dashed lines marking HTF pivot levels
• Clean visual output with color-coded labels
█ SETTINGS
Structure Settings:
• Pivot Length: Number of bars on each side required to confirm a pivot (default: 5)
- Lower values (2-3) = more sensitive, detects minor swings
- Higher values (10-20) = less sensitive, only major structure
Multi-Timeframe:
• Show HTF Structure: Enable/disable higher timeframe overlay
• HTF Timeframe: Select the higher timeframe to display (D, W, M, etc.)
Visualization:
• Show Local Structure: Toggle visibility of current timeframe pivots
Filters:
• BOS Buffer: Minimum bars between BOS signals to avoid repetition
█ HOW TO USE
The indicator offers three visualization modes:
1. LOCAL STRUCTURE ONLY (default)
├─ Show Local Structure: ✓ Enabled
├─ Show HTF Structure: ✗ Disabled
└─ Use case: Analyze structure on the current timeframe only
2. HIGHER TIMEFRAME ONLY (recommended for clarity)
├─ Show Local Structure: ✗ Disabled
├─ Show HTF Structure: ✓ Enabled
├─ HTF Timeframe: Select desired TF (D, W, M)
└─ Use case: View higher TF context on lower TF charts without clutter
3. BOTH TIMEFRAMES (advanced)
├─ Show Local Structure: ✓ Enabled
├─ Show HTF Structure: ✓ Enabled
└─ Use case: See confluence between timeframes
⚠️ WARNING: This mode can make the chart visually crowded.
Recommended only for experienced users who need both layers simultaneously.
█ RECOMMENDED SETTINGS BY TIMEFRAME
| Chart TF | Pivot Length | Suggested HTF |
|----------|--------------|---------------|
| 1H | 10-15 | 4H or D |
| 4H | 5-10 | D or W |
| 1D | 5-7 | W |
| 1W | 3-5 | M |
The goal is to make pivots on lower timeframes represent equivalent time context.
█ VISUAL REFERENCE
Local Structure Labels:
• 🟩 Green (above): HH - Higher High
• 🟥 Red (above): LH - Lower High
• 🟩 Green (below): HL - Higher Low
• 🟥 Red (below): LL - Lower Low
• 🟧 Orange: CHoCH - Change of Character
• 🟦 Blue: BOS - Break of Structure
HTF Structure Labels:
• 🩵 Teal: HH/HL - Bullish HTF structure
• 🟫 Maroon: LH/LL - Bearish HTF structure
• 🟨 Yellow: CHoCH - HTF trend shift
• 🟦 Navy: BOS - HTF structure break
• ┈┈ Dashed lines mark HTF pivot price levels
█ INTERPRETATION GUIDELINES
Reading the sequence:
• Consistent HH + HL = Bullish bias, look for long opportunities
• Consistent LH + LL = Bearish bias, look for short opportunities
• CHoCH after trending sequence = Potential reversal, exercise caution
• BOS in trend direction = Trend continuation confirmed
Combining timeframes:
• HTF structure defines the primary bias
• Local structure provides entry timing
• Confluence (both TFs aligned) = Higher probability setups
█ LIMITATIONS
• Pivots are confirmed with a delay equal to the Pivot Length parameter
• In ranging markets, multiple CHoCH signals may appear (this is correct behavior - the market IS changing direction frequently)
• CHoCH signals potential reversal, not guaranteed reversal
• Works best on liquid markets with clean price action
█ TECHNICAL NOTES
• Uses ta.pivothigh() and ta.pivotlow() for pivot detection
• request.security() fetches higher timeframe data
• Anti-repetition logic prevents BOS signal clustering in consolidation
• All crossover/crossunder calculations are performed at global scope for consistency (Pine Script v6 compliance)
█ CREDITS
Developed for swing traders and position traders who use market structure for trend analysis and trade timing.
Feedback and suggestions are welcome.
אינדיקטורים ואסטרטגיות
Stop Loss Hunting Zones This Pine Script indicator identifies and visualizes potential "stop loss hunting zones" on charts. It marks price levels where institutional traders or market makers might trigger retail stop losses before reversing direction, helping traders avoid false breakouts and better time their entries.
Key Features:
Four Types of Detection Zones-
1.Swing Zones (Red/Green): Identifies swing highs and lows using pivot point analysis where stop losses typically cluster above resistance and below support levels.
2.Breakout Zones (Orange): Detects consolidation periods and marks levels where false breakouts might occur, trapping traders who enter too early.
3.Wick Trap Zones (Purple): Highlights candles with disproportionately large wicks relative to body size, indicating potential stop loss raids with quick reversals.
4.Volume Reversal Zones (Blue): Identifies high-volume reversal patterns where price briefly touches a level before sharply reversing, suggesting stop loss absorption.
Customizable Parameters:
Swing Lookback: Period for pivot point detection (5-100 bars)
Swing Threshold: Minimum percentage move to qualify as a swing (0.5-10%)
Volume Threshold: Multiplier for detecting unusual volume (1-5x average)
Wick Ratio: Minimum wick-to-total range ratio for trap detection (0.3-0.9)
ATR Settings: Length and multiplier for zone buffer calculation
Zone Management: Maximum zones per type and minimum distance between zones
Display Options: Toggle individual zone types, heatmap intensity, labels, and transparency
Visual Features:
Heatmap Mode: Colour intensity reflects how often price has tested each zone
Smart Zone Management: Prevents chart cluttering by limiting zones and removing those too close together
Dynamic Labels: Clear zone identification with customizable display
Adjustable Transparency: Control zone visibility (10-90%)
How It Works:
The indicator uses ATR-based buffers to create zones around detected levels. It tracks price history to calculate "intensity" scores for the heatmap feature, helping identify the most significant hunting zones. The algorithm ensures zones are meaningful by enforcing minimum distances and limiting total zones displayed.
Avoid placing stop losses at obvious levels where hunting is likely
Identify potential reversal points for counter-trend trades
Recognize false breakout patterns before they complete
Time entries after stop loss hunts are absorbed
Technical Details:
Maximum 500 boxes, lines, and labels for comprehensive zone tracking
Compatible with all timeframes
Works on any market (stocks, forex, crypto, futures)
Real-time detection as new bars confirm
This indicator is designed for traders who want to understand where institutional players might target retail stop losses and use that information to their advantage. Please boost & follow for more. Happy trading !!
Disclaimer: This indicator is for educational and informational purposes only. It should not be considered financial advice. Always perform your own analysis and risk management before trading.
Apex ICT: Proximity & Delivery FlowThis indicator is a specialized ICT execution tool that automates the identification of Order Blocks, Fair Value Gaps, and Changes in State of Delivery (CISD). Unlike standard indicators that clutter the screen, this script uses a Proximity Logic Engine to ensure you only see tradeable levels. It automatically purges old data (50-candle CISD limit) and deletes mitigated zones the moment they are breached, leaving you with a clean, institutional-grade chart.
rosh PACE PRO Locked Look One Signalpace pro, use wit vwap and s/r , xau, btc good enough to genarate 10% profit a ady, use it ,soon i will make it private
Dragon Trend+Arrows Suite
This indicator is a volatility-normalized momentum + trend state tool designed to provide a clean “market regime” read: UP / DOWN / NEUTRAL, with optional visual confirmation on the chart. Works on collection of clasic indicators and some simple math.
⚙️ How it works (logic)
1) Adaptive baseline
The core reference line is an EMA(basisLen) acting as a dynamic equilibrium price. You can treat this setting as a sensitivity for entire thing.
2) ATR volatility envelope
An ATR channel is built around the baseline:
Upper Band = EMA + (ATR × multiplier)
Lower Band = EMA − (ATR × multiplier)
This scales signals to current volatility (tight markets vs. fast markets).
3) “Impulse” detection
Bull impulse when price is above both the baseline and the upper ATR band.
Bear impulse when price is below both the baseline and the lower ATR band.
4) Momentum confirmation (filters)
Signals are confirmed only when momentum agrees:
RSI must be on the correct side of 50
MACD Histogram must match direction (positive for bullish / negative for bearish)
So a signal requires price expansion (ATR breakout) + momentum agreement (RSI + MACD).
🧭 Trend state behavior
When a new BUY/SELL impulse is confirmed, the script updates a persistent trend state (“BUY”, “SELL”, or “NONE”).
That state stays active until the opposite confirmed impulse appears.
✅ Visuals & Usage
Made some minor, mostly visual upgrades on this release:
Baseline + ATR bands are smoothed for cleaner visuals.
Optional BUY/SELL arrows are plotted outside the channel to avoid overlap with channel.
Optional full-chart background shading reflects the current trend state:
Green = UPTREND
Red = DOWNTREND
A minimal top panel shows the current regime (UP / DOWN / NEUTRAL).
I also recently added this channel smoother parameter (for Dragon Channel), if you want it to have less spikes on those MAs just use the bigger number, I picked 8 for default.
Actualy its as simple as just follow the arrows direction, given the correct settings with slightly higher basisLen on higher TFs you can get prety accurate long shots. Ofcourse you can still can get random signals or noise on lower TFs, so it can be used as a background trend/momentum confirmation layer alongside your other favorite indicators or strategy tools.
Swing Structure (HH,HL,LH,LL)This indicator is designed to help identify major swing highs and swing lows in the market.
For best use pair it with the Daily chart and set both pivot points to 20
Auto Trendline using Liquidity Sweeps By Vachaspati JhaThis auto trendline systime uses Liquidity sweep points to draw, making them extremely reliable- price action respects these trendlines.
You can choose different pivot numbers for Green and Red lines to suit market condition. For instance in uptrend green line pivot number can be 2 or higher and Red line pivot number can be 1 for pullback opportunities.
ICT CISD+FVG+OBThis script is a high-performance ICT suite designed for traders who want a professional, "noise-free" chart. It identifies core institutional patterns—Order Blocks, Fair Value Gaps, and Changes in State of Delivery (CISD)—across multiple timeframes.
The script features a proprietary Proximity Cleanup Engine that automatically deletes old or broken levels, keeping your workspace focused only on price action that is currently tradeable. It strictly follows directional delivery rules for CISD and includes a 50-candle "freshness" limit to ensure you never have to manually clear old data from your past bars.
Core Features
Intelligent CISD: Only triggers Bullish CISD on green candles and Bearish CISD on red candles.
Proximity Filter: Automatically wipes away any levels that are "miles away" from the current price.
Clean Workspace: Removes broken session highs/lows and mitigated zones instantly.
Full Customization: Toggle visibility and colors for every component via the settings menu.
Vishall High Accuracy - Price + VolumeKeeping 240 bars Average is fine. Average will be changed with each Time Frame, 240 bars of each time frame, 1 Hr time frame means, 1 hrs 240 volume bar average.
Just change timeframe:
5‑min / 15‑min → intraday options.
1‑hour → short swing options.
Daily → mid‑term investing.
P&T incl. lijnen en timeframePeaks en Troughs indicator waarin je de timeframe kan opgeven en het aantal minimale candles welke tussen een high en low in moeten zitten. Eventueel kan je deze P&T koppelen met een line.
EvilAI | Survival SizerPosition sizing that adapts to market conditions. Define how many losses you can survive — the indicator calculates optimal size using ATR and volatility regime detection.
█ FEATURES
- Survival-based sizing — set losses to endure, not arbitrary risk %
- Volatility-adjusted positions:
└─ LOW vol: Size ↑ (be aggressive when markets are calm)
└─ NORMAL: Baseline sizing
└─ HIGH vol: Size ↓ (get defensive when chaos rises)
└─ EXTREME: Size ↓↓ (protect capital at all costs)
- ATR + Historical Volatility combined for regime detection
- Auto contract selection (GC/MGC, NQ/MNQ)
- Color-coded risk warnings
█ DESIGNED FOR
Prop firm traders (FundedNext, Topstep, Apex) who need adaptive risk management. When volatility spikes, you automatically size down. When markets are calm, you can push harder. All while respecting your survival floor.
█ HOW IT WORKS
1. Set your daily drawdown limit ($2,000)
2. Set target survivable losses (10)
3. Indicator calculates: $2,000 ÷ 10 = $200 max risk per trade
4. ATR determines stop distance → position size
5. Volatility regime adjusts final size up or down
6. Auto mode selects micro vs full contracts
█ DISPLAY
- Compact mode: Contracts, risk, survival count, vol regime
- Full mode: Complete breakdown with percentiles
- Survival shows actual vs target (e.g., "12L / 10L")
█ COLOR CODES
- Green: Meeting or exceeding survival target
- Yellow: Close to target / capped at max
- Cyan: Boosted (low volatility)
- Purple: Reduced (high volatility)
- Red: Below target — reconsider your sizing
Stop blowing accounts. Size positions properly.
QT-1.2QT یک اندیکاتور چندلایه برای تحلیل ساختار زمانی/چرخهای بازار است که چند منطق کلیدی را بهصورت یکپارچه روی چارت نمایش میدهد:
باکسهای چرخهای (Cycle Boxes): تفکیک دقیق چرخهها در تایمفریمهای مختلف (سالانه، ماهانه، هفتگی، روزانه، 90 دقیقه و Micro) با استایل و رنگبندی قابل تنظیم، جهت درک سریع محدودههای زمانی و ساختار بازار.
SSMT (Smart/Structured SMT) چندلایه: شناسایی SMT بر اساس شکست سقف/کف کوارتر قبلی بین چند نماد (Symbol A/B و خود چارت) با سه سطح نمایش (Same / +1 / +2) و سه حالت خروجی (Trigger-only / Prev+Trigger / Line-only). منطق حذف/لغو سیگنالها و پاکسازی خودکار، برای جلوگیری از شلوغی و سیگنالهای منقضی طراحی شده است.
Negative-Correlation SSMT (اختیاری): پشتیبانی از نمایش SMT برای نمادهای همبستگی معکوس با نرمالسازی دادهها (Invert) تا منطق SMT دقیقاً مطابق نسخه اصلی، روی سری معکوس اجرا شود.
PSP Divergence Markers: نمایش اختلاف جهت کندلها بین نمادها (یا حالت Swing در PSP Mode) با مارکرهای سبک و قابل تنظیم، همراه با محدودیت تعداد مارکها برای کنترل منابع.
True Opens by Q2 (TMO/TWO/TDO/TSO/TMSO): ترسیم خطوط «True Open» برای Q2 چرخههای مختلف (ماهانه/هفتگی/روزانه/90m/Micro) با بهروزرسانی پیشرونده و اتصال دقیق به زمان داخل کندل از طریق داده 1 دقیقهای.
این ابزار برای تریدرهایی طراحی شده که به ساختار زمانی، رفتار بینمارکتی (Intermarket) و تایید/عدم تایید شکستها اهمیت میدهند و میخواهند تمام اجزا را در یک اسکریپت سبک و کنترلشده داشته باشند.
English (Description)
QT is a multi-layer, cycle-aware market structure indicator that consolidates several core logics into a single, clean overlay:
Cycle Boxes: Accurate time-cycle segmentation across multiple horizons (Yearly, Monthly, Weekly, Daily, 90m, and Micro) with configurable styling/colors to quickly contextualize price action inside its time structure.
Multi-layer SSMT (Structured SMT): Detects SMT by comparing current breaks vs. the previous quarter’s high/low across multiple symbols (Chart / Symbol A / Symbol B), with three display layers (Same / +1 / +2) and three output modes (Trigger-only / Prev+Trigger / Line-only). Built-in invalidation/cleanup logic helps reduce clutter and expired signals.
Optional Negative-Correlation SSMT: Supports inverse-correlation instruments via series normalization (inversion), allowing the same SSMT engine to run on the inverted series while preserving the original SSMT behavior and rules.
PSP Divergence Markers: Highlights candle-direction mismatches between symbols (or swing-based PSP mode) using lightweight, customizable markers and resource limits for performance control.
True Opens by Q2 (TMO/TWO/TDO/TSO/TMSO): Plots True Open levels for Q2 across cycles (Monthly/Weekly/Daily/90m/Micro), including progressive extensions and precise intra-bar timestamp attachment using 1-minute data when needed.
QT is built for traders who focus on time structure, intermarket confirmation/denial, and disciplined SMT-based signaling, while keeping everything unified, performant, and configurable.
Last Swing Anchor Zones - EnhancedLast Swing Anchor Zones automatically identifies major swing highs and lows on your chart and draws shaded reaction zones around them. These zones represent potential support and resistance areas where price may react.
How It Works:
• Detects pivot points using a customizable lookback period (default: 6 bars)
• Creates semi-transparent zones around each swing point
• Displays up to 3 most recent zones (configurable)
• Shows price labels for quick reference
• Zones extend forward to highlight future price interaction areas
How to Use:
• Teal/cyan zones = resistance levels (swing highs)
• Red/pink zones = support levels (swing lows)
• Look for price reactions when approaching these zones
• Use as confluence with your existing trading strategy
• Adjust zone width % to match your timeframe and volatility
Customizable Settings:
• Pivot Lookback: Change sensitivity (lower = more zones, higher = fewer major swings)
• Zone Width %: Adjust zone thickness
• Max Zones: Display 1-10 recent zones
• Colors: Customize zone and label colors
• Show Labels: Toggle price labels on/off
Hoon Fib project//@version=6
indicator("Hoon Fib project", shorttitle ="Hoon Fib project" ,overlay = true, max_bars_back = 5000)
// ~~ Tooltips {
var string t1 = "Period: Number of bars used to detect swing highs and swing lows. Larger values give fewer but larger swings. (Works relative to current timeframe)."
var string t2 = "Projection Level: Fibonacci ratio used to calculate the projected future swing targets (e.g. 61.8%)."
var string t2_b = "Trend Projection Ratio: The secondary Fibonacci ratio used for the furthest extension (default was 1.272)."
var string t3 = "Level 1: Ratio and Color for the first retracement level (Standard: 0.236)."
var string t4 = "Level 2: Ratio and Color for the second retracement level (Standard: 0.382)."
var string t5 = "Level 3: Ratio and Color for the third retracement level (Standard: 0.500)."
var string t6 = "Level 4: Ratio and Color for the fourth retracement level (Standard: 0.618)."
var string t7 = "Level 5: Ratio and Color for the fifth retracement level (Standard: 0.786)."
var string t8 = "Fib Line Width: Thickness of all horizontal Fibonacci retracement lines."
var string t9 = "Fib Labels: Show or hide percentage labels at each Fibonacci retracement line."
var string t10 = "Fib Label Text Color: Text color of Fibonacci retracement labels."
var string t11 = "Fib Label Size: Font size of Fibonacci retracement labels."
var string t12 = "Low Line Color: Color for the most recent swing low horizontal guide line."
var string t13 = "High Line Color: Color for the most recent swing high horizontal guide line."
var string t14 = "Swing Line Width: Thickness of both swing high and swing low guide lines."
var string t15 = "Fib Volume Profile: Enable or disable the main volume profile drawn between the last swing high and low."
var string t16 = "Rows: Number of price rows (bins) used in the Fib volume profile. More rows = finer detail."
var string t17 = "Flip Bull/Bear: Swap the horizontal position of bullish and bearish volume bars in the profile."
var string t18 = "Bull Volume Color: Base color used for bullish (up-bar) volume in the Fib volume profile."
var string t19 = "Bear Volume Color: Base color used for bearish (down-bar) volume in the Fib volume profile."
var string t20 = "Fib Volume Delta: Enable or disable the separate volume delta profile between Fibonacci price bands."
var string t21 = "Delta Max Width: Maximum horizontal width (in bars) used to scale delta boxes from smallest to largest."
var string t22 = "Bullish Delta Color: Fill color for bands where bullish volume exceeds bearish volume (positive delta)."
var string t23 = "Bearish Delta Color: Fill color for bands where bearish volume exceeds bullish volume (negative delta)."
var string t24 = "Bullish Projection Line Color: Color of projected segments when price is projected upward."
var string t25 = "Bearish Projection Line Color: Color of projected segments when price is projected downward."
var string t26 = "Projection Line Width: Thickness of projected swing segments."
var string t27 = "Projection Line Style: Visual style of projected lines (solid, dashed, dotted, or arrows)."
var string t28 = "Bullish Label Background: Background color for percentage labels on upward projection segments."
var string t29 = "Bearish Label Background: Background color for percentage labels on downward projection segments."
var string t30 = "Projection Label Text Color: Text color of projection percentage labels."
var string t31 = "Projection Label Size: Font size of projection percentage labels."
var string t32 = "Projection Box Background: Toggle the background fill of projection boxes on or off."
var string t33 = "Projection Box Background Color: Fill color used for projection boxes (when background is enabled)."
var string t34 = "Projection Box Border: Toggle drawing a border around projection boxes."
var string t35 = "Projection Box Border Color: Color of the border around projection boxes."
var string t36 = "Projection Box Border Width: Thickness of projection box borders."
var string t37 = "Projection Box Border Style: Line style for projection box borders (solid/dashed/dotted)."
var string t38 = "Projection Box Horizontal Align: Horizontal alignment of text inside projection boxes (left/center/right)."
var string t39 = "Projection Box Vertical Align: Vertical alignment of text inside projection boxes (top/center/bottom)."
var string t40 = "Projection Box Text Color: Text color for the projection level values shown inside the boxes."
var string t41 = "Projection Box Text Size: Font size of the projection level values shown inside the boxes."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Inputs {
prd = input.int(
100,
"Period",
group = "Fib Settings",
inline = "fibColor",
tooltip = t1
)
lvl = input.float(
0.618,
title = "Projection Level",
group = "Fib Settings",
options = ,
tooltip = t2
)
// NEW INPUT FOR CUSTOM FIB
trendFibbRatio = input.float(
1.272,
title = "Trend Projection Ratio",
step = 0.001,
group = "Fib Settings",
tooltip = t2_b
)
// Fib line style inputs (horizontal fib levels)
fibLvl1 = input.float(0.236, "Level 1", group = "Fib Levels Style", inline = "f1", tooltip = t3)
fibColor236 = input.color(#f23645, "", group = "Fib Levels Style", inline = "f1")
fibLvl2 = input.float(0.382, "Level 2", group = "Fib Levels Style", inline = "f2", tooltip = t4)
fibColor382 = input.color(#81c784, "", group = "Fib Levels Style", inline = "f2")
fibLvl3 = input.float(0.500, "Level 3", group = "Fib Levels Style", inline = "f3", tooltip = t5)
fibColor500 = input.color(#4caf50, "", group = "Fib Levels Style", inline = "f3")
fibLvl4 = input.float(0.618, "Level 4", group = "Fib Levels Style", inline = "f4", tooltip = t6)
fibColor618 = input.color(#089981, "", group = "Fib Levels Style", inline = "f4")
fibLvl5 = input.float(0.786, "Level 5", group = "Fib Levels Style", inline = "f5", tooltip = t7)
fibColor786 = input.color(#64b5f6, "", group = "Fib Levels Style", inline = "f5")
fibLineWidth = input.int(
2,
"Fib Line Width",
minval = 1,
maxval = 5,
group = "Fib Levels Style",
inline = "fwidth",
tooltip = t8
)
showlab = input.bool(
false,
title = "Fib Labels",
group = "Fib Levels Style",
inline = "fiblab"
)
fibLabelColor = input.color(
color.white,
"",
group = "Fib Levels Style",
inline = "fiblab"
)
fibLabelSizeStr = input.string(
"Small",
"",
options = ,
group = "Fib Levels Style",
inline = "fiblab",
tooltip = t9 + " " + t10 + " " + t11
)
fibLabelOffset = 1 // (fixed) x offset for labels
// derived label size
fibLabelSize =
fibLabelSizeStr == "Tiny" ? size.tiny :
fibLabelSizeStr == "Small" ? size.small :
fibLabelSizeStr == "Large" ? size.large :
fibLabelSizeStr == "Huge" ? size.huge :
size.normal
// Swing high/low lines
loLineColor = input.color(
color.new(color.green, 0),
"Low Line",
group = "Swing High/Low Lines Style",
inline = "hi"
)
hiLineColor = input.color(
color.new(color.red, 0),
"High Line",
group = "Swing High/Low Lines Style",
inline = "hi"
)
hiloLineWidth = input.int(
2,
"Width",
1,
5,
group = "Swing High/Low Lines Style",
inline = "hi",
tooltip = t12 + " " + t13 + " " + t14
)
// Fib volume profile inputs
showFibProfile = input.bool(
true,
"Fib Volume Profile",
group = "Fib Volume Profile",
inline = "fibprof"
)
rows = input.int(
10,
"Rows",
2,
100,
group = "Fib Volume Profile",
inline = "fibprof"
)
flipOrder = input.bool(
false,
"Flip Bull/Bear",
group = "Fib Volume Profile",
inline = "fibprof",
tooltip = t15 + " " + t16 + " " + t17
)
bull_color = input.color(
color.new(color.teal, 30),
"Bull",
group = "Fib Volume Profile",
inline = "volColor"
)
bear_color = input.color(
color.new(color.orange, 30),
"Bear",
group = "Fib Volume Profile",
inline = "volColor",
tooltip = t18 + " " + t19
)
// Volume Text Settings
showVolText = input.bool(true, "Show Volume Values", group="Fib Volume Profile", inline="vtxt")
volTextSizeStr = input.string("Tiny", "Size", options= , group="Fib Volume Profile", inline="vtxt")
volTextSize =
volTextSizeStr == "Tiny" ? size.tiny :
volTextSizeStr == "Small" ? size.small :
size.normal
// Fib Volume Delta profile
showFibDelta = input.bool(
false,
"Fib Volume Delta",
group = "Fib Volume Delta Profile",
inline = "delta"
)
deltaMaxWidth = input.int(
30,
"Max Width",
minval = 5,
maxval = 200,
group = "Fib Volume Delta Profile",
inline = "delta",
tooltip = t20 + " " + t21
)
deltaBullColor = input.color(
color.new(color.lime, 80),
"Bullish Delta",
group = "Fib Volume Delta Profile",
inline = "deltaColor"
)
deltaBearColor = input.color(
color.new(color.red, 80),
"Bearish Delta",
group = "Fib Volume Delta Profile",
inline = "deltaColor",
tooltip = t22 + " " + t23
)
// Projection LINES style
projLineBullColor = input.color(
color.new(color.green, 0),
"Bullish",
group = "Projection Lines Style",
inline = "plc"
)
projLineBearColor = input.color(
color.new(color.red, 0),
"Bearish",
group = "Projection Lines Style",
inline = "plc"
)
projLineWidth = input.int(
2,
"Width",
1,
5,
group = "Projection Lines Style",
inline = "plc"
)
projLineStyleStr = input.string(
"Arrow Right",
"",
options = ,
group = "Projection Lines Style",
inline = "plc",
tooltip = t24 + " " + t25 + " " + t26 + " " + t27
)
projLineStyle =
projLineStyleStr == "Solid" ? line.style_solid :
projLineStyleStr == "Dashed" ? line.style_dashed :
projLineStyleStr == "Dotted" ? line.style_dotted :
projLineStyleStr == "Arrow Left" ? line.style_arrow_left :
line.style_arrow_right
// Projection % LABELS style
projPercBullColor = input.color(
color.new(color.green, 0),
"Bullish Bg",
group = "Projection Labels Style",
inline = "plc"
)
projPercBearColor = input.color(
color.new(color.red, 0),
"Bearish Bg",
group = "Projection Labels Style",
inline = "plc"
)
projPercTextColor = input.color(
color.white,
"Text",
group = "Projection Labels Style",
inline = "plc"
)
projPercLabelSizeStr = input.string(
"Small",
"",
options = ,
group = "Projection Labels Style",
inline = "plc",
tooltip = t28 + " " + t29 + " " + t30 + " " + t31
)
projPercLabelSize =
projPercLabelSizeStr == "Tiny" ? size.tiny :
projPercLabelSizeStr == "Small" ? size.small :
projPercLabelSizeStr == "Large" ? size.large :
projPercLabelSizeStr == "Huge" ? size.huge :
size.normal
// Projection box style inputs
projBoxBgOn = input.bool(
true,
"Background",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBgColor = input.color(
color.new(color.blue, 80),
"",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderOn = input.bool(
true,
"Border",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderCol = input.color(
color.new(color.white, 0),
"",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderW = input.int(
1,
"",
minval = 1,
maxval = 5,
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderStyleStr = input.string(
"Solid",
"",
options = ,
group = "Projection Box Style",
inline = "pbg",
tooltip = t32 + " " + t33 + " " + t34 + " " + t35 + " " + t36 + " " + t37
)
projBoxTextHAlignStr = input.string(
"Center",
"H Align",
options = ,
group = "Projection Box Style",
inline = "ptxt"
)
projBoxTextVAlignStr = input.string(
"Center",
"V Align",
options = ,
group = "Projection Box Style",
inline = "ptxt",
tooltip = t38 + " " + t39
)
projBoxTextColor = input.color(
color.white,
"Text",
group = "Projection Box Style",
inline = "ptxt2"
)
projBoxTextSizeStr = input.string(
"Normal",
"",
options = ,
group = "Projection Box Style",
inline = "ptxt2",
tooltip = t40 + " " + t41
)
projBoxTextSize =
projBoxTextSizeStr == "Tiny" ? size.tiny :
projBoxTextSizeStr == "Small" ? size.small :
projBoxTextSizeStr == "Large" ? size.large :
projBoxTextSizeStr == "Huge" ? size.huge :
size.normal
// Derived projection box style settings
projBoxBorderStyle =
projBoxBorderStyleStr == "Solid" ? line.style_solid :
projBoxBorderStyleStr == "Dashed" ? line.style_dashed :
line.style_dotted
projBoxTextHAlign =
projBoxTextHAlignStr == "Left" ? "left" :
projBoxTextHAlignStr == "Right" ? "right" :
"center"
projBoxTextVAlign =
projBoxTextVAlignStr == "Top" ? "top" :
projBoxTextVAlignStr == "Bottom" ? "bottom" :
"center"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Swing detection {
hi = ta.highest(high, prd)
lo = ta.lowest(low, prd)
isHi = high == hi
isLo = low == lo
HB = ta.barssince(isHi)
LB = ta.barssince(isLo)
// price of last swing high/low
hiPrice = ta.valuewhen(isHi, high, 0)
loPrice = ta.valuewhen(isLo, low, 0)
// bar index of last swing high/low
hiBar = ta.valuewhen(isHi, bar_index, 0)
loBar = ta.valuewhen(isLo, bar_index, 0)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Persistent drawings {
var line hiLine = na
var line loLine = na
if barstate.isfirst
hiLine := line.new(na, na, na, na, color = hiLineColor, width = hiloLineWidth)
loLine := line.new(na, na, na, na, color = loLineColor, width = hiloLineWidth)
// arrays to store objects
var array fibbLines = array.new_line()
var array fibbLabels = array.new_label()
var array forecastLines = array.new_line()
var array areas = array.new_box()
var array perc = array.new_label()
var array fibProfileBoxes = array.new_box()
var array fibDeltaBoxes = array.new_box()
var int deltaStartX = na
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Functions {
// fib level calculator
fibbFunc(v, last, h, l) =>
last ? h - (h - l) * v : l + (h - l) * v
// generic cleaner for drawing-object arrays (lines, boxes, labels)
cleaner(a, idx) =>
if idx >= 0 and idx < array.size(a)
el = array.get(a, idx)
if not na(el)
el.delete()
array.remove(a, idx)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Main logic {
if not na(HB) and not na(LB) and not na(hiPrice) and not na(loPrice) and not na(hiBar) and not na(loBar)
// update swing lines
// update swing lines (position + live style)
line.set_xy1(hiLine, hiBar, hiPrice)
line.set_xy2(hiLine, bar_index, hiPrice)
line.set_color(hiLine, hiLineColor)
line.set_width(hiLine, hiloLineWidth)
line.set_xy1(loLine, loBar, loPrice)
line.set_xy2(loLine, bar_index, loPrice)
line.set_color(loLine, loLineColor)
line.set_width(loLine, hiloLineWidth)
bars = math.abs(HB - LB)
// FIB retracement lines
for i = array.size(fibbLines) - 1 to 0
cleaner(fibbLines, i)
for i = array.size(fibbLabels) - 1 to 0
cleaner(fibbLabels, i)
lvls = array.from(fibLvl1, fibLvl2, fibLvl3, fibLvl4, fibLvl5)
cols = array.from(fibColor236, fibColor382, fibColor500, fibColor618, fibColor786)
baseOffset = HB > LB ? LB : HB
xFibStart = bar_index - baseOffset
for in lvls
f = fibbFunc(e, HB < LB, hiPrice, loPrice)
x1 = xFibStart
x2 = bar_index
ln = line.new(
chart.point.from_index(x1, f),
chart.point.from_index(x2, f),
color = cols.get(i),
width = fibLineWidth
)
array.push(fibbLines, ln)
// fib label at right of line
if showlab
fibText = str.tostring(e * 100, "#.##") + "%"
lbl = label.new(
chart.point.from_index(x2 + fibLabelOffset, f),
fibText,
textcolor = fibLabelColor,
style = label.style_label_left,
size = fibLabelSize,
color =cols.get(i)
)
array.push(fibbLabels, lbl)
// Projection part
fibb = fibbFunc(lvl, LB > HB, hiPrice, loPrice)
fibb2 = LB < HB ?
fibbFunc(lvl, true, fibb, loPrice) :
fibbFunc(lvl, false, hiPrice, fibb)
trendfibb = LB > HB ?
fibbFunc(trendFibbRatio, true, hiPrice, loPrice) :
fibbFunc(trendFibbRatio, false, hiPrice, loPrice)
forecast = array.from(HB < LB ? hiPrice : loPrice, fibb, fibb2, trendfibb)
segment = math.min(bars, math.floor(500.0 / 4.0))
// clear previous forecast lines, boxes, and labels
for i = array.size(forecastLines) - 1 to 0
cleaner(forecastLines, i)
for i = array.size(areas) - 1 to 0
cleaner(areas, i)
for i = array.size(perc) - 1 to 0
cleaner(perc, i)
deltaStartX := na
future = bar_index
for i = 0 to forecast.size() - 2
x1 = math.min(future, bar_index + 500)
x2 = math.min(future + segment, bar_index + 500)
y1 = forecast.get(i)
y2 = forecast.get(i + 1)
lnForecast = line.new(
x1, y1,
x2, y2,
color = y1 < y2 ? projLineBullColor : projLineBearColor,
width = projLineWidth,
style = projLineStyle
)
array.push(forecastLines, lnForecast)
// area box around the end of segment
midBoxLeft = x2 - math.round((x1 - x2) / 4.0)
midBoxRight = x2 + math.round((x1 - x2) / 4.0)
boxHeight = math.abs(y1 - y2) / 10.0
txtLevel = i == forecast.size() - 2 ?
str.tostring(trendFibbRatio, "#.###") :
str.tostring(lvl * 100, "#.##")
boxBg = projBoxBgOn ? projBoxBgColor : color.new(projBoxBgColor, 100)
boxBord = projBoxBorderOn ? projBoxBorderCol : color.new(projBoxBorderCol, 100)
bx = box.new(
midBoxLeft,
y2 + boxHeight,
midBoxRight,
y2 - boxHeight,
bgcolor = boxBg,
border_color = boxBord,
border_style = projBoxBorderStyle,
border_width = projBoxBorderW,
text = txtLevel,
text_halign = projBoxTextHAlign,
text_valign = projBoxTextVAlign,
text_color = projBoxTextColor,
text_size = projBoxTextSize
)
array.push(areas, bx)
// keep track of the rightmost edge of the last projection box
deltaStartX := na(deltaStartX) ? box.get_right(bx) : math.max(deltaStartX, box.get_right(bx))
// percentage label
change = (y2 - y1) / y1
midX = int(math.avg(x1, x2))
midY = line.get_price(lnForecast, midX)
lb = label.new(
chart.point.from_index(midX, midY),
str.tostring(change * 100, format.percent),
color = change > 0 ? projPercBullColor : projPercBearColor,
style = i == 1 ? label.style_label_lower_right : label.style_label_lower_left,
textcolor = projPercTextColor,
size = projPercLabelSize
)
array.push(perc, lb)
future += segment
// ~~ Fib Volume Profile
if showFibProfile and hiBar != loBar and not na(hiPrice) and not na(loPrice)
for i = array.size(fibProfileBoxes) - 1 to 0
cleaner(fibProfileBoxes, i)
top = math.max(hiPrice, loPrice)
bottom = math.min(hiPrice, loPrice)
if top != bottom
step = (top - bottom) / rows
levels = array.new_float()
for i = 0 to rows
array.push(levels, bottom + step * i)
volUp = array.new_float(rows, 0.0)
volDn = array.new_float(rows, 0.0)
startBar = math.min(hiBar, loBar)
endBar = math.max(hiBar, loBar)
for bi = startBar to endBar
offset = bar_index - bi
// SAFETY CHECK: Prevents crash on low timeframes if swing is > 5000 bars
if offset < 4998
price = hlc3
vol = nz(volume ) // SAFETY: nz() for no volume data
bull = close > open
for r = 0 to rows - 1
dn = array.get(levels, r)
up = array.get(levels, r + 1)
if price >= dn and price < up
if bull
array.set(volUp, r, array.get(volUp, r) + vol)
else
array.set(volDn, r, array.get(volDn, r) + vol)
break
maxTot = 0.0
for r = 0 to rows - 1
tot = array.get(volUp, r) + array.get(volDn, r)
maxTot := math.max(maxTot, tot)
span = endBar - startBar + 1
if maxTot > 0
for r = 0 to rows - 1
upVol = array.get(volUp, r)
dnVol = array.get(volDn, r)
normUp = upVol == 0 ? 0 : int((upVol / maxTot) * span)
normDn = dnVol == 0 ? 0 : int((dnVol / maxTot) * span)
bullRowCol = color.from_gradient(r, 0, rows - 1, color.new(bull_color, 80), color.new(bull_color, 10))
bearRowCol = color.from_gradient(r, 0, rows - 1, color.new(bear_color, 80), color.new(bear_color, 10))
yTop = array.get(levels, r + 1)
yBottom = array.get(levels, r)
leftBull = flipOrder ? startBar : startBar + normDn
rightBull = flipOrder ? startBar + normUp : startBar + normDn + normUp
leftBear = flipOrder ? startBar + normUp : startBar
rightBear = flipOrder ? startBar + normUp + normDn : startBar + normDn
if normUp > 0
bBull = box.new(
leftBull, yTop,
rightBull, yBottom,
bgcolor = bullRowCol,
border_color = color.new(bullRowCol, 0),
border_style = line.style_dotted,
text = showVolText ? str.tostring(upVol, format.volume) : "",
text_color = color.white,
text_size = volTextSize,
text_valign = text.align_center,
text_halign = text.align_center
)
array.push(fibProfileBoxes, bBull)
if normDn > 0
bBear = box.new(
leftBear, yTop,
rightBear, yBottom,
bgcolor = bearRowCol,
border_color = color.new(bearRowCol, 0),
border_style = line.style_dotted,
text = showVolText ? str.tostring(dnVol, format.volume) : "",
text_color = color.white,
text_size = volTextSize,
text_valign = text.align_center,
text_halign = text.align_center
)
array.push(fibProfileBoxes, bBear)
// Fib Volume Delta Profile
if showFibDelta and hiBar != loBar and not na(hiPrice) and not na(loPrice)
for i = array.size(fibDeltaBoxes) - 1 to 0
cleaner(fibDeltaBoxes, i)
// Build fib prices
fibPrices = array.new_float()
array.push(fibPrices, hiPrice)
for e in lvls
lvlPrice = fibbFunc(e, HB < LB, hiPrice, loPrice)
array.push(fibPrices, lvlPrice)
array.push(fibPrices, loPrice)
// Sort prices low→high
fibSorted = array.copy(fibPrices)
array.sort(fibSorted)
bandsCount = array.size(fibSorted) - 1
if bandsCount > 0
bandBull = array.new_float(bandsCount, 0.0)
bandBear = array.new_float(bandsCount, 0.0)
startBar = math.min(hiBar, loBar)
endBar = math.max(hiBar, loBar)
// accumulate bull/bear volume per band
for bi = startBar to endBar
offset = bar_index - bi
// SAFETY CHECK: Prevents crash on low timeframes if swing is > 5000 bars
if offset < 4998
price = hlc3
vol = nz(volume ) // SAFETY: nz()
bull = close > open
for b = 0 to bandsCount - 1
bandLow = array.get(fibSorted, b)
bandHigh = array.get(fibSorted, b + 1)
if price >= bandLow and price < bandHigh
if bull
array.set(bandBull, b, array.get(bandBull, b) + vol)
else
array.set(bandBear, b, array.get(bandBear, b) + vol)
break
// compute delta
maxAbsDelta = 0.0
for b = 0 to bandsCount - 1
delta = array.get(bandBull, b) - array.get(bandBear, b)
maxAbsDelta := math.max(maxAbsDelta, math.abs(delta))
if maxAbsDelta > 0
xStartBase = startBar
for b = 0 to bandsCount - 1
bandLow = array.get(fibSorted, b)
bandHigh = array.get(fibSorted, b + 1)
delta = array.get(bandBull, b) - array.get(bandBear, b)
if delta == 0
continue
absDelta = math.abs(delta)
widthBars = int((absDelta / maxAbsDelta) * deltaMaxWidth)
widthBars := math.max(widthBars, 1)
xEnd = xStartBase
xStart = xStartBase - widthBars
col = delta >= 0 ? deltaBullColor : deltaBearColor
dBox = box.new(
xStart, bandHigh,
xEnd, bandLow,
bgcolor = col,
border_color = color.new(col, 0),
border_style = line.style_solid,
text = "Δ " + str.tostring(delta, format.volume),
text_color = color.white,
text_halign = "center",
text_valign = "center"
)
array.push(fibDeltaBoxes, dBox)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
ATR Momentum Status v.2ATR Momentum Status Version 2 locked ATR Momentum Status (Bar-Close Confirmed)
In previous versions, the ATR momentum status could change intrabar while the candle was still forming. In v.2, the ATR momentum is calculated only after the candle closed and is locked until the next candle closes.
Why this matters:
Prevents repainting or intrabar flipping
Ensures what you see on the dashboard is fully confirmed
Makes replay mode and backtesting reliable
How Traders Use It:
This tool is best used as a confirmation layer, not a standalone signal. Common use cases:
- Confirming FVG / CE acceptance
- Validating displacement candles
- Filtering trades to only Strong / Expansion conditions
- Avoiding entries during weak or declining volatility
Key Concept:
Price can move without momentum, but momentum confirms intent. With the ATR status locked after candle close, v.2 ensures every ATR reading represents real, confirmed market participation, making it safer for execution-based strategies.
Aurora Volatility Bands [JOAT]Aurora Volatility Bands - Dynamic ATR-Based Envelope System
Introduction and Purpose
Aurora Volatility Bands is an open-source overlay indicator that creates multi-layered volatility envelopes around price using ATR (Average True Range) calculations. The core problem this indicator solves is that static bands (like fixed percentage envelopes) fail to adapt to changing market conditions. During high volatility, static bands are too tight; during low volatility, they're too wide.
This indicator addresses that by using ATR-based dynamic bands that automatically expand during volatile periods and contract during quiet periods, providing contextually appropriate support/resistance levels at all times.
Why These Components Work Together
The indicator combines three analytical approaches:
1. Triple-Layer Band System - Inner (1x ATR), Outer (2x ATR), and Extreme (3x ATR) bands provide graduated levels of significance
2. Volatility State Detection - Compares current ATR to historical average to classify market regime
3. Multiple MA Types - Allows customization of the center line calculation method
These components complement each other:
The triple-layer system gives traders multiple reference points - inner bands for normal moves, outer for significant moves, extreme for rare events
Volatility state detection tells you WHEN bands are expanding or contracting, helping anticipate breakouts or mean-reversion
MA type selection lets you match the indicator to your trading style (faster EMA vs smoother SMA)
How the Calculation Works
The bands are calculated using ATR multiplied by configurable factors:
float atr = ta.atr(atrPeriod)
float innerUpper = centerMA + (atr * innerMult)
float outerUpper = centerMA + (atr * outerMult)
float extremeUpper = centerMA + (atr * extremeMult)
Volatility state is determined by comparing current ATR percentage to its historical average:
float atrPercent = (atr / close) * 100
float avgAtrPercent = ta.sma(atrPercent, volatilityLookback)
float volatilityRatio = atrPercent / avgAtrPercent
bool isExpanding = volatilityRatio > 1.2 // 20%+ above average
bool isContracting = volatilityRatio < 0.8 // 20%+ below average
Signal Types
Band Touch - Price reaches inner, outer, or extreme bands
Mean Reversion - Price returns to center after touching outer/extreme bands
Breakout - Sustained move beyond outer bands during volatility expansion
Dashboard Information
Volatility - Current state (EXPANDING/CONTRACTING/NORMAL)
Vol Ratio - Current volatility vs average (e.g., 1.5x = 50% above average)
ATR - Current ATR value
ATR % - ATR as percentage of price
Zone - Current price position (EXTREME HIGH/UPPER ZONE/CENTER ZONE/etc.)
Position - Price position as percentage within band structure
Width - Total band width as percentage of price
Using SMA in settings:
How to Use This Indicator
For Mean-Reversion Trading:
1. Wait for price to touch outer or extreme bands
2. Check that volatility state is NORMAL or CONTRACTING (not expanding)
3. Look for reversal candlestick patterns at the band
4. Enter toward center MA with stop beyond the band
For Breakout Trading:
1. Wait for volatility state to show EXPANDING
2. Look for price closing beyond outer bands
3. Enter in direction of breakout
4. Use the band as trailing stop reference
For Volatility Analysis:
1. Monitor volatility ratio for regime changes
2. CONTRACTING often precedes large moves (squeeze)
3. EXPANDING confirms trend strength
Using VWMA and Mean Reversion Signal/MR:
Input Parameters
ATR Period (14) - Period for ATR calculation
Inner/Outer/Extreme Multipliers (1.0/2.0/3.0) - Band distance from center
MA Type (EMA) - Center line calculation method
MA Period (20) - Period for center line
Volatility Comparison Period (20) - Lookback for volatility state
Timeframe Recommendations
15m-1H: Good for intraday mean-reversion
4H-Daily: Best for swing trading and breakout identification
Weekly: Useful for position trading and major level identification
Limitations
ATR-based bands lag during sudden volatility spikes
Mean-reversion signals can fail in strong trends
Breakout signals may whipsaw in ranging markets
Works best on liquid instruments with consistent volatility patterns
Open-Source and Disclaimer
This script is published as open-source under the Mozilla Public License 2.0 for educational purposes. The source code is fully visible and can be studied to understand how each component works.
This indicator does not constitute financial advice. Band touches do not guarantee reversals. Past performance does not guarantee future results. Always use proper risk management, position sizing, and stop-losses.
- Made with passion by officialjackofalltrades
HA Trend Reclaim Daily Structure Pullback🔹 HA Trend Reclaim — Daily Structure Pullback System
HA Trend Reclaim is a professional-grade trend continuation indicator designed to highlight high-probability LONG and SHORT setups using a combination of:
Heikin Ashi candle structure
EMA trend alignment (9 & 50 EMA)
Daily High / Low market structure
Pullback → momentum reclaim logic
This indicator is built for traders who want clarity, discipline, and structure, not noise or over-signaling.
It focuses on trading with the dominant trend, entering only after price pulls back and confirms strength via momentum reclaim.
🔑 What Makes This Different
✔ No counter-trend signals
✔ No breakout chasing
✔ Built-in structure awareness
✔ Clear visual entries & risk levels
✔ Works across stocks, crypto, and futures
This script is ideal for traders who prefer fewer, higher-quality trades rather than constant signals.
2️⃣ HOW TO USE (FEATURED-FRIENDLY VERSION)
🟢 LONG Conditions
A LONG signal appears when:
EMA 9 is above EMA 50
Price is above EMA 50
Price pulls back into the EMA zone
Price reclaims EMA 9 upward
Heikin Ashi candle closes bullish (not a doji)
🔴 SHORT Conditions
A SHORT signal appears when:
EMA 9 is below EMA 50
Price is below EMA 50
Price pulls back into the EMA zone
Price reclaims EMA 9 downward
Heikin Ashi candle closes bearish (not a doji)
📦 Daily Structure Boxes
The indicator highlights the daily high–low range:
Green box → bullish daily bias
Red box → bearish daily bias
These boxes help traders avoid:
Mid-range chop
Late entries
Trading against daily momentum
3️⃣ BEST SETTINGS (VERY IMPORTANT FOR USERS)
Recommended Timeframes
Stocks: 5m, 15m, 1H
Crypto: 15m, 1H, 4H
Futures: 5m, 15m
Recommended Inputs
Setting Value
EMA Fast 9
EMA Slow 50
Swing Lookback 15
Runner RR 2.0
Heikin Ashi Enabled
Show Daily Boxes Enabled
Notes
Higher timeframes = fewer, stronger signals
Avoid low-liquidity instruments
Best used during active sessions (London / NY)
Eclipse Multi-Oscillator [JOAT]Eclipse Multi-Oscillator - Unified Momentum Confluence System
Introduction and Purpose
Eclipse Multi-Oscillator is an open-source indicator that combines four classic oscillators (RSI, Stochastic, CCI, and Williams %R) into a single unified view with confluence detection. The core problem this indicator solves is oscillator disagreement: traders often see RSI oversold while Stochastic is neutral, or CCI overbought while Williams %R is mid-range. This creates confusion about the true momentum state.
This indicator addresses that by displaying all four oscillators together and counting how many agree on overbought or oversold conditions, providing a clear confluence score that cuts through the noise.
Why These Four Oscillators Work Together
Each oscillator measures momentum differently, and their combination provides a more complete picture:
1. RSI (Relative Strength Index) - Measures the magnitude of recent price changes. Best at identifying momentum exhaustion.
2. Stochastic - Compares closing price to the high-low range. Best at identifying where price is within its recent range.
3. CCI (Commodity Channel Index) - Measures price deviation from statistical mean. Best at identifying unusual price movements.
4. Williams %R - Similar to Stochastic but inverted. Provides confirmation of Stochastic readings.
When 3 or more of these oscillators agree on overbought or oversold, the signal is significantly more reliable than any single oscillator alone.
How Confluence Scoring Works
The indicator counts how many oscillators are in extreme territory:
int obCount = 0
if rsi > rsiOB
obCount += 1
if stochK > stochOB
obCount += 1
if cci > cciOB
obCount += 1
if willRScaled > stochOB
obCount += 1
bool strongOverbought = obCount >= 3
bool strongOversold = osCount >= 3
The confluence score ranges from -4 (all oversold) to +4 (all overbought), with 0 being neutral.
Signal Types
Strong Oversold - 3+ oscillators below oversold threshold (potential bounce)
Strong Overbought - 3+ oscillators above overbought threshold (potential pullback)
OB/OS Exit - RSI leaving extreme zone with Stochastic confirmation (potential reversal)
Divergence - Price makes new high/low while RSI does not (potential reversal warning)
Dashboard Information
RSI/Stoch K/CCI/Will %R - Current values with zone status (OB/OS/MID)
Confluence - Overall bias (STRONG OS, STRONG OB, Lean Bull/Bear, Neutral)
OB Count - How many oscillators are overbought (0-4)
OS Count - How many oscillators are oversold (0-4)
How to Use This Indicator
For Reversal Trading:
1. Wait for Strong Oversold (3+ oscillators agree)
2. Look for bullish candlestick pattern or support level
3. Enter long with stop below recent low
4. Take profit when confluence returns to neutral or overbought
For Trend Confirmation:
1. Check confluence direction matches your trade bias
2. Avoid longs when confluence is strongly overbought
3. Avoid shorts when confluence is strongly oversold
For Divergence Trading:
1. Watch for "D" labels indicating RSI divergence
2. Bullish divergence at support = potential long
3. Bearish divergence at resistance = potential short
Input Parameters
RSI Length (14) - Period for RSI calculation
Stochastic K/D Length (14/3) - Periods for Stochastic
CCI Length (20) - Period for CCI
Williams %R Length (14) - Period for Williams %R
OB/OS Thresholds - Customizable levels for each oscillator
Timeframe Recommendations
15m-1H: Good for intraday momentum analysis
4H-Daily: Best for swing trading confluence
Very short timeframes may produce noisy signals
Limitations
All oscillators can remain in extreme territory during strong trends
Confluence does not predict direction, only identifies extremes
Divergence detection is simplified and may miss some patterns
Works best in ranging or moderately trending markets
Open-Source and Disclaimer
This script is published as open-source under the Mozilla Public License 2.0 for educational purposes. The source code is fully visible and can be studied.
This indicator does not constitute financial advice. Oscillator confluence does not guarantee reversals. Past performance does not guarantee future results. Always use proper risk management.
- Made with passion by officialjackofalltrades
Trend Speed Analyzer with Entries (Zeiierman)📈 Trend Speed Analyzer with Entry Signals (Zeiierman – Modified)
🔹 Overview
This indicator is a trend-following momentum system built around an adaptive (dynamic) moving average and a proprietary trend speed / wave strength engine.
It is designed to identify high-quality continuation entries after price confirms direction, not to predict tops or bottoms.
Best suited for:
Index futures (ES, NQ)
ETFs (SPY, QQQ)
Strongly trending stocks
Intraday or swing trading
🔹 Core Concepts
1️⃣ Dynamic Trend Line (Adaptive EMA)
Instead of using a fixed EMA length, this script dynamically adjusts:
EMA length based on normalized price movement
EMA responsiveness using an accelerator factor
Result:
Fast reaction during strong trends
Smooth behavior during choppy markets
Fewer false flips compared to traditional EMAs
This trend line acts as the primary regime filter.
2️⃣ Trend Speed & Wave Analysis
The indicator tracks trend speed, which represents cumulative directional pressure over time.
It also records:
Bullish wave sizes
Bearish wave sizes
Average vs maximum wave strength
Bull/Bear dominance
These statistics are displayed in an optional table to help assess:
Market bias
Momentum asymmetry
Whether the current move is weak, average, or exceptional
🔹 Entry Signal Logic (One Signal per Trend Shift)
Signals are not spammy.
Only one entry signal is allowed per crossover.
Long Entry Conditions
A long signal is generated when:
Price crosses above the dynamic trend line
A bullish candle forms
The candle body is at least X% of ATR (filters weak/doji candles)
The entire candle body is above the trend line
(Optional) Trend speed is positive
Short Entry Conditions
A short signal is generated when:
Price crosses below the dynamic trend line
A bearish candle forms
The candle body is at least X% of ATR
The entire candle body is below the trend line
(Optional) Trend speed is negative
📌 Once a signal fires, no additional signals will appear until a new crossover occurs.
🔹 What this indicator is NOT
❌ Not a mean-reversion system
❌ Not a prediction tool
❌ Not meant for sideways markets
This tool assumes structure → confirmation → continuation.
🔹 How to Trade It (Suggested Use)
Use higher timeframes (5m–30m) for cleaner signals
Trade in the direction of higher-timeframe bias
Combine with:
VWAP
Key levels (PDH / PDL / PMH / PML)
Market session context
🔹 Customization
Adjust Maximum Length for smoother vs faster trends
Adjust Accelerator Multiplier for sensitivity
Enable/disable speed filter for stricter momentum confirmation
ATR candle filter removes weak signals automatically
⚠️ Disclaimer
This indicator provides technical signals only and does not include trade management, stops, or targets.
Always apply proper risk management.
Volume-Confirmed Trend Thrust IndicatorOVERVIEW
This indicator combines trend strength, momentum & volume analysis to generate high-conviction buy and sell signals. It is based on the "Volume Confirmation for a Trend System" (VCTS) by Buff Pelz Dormeier (TASC August 2024), which I have taken the liberty of 'buffing up' (heh!) by swapping out original VPCI component with the ATR-aware Net Accumulation Flow (NAF) indicator derived from Markos Katsanos' VPN indicator (TASC April 2021).
The result is a system that only triggers buy signals when three independent conditions align:
• A strong trend exists (ADX)
• Momentum is bullish (TTI)
• Institutional accumulation is detected (NAF)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
COMPONENTS
█ ADX (Average Directional Index)
Measures trend strength regardless of direction. A reading above 30 indicates a strong trend worth trading. This filter prevents signals during choppy, sideways markets.
█ TTI (Trend Thrust Indicator)
Dormeier's volume-weighted MACD variant that provides momentum direction. Unlike standard MACD, TTI uses Volume-Weighted Moving Averages (VWMA) and applies a volume multiplier that amplifies signals when volume confirms price movement. When TTI crosses above its signal line, momentum is considered bullish.
█ NAF (Net Accumulation Flow)
The key enhancement - in my humble opinion - over the original VCTS. NAF classifies each bar's volume as:
• Accumulation: Price moved UP more than 10% of ATR
• Distribution: Price moved DOWN more than 10% of ATR
• Neutral: Price movement too small to be meaningful (filtered as noise)
NAF then calculates the net flow (Accumulation Volume - Distribution Volume) over a 30-bar lookback period, normalized and smoothed. This provides a cleaner read on whether institutions are accumulating or distributing.
Perceived benefits of NAF:
• ATR-based noise filtering eliminates false readings from small price movements
• Rolling 30-bar accumulation captures sustained institutional activity
• Empirically calibrated thresholds based on 717 stocks / 360,000 observations
• 3-period EMA smoothing reduces whipsaws
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SIGNAL LOGIC
🟢 BUY SIGNAL
All three conditions must be true simultaneously:
1. ADX > 30 (strong trend)
2. TTI > Signal Line (bullish momentum)
3. NAF > 16 (accumulation)
Signals fire on the first bar where all conditions align, preventing repeated signals during sustained bullish periods.
🔴 SELL SIGNAL
Exit when volume flow turns negative:
• NAF < -9 (below neutral zone, indicating distribution).
This indicator retains Dormeier's asymmetric approach (strict entry, quick exit) to help protect profits when institutional support fades.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
NAF THRESHOLD REFERENCE
Based on proprietary empirical calibration (717 stocks, 360K observations):
>= +35 │ Strong Accumulation (P95, ~5% of days)
>= +28 │ Solid Accumulation (P90, ~10% of days)
>= +16 │ Moderate Accumulation (P75) ← Default Buy Threshold
-9 to +16 │ Neutral Zone (~50% of days)
<= -9 │ Below Neutral ← Default Sell Threshold
<= -22 │ Solid Distribution (P10)
<= -29 │ Strong Distribution (P5)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SETTINGS
Setting for all 3 variables (ADX, TTI & NAF), alerts and visual conditional formatting are configurable.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
USAGE TIPS
1. Works best on daily timeframe for swing trading
2. More effective on liquid stocks where volume data is meaningful
3. Consider using NAF threshold of 28 (P90) for higher conviction entries
5. Combine with price action analysis (support/resistance, RS, chart patterns)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MAXIMUM RESPECT:
• VCTS (ADX + TTI + VPCI): Buff Pelz Dormeier, "Volume Confirmation For A Trend System", Technical Analysis of Stocks & Commodities (TASC), August 2024. Pine Script adaptation: PineCoders.
• VPN / NAF: Markos Katsanos, Technical Analysis of Stocks & Commodities (TASC), April 2021. Pine Script adaptation: LevelUp/John Muchow.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DISCLAIMER
This indicator is for educational and informational purposes only. It does not constitute financial advice. Past performance is not indicative of future results. Always conduct your own analysis and consider your risk tolerance before making trading decisions. Use appropriate position sizing and stop-loss orders to manage risk.
Jake's Candle by Candle UpgradedJake's Candle by Candle Upgraded
The "Story of the Market" Automated
This is not just another signal indicator. Jake's Candle by Candle Upgraded is a complete institutional trading framework designed for high-precision scalping on the 1-minute and 5-minute timeframes.
Built strictly on the principles of Al Brooks Price Action and Smart Money Concepts (SMC), this tool automates the rigorous "Candle-by-Candle" analysis used by professional floor traders. It moves beyond simple pattern recognition to read the "Story" of the market—Context, Setup, and Pressure—before ever allowing a trade.
The Philosophy: Why This Tool Was Built
Most retail traders fail for two reasons:
Getting Trapped: They enter on the first sign of a reversal (H1/L1), which is often an institutional trap.
Trading Chop: They bleed capital during low-volume, sideways markets.
This tool solves both problems with an Algorithmic Discipline Engine. It does not guess. It waits for the specific "Second Leg" criteria used by institutions and physically disables itself during dangerous market conditions.
Key Features
1. The Context Dashboard (HUD)
A professional Heads-Up Display in the top-right corner keeps you focused on the macro picture while you scalp.
FLOW: Monitors the 20-period Institutional EMA. (Green = Bull Flow, Red = Bear Flow). You are prevented from trading against the dominant trend.
STATE: A built-in "Volatility Compressor." If it says "⚠️ CHOP / RANGE", the algorithm is disabled. It protects you from overtrading during lunch hours or low-volume zones.
SETUP: Live tracking of the Al Brooks leg count. It tells you exactly when the algorithm is "Waiting for Pullback" or "Searching for Entry."
2. Smart "Trap Avoidance" Logic (H2/L2)
This tool uses the "Gold Standard" of scalping setups: The High 2 (H2) and Low 2 (L2).
It ignores the first breakout attempt (Leg 1), acknowledging it as a potential trap.
It waits for the pullback and only signals on the Second Leg, statistically increasing the probability of a successful trend resumption.
3. Volatility-Adaptive Risk Management
Stop calculating pips in your head. The moment a signal is valid, the tool draws your business plan on the chart:
Stop Loss (Red Line): Automatically placed behind the "Signal Bar" (the candle that created the setup) based on strict price action rules.
Take Profit (Green Line): Automatically projected at a 1.5 Risk-to-Reward Ratio.
Smart Adaptation: The targets expand and contract based on real-time market volatility. If the market is quiet, targets are tighter. If explosive, targets are wider.
4. The "Snap Entry" Signal
The BUY and SELL badges are not lagging. They are programmed with "Stop Entry" logic—appearing the exact moment price breaks the structure of the Signal Bar, ensuring you enter on momentum, not hope.
How to Trade Strategy
Check the HUD: Ensure FLOW matches your direction and STATE says "✅ VOLATILE".
Wait for the Badge: Do not front-run the tool. Wait for the BUY or SELL badge to print.
Set Your Orders: Once the signal candle closes:
Place your Stop Loss at the Red Line.
Place your Take Profit at the Green Line.
Walk Away: The trade is now a probability event. Let the math play out.
Technical Specifications
Engine: Pine Script v6 (Strict Compliance).
Best Timeframes: 1m, 5m.
Best Assets: Indices (NQ, ES), Gold (XAUUSD), and high-volume Crypto (BTC, ETH).
Accumulative Swing Cloud [MarkitTick]💡This indicator presents a modernized hybrid approach to J. Welles Wilder’s classical Accumulative Swing Index (ASI). While the traditional ASI is often viewed as a simple line oscillator used to confirm price breakouts, the Accumulative Swing Cloud reconstructs this concept into a dynamic trend-following system. By smoothing the raw ASI data into multiple moving average layers, this script creates a "Cloud" structure that visualizes the strength, direction, and momentum of the swing index, effectively treating the ASI value itself as a tradeable price action entity.
● Originality and Utility
The standard Accumulative Swing Index is a powerful tool for seeing through the "noise" of open, high, low, and close prices to find the real trend. However, looking at a raw ASI line can be jagged and difficult to interpret for sustained trends. This script innovates by applying "Cloud Dynamics" to the ASI. It calculates three distinct moving averages (Fast, Mid, and Slow) of the ASI value itself. The area between the Fast and Slow averages is filled with a dynamic gradient color. This allows traders to not only see the trend direction (Bullish or Bearish) but also gauge the volatility and strength of the move based on the expansion or contraction of the cloud's width. Additionally, this version introduces an optional Volume Integration feature, allowing the Swing Index calculations to be weighted by relative volume, giving more significance to moves backed by high market participation.
● Methodology and Calculations
The core of this indicator relies on the Swing Index calculation. It compares the current bar's Open, High, Low, and Close against the previous bar's values to derive a variable "R" (a measure of the market's range).
The script determines the largest price movement (K) among the High-Close, Low-Close, and High-Low ranges.
It calculates the "R" value based on the relationship between the daily range and the gap between the prior close and current open.
A Swing Index (SI) value is derived using the Limit Move value (T), the defined Multiplier, and the calculated R and K values.
This SI is accumulated into a running total (ASI State).
If Volume Integration is enabled, the SI is multiplied by a Volume Factor (Current Volume divided by Average Volume), capped at 3.0 to prevent outlier distortion.
● Visual Guide
The indicator plots several key visual elements on the chart:
Cloud Fast (Green Line): Represents the shorter-term moving average of the Accumulative Swing Index.
Cloud Slow (Red Line): Represents the longer-term moving average.
Cloud Fill (Gradient Area): The space between the Fast and Slow lines.
Green Gradient: Indicates the Fast MA is above the Slow MA (Bullish Trend).
Red Gradient: Indicates the Fast MA is below the Slow MA (Bearish Trend).
Gradient Intensity: The opacity of the color scales dynamically based on the width of the cloud relative to its recent historical maximum. A wider cloud (stronger trend/higher volatility) appears more solid, while a narrow cloud appears more transparent.
ASI Line (Color-Coded Line): The thick line represents the current raw Accumulative Swing Index value. It changes color (Green/Red) based on its position relative to the Signal Line.
Signal Line (Gray Line): A Simple Moving Average of the ASI Line, acting as a trigger for immediate reversals.
Bar Coloring: The main price candles are colored to match the current state of the Cloud (Green for Bullish Cloud, Red for Bearish Cloud).
● How to Use
Trend Identification: Use the Cloud color to determine the primary trend. A Green Cloud suggests an uptrending market structure, while a Red Cloud suggests a downtrend.
Entry Signals: Traders often look for the "ASI Line" to cross the "Signal Line" in the direction of the Cloud. For example, if the Cloud is Green, a crossover of the ASI Line above the Signal Line is a bullish confirmation.
Cloud Crossovers: A crossover of the Fast and Slow Cloud lines represents a major structural shift in the Accumulative Swing Index trend.
Volatility Filter: Pay attention to the gradient intensity. A very narrow (transparent) cloud indicates low momentum or consolidation, while a widening (solid) cloud indicates expanding momentum.
● Inputs and Settings
ASI Core Engine: Configure the Daily Limit (T) and Multiplier to tune the sensitivity of the Swing Index calculation.
Volume Integration: Toggle "Weight ASI by Volume" to factor in volume spikes. Adjust "Volume Avg Length" to define the baseline volume.
Cloud Dynamics: Choose the Moving Average type (EMA, SMA, RMA, WMA) and set the Fast, Mid, and Slow lengths to customize the cloud's reactivity.
Visual Enhancements: Toggle "Color Candles by Cloud Width" to apply the gradient coloring directly to the price bars.
● Disclaimer
All provided scripts and indicators are strictly for educational exploration and must not be interpreted as financial advice or a recommendation to execute trades. I expressly disclaim all liability for any financial losses or damages that may result, directly or indirectly, from the reliance on or application of these tools. Market participation carries inherent risk where past performance never guarantees future returns, leaving all investment decisions and due diligence solely at your own discretion.
Apex ICT: Proximity & Delivery FlowSimple Description: This indicator is a specialized ICT execution tool that automates the identification of Order Blocks, Fair Value Gaps, and Changes in State of Delivery (CISD). Unlike standard indicators that clutter the screen, this script uses a Proximity Logic Engine to ensure you only see tradeable levels. It automatically purges old data (50-candle CISD limit) and deletes mitigated zones the moment they are breached, leaving you with a clean, institutional-grade chart.






















