Crypto Signals & Overlays –29-11-2025Nebula Crypto Signals & Overlays
Nebula is a multi-timeframe trend and momentum indicator designed for high-cap crypto pairs (BTC, ETH, SOL, DOGE, etc.).
• Uses 21/50/200 EMAs + higher-timeframe EMA for trend filtering
• RSI and Bollinger Bands for momentum and squeeze detection
• Generates BUY/SELL labels on trend-side pullbacks
• ATR line as a dynamic stop/target guide, plus pivot-based support/resistance zones
• Background colors: green = bullish regime, red = bearish regime, yellow = low-volatility squeeze
Not financial advice. Always backtest and use proper risk management before trading live.
チャートパターン
4H Bias: Previous Candle FocusStructural Bias Confirmation Checklist
Has price broken a significant swing high/low on the 4HR?
Has price held beyond this level for at least one complete 4HR
candle?
Does the candle anatomy (OHLC vs OLHC pattern) confirm
directional intent?
Are subsequent 4HR candles showing continued momentum in
the bias direction?
Has a liquidity sweep occurred into the previous structure before
the continuation?
Smart Adaptive Double Patterns [The_lurker]Smart Adaptive Double Patterns
This is an advanced technical indicator that combines two of the strongest and most renowned classical price reversal patterns:
✅ Double Bottom Pattern — a bullish reversal pattern that forms after a downtrend
✅ Double Top Pattern — a bearish reversal pattern that forms after an uptrend
The indicator does not merely detect patterns — it provides a fully integrated, intelligent system that includes:
✅ Precise quality scoring for each pattern using 5 technical criteria
✅ Automatic price target calculation at three levels (Conservative, Balanced, Aggressive)
✅ Multi-layer dynamic filtering to avoid false signals
✅ Live pattern tracking from formation to target achievement or failure
✅ Comprehensive alert system covering all possible trading scenarios
🎯 Why Is This Indicator Unique?
1️⃣ High Detection Accuracy
Unlike traditional indicators that rely on simple rules, this one applies 5 strict structural conditions to confirm pattern validity:
A clear trend must precede the pattern
High symmetry between the two bottoms or two tops
No break of critical price levels during formation
Logical spacing between key points
Technical confirmation from ADX, ATR, and Volume
2️⃣ Advanced Quality Scoring System
Each pattern is scored out of 100 based on 5 weighted criteria:
Symmetry (30%): How closely the two bottoms or tops match
Trend Strength (20%): Strength of the prior trend
Volume Behavior (20%): Trading activity at critical points
Pattern Depth (15%): Vertical distance between neckline and bottom/top
Structural Integrity (15%): Full compliance with structural rules
3️⃣ Smart Target Management
Separate targets for bullish (Double Bottom) and bearish (Double Top) patterns
Separate projections for success and failure cases
Multiple options: Conservative (0.618) / Balanced (1.0) / Aggressive (1.618)
Live tracking with dynamic moving lines
4️⃣ Professional Failure Handling
Failed patterns are not ignored — they are turned into counter-trend opportunities:
Failed Double Bottom → triggers a bearish signal with downside targets
Failed Double Top → triggers a bullish signal with upside targets
Automatic color change for clear visual distinction
5️⃣ Full Customization Flexibility
Enable/disable each pattern independently
22+ adjustable settings
Unique colors for each pattern and quality level
Full bilingual support (Arabic / English)
📐 Pattern Details
🟦 Double Bottom Pattern
Sequence of points:
🔹 Point 1: Peak marking the start of a strong downtrend
🔹 Point 2 (Bottom 1): First low — first key bounce
🔹 Point 3: Intermediate high — forms the neckline (resistance)
🔹 Point 4 (Bottom 2): Second low — should closely match Bottom 1
🔹 Point 5: Breakout point — pattern confirmation
Mandatory Conditions:
✅ Clear downtrend before Point 2
✅ Bottoms 2 & 4 nearly identical (≤1.5% difference by default)
✅ Point 3 higher than both bottoms
✅ Neither bottom is broken during formation
✅ Sufficient time between points (≥10 candles by default)
✅ Success Scenario
→ Price breaks above the neckline (Point 3)
→ Point 5 is plotted at breakout candle
→ Dashed vertical line drawn from Point 5 to target
→ Horizontal dashed line tracks price toward target
→ Dashboard shows: Pattern Type | Quality | Rating | Target | Status
→ When target hits: line turns green + ✅ appears
🎯 Target Calculation
Pattern Height = Point 3 − Point 4
• Conservative: Point 3 + (Height × 0.618 × Quality Factor)
• Balanced: Point 3 + (Height × 1.0 × Quality Factor)
• Aggressive: Point 3 + (Height × 1.618 × Quality Factor)
❌ Failure Scenario
→ Price breaks below both Bottom 1 or Bottom 2 before neckline breakout
Visual Changes:
All lines turn red
Red ✖ appears at breakdown candle
Neckline stops expanding
Red dashed vertical line from breakdown point to bearish target
Red horizontal tracking line follows price
Dashboard updates to:
⚠ Failed Bottom – Bearish
→ Shows new bearish target
→ Indicates target mode for failure case
→ Status: Bearish Reversal
→ Fully red display
🟥 Double Top Pattern
Sequence of points:
🔹 Point 1: Trough marking the start of a strong uptrend
🔹 Point 2 (Top 1): First peak — first key resistance
🔹 Point 3: Intermediate low — forms the neckline (support)
🔹 Point 4 (Top 2): Second peak — should closely match Top 1
🔹 Point 5: Breakdown point — pattern confirmation
Mandatory Conditions:
✅ Clear uptrend before Point 2
✅ Tops 2 & 4 nearly identical (≤1.5% difference by default)
✅ Point 3 lower than both tops
✅ Neither top is breached during formation
✅ Sufficient time between points (≥10 candles by default)
✅ Success Scenario
→ Price breaks below the neckline (Point 3)
→ Point 5 is plotted at breakdown candle
→ Dashed vertical line drawn to target
→ Horizontal tracking line moves with price
→ Dashboard updates accordingly
→ Green line + ✅ on hit
🎯 Target Calculation
Pattern Height = Point 4 − Point 3
• Conservative: Point 3 − (Height × 0.618 × Quality Factor)
• Balanced: Point 3 − (Height × 1.0 × Quality Factor)
• Aggressive: Point 3 − (Height × 1.618 × Quality Factor)
❌ Failure Scenario
→ Price breaks above either Top 1 or Top 2 before neckline breakdown
Visual Changes:
All lines turn cyan (light blue)
Cyan ✖ appears at breakout candle
Neckline stops expanding
Cyan dashed vertical line to bullish target
Cyan horizontal tracking line follows price
Dashboard updates to:
⚠ Failed Top – Bullish
→ Shows new bullish target
→ Indicates target mode for failure case
→ Status: Bullish Reversal
→ Fully cyan display
🎯 Upside Target (after Double Top failure)
Max Top = max(Point 2, Point 4)
Height = Max Top − Point 3
• Conservative: Max Top + (Height × 0.618)
• Balanced: Max Top + (Height × 1.0)
• Aggressive: Max Top + (Height × 1.618)
📊 Quality Scoring System (0–100)
1️⃣ Symmetry (30%)
Measures price match between the two bottoms or two tops.
High score (25–30): Near-perfect symmetry → very strong pattern
Medium (15–24): Good match → reliable signal
Low (5–14): Weak symmetry → use caution
Zero: No symmetry → invalid pattern
2️⃣ Trend Strength (20%)
Uses ADX and DI indicators.
20 pts: Strong trend confirmed (e.g., ADX ≥ 20 + correct DI alignment)
10 pts: Trend filter disabled
6 pts: Weak or sideways trend
3️⃣ Volume Behavior (20%)
Declining volume on second touch is a positive sign (shows exhaustion).
15–20 pts: Clear volume drop → strong signal
10 pts: Neutral volume
6 pts: Rising volume → higher risk of continuation
4️⃣ Pattern Depth (15%)
Deeper patterns = stronger reversals.
12–15 pts: Deep → high reversal power
8–11 pts: Medium → acceptable
<8 pts: Shallow → weak signal
5️⃣ Structural Integrity (15%)
Checks logical structure (e.g., Point 1 > Point 3 in Double Bottom).
12–15 pts: Ideal structure
8–11 pts: Minor flaws
<8 pts: Poor setup
📈 Final Quality Rating & Colors
• 85–100 → ⭐ Excellent
→ Double Bottom: Cyan #00BCD4
→ Double Top: Light Red #FF5252
• 75–84 → ✨ Very Good
• 65–74 → ✓ Good
• 60–64 → ○ Acceptable
→ All use Amber #FFC107
• <60 → ❌ Rejected (not shown)
→ Gray #9E9E9E
🔧 Dynamic Filters
1️⃣ ATR Filter (Volatility Check)
Rejects patterns in abnormally high volatility periods.
→ If current ATR > 1.8 × 50-period ATR MA → pattern rejected
✅ Recommended for crypto, small caps
❌ Optional for calm markets (gold, bonds)
2️⃣ ADX Filter (Trend Confirmation)
Ensures a real trend exists before the pattern.
→ If ADX < 14 (70% of default 20) → pattern rejected
✅ Strongly recommended (keep ON)
3️⃣ Volume Filter (Behavior Validation)
Not used to reject patterns, but strongly affects quality score.
✅ Best for liquid markets (Forex majors, large stocks)
❌ Optional for illiquid assets
⚙️ Key Settings Explained
🔘 General Settings
• Language: Arabic / English
• Show Previous Patterns: Yes / No
→ “No” keeps chart clean; “Yes” for historical review
🔘 Pattern Selection
• Enable Double Bottom: ✅ / ❌
• Enable Double Top: ✅ / ❌
→ Use combinations:
✅✅ → Full reversal scanning
✅❌ → Long setups only
❌✅ → Short setups only
❌❌ → Indicator OFF
🔘 Detection Parameters
• Pivots Left (1–20): Higher = more reliable, fewer patterns
• Pivots Right (1–20): Lower = faster signals
• Min Width (5–100): Min candles between Bottom/Top 1 & 2
• Tolerance % (0.1%–5%): Max allowed price difference
• Min Arm (5–50): Min candles between pivot & neckline
• Min Trend (5–50): Min candles in prior trend
• Trend Lookback (50–500): How far back to detect trend start
• Extension Multiplier (1.0–5.0): How long to wait for breakout
🔘 Quality Settings
• Min Quality Score (0–100):
→ Conservative: 75–85
→ Balanced: 60–70
→ Flexible: 50–55
• Custom Weights: Adjust based on market (e.g., increase Volume weight in Forex)
🔘 Target Settings
• Bottom Bullish Target: Conservative / Balanced / Aggressive
• Bottom Bearish Target: (used on failure)
• Top Bearish Target: Conservative / Balanced / Aggressive
• Top Bullish Target: (used on failure)
🔘 Visual Settings
• Label Size: Small / Normal / Large / Huge
• Pattern Colors: Fully customizable
• Table: Show/Hide + Size (Small/Normal/Large) + Position (Top-Right / Top-Left / Bottom-Right / Bottom-Left)
• Fill Transparency: 70%–95% (default: 85%)
🔔 Alert System (8 Independent Alerts)
📌 Double Bottom Alerts
Bullish Breakout → “Double Bottom Breakout – Bullish!”
Bullish Target Hit → “Bullish Target Achieved!”
Failure (Bearish) → “Double Bottom Failed – Bearish!”
Bearish Target Hit → “Bearish Target Achieved (Failure)!”
📌 Double Top Alerts
Bearish Breakdown → “Double Top Breakdown – Bearish!”
Bearish Target Hit → “Bearish Target Achieved!”
Failure (Bullish) → “Double Top Failed – Bullish!”
Bullish Target Hit → “Bullish Target Achieved (Failure)!”
Each alert can be enabled/disabled independently and supports pop-ups, emails, or webhooks.
⚠️ Disclaimer:
This indicator is for educational and analytical purposes only. It does not constitute financial, investment, or trading advice. Use it in conjunction with your own strategy and risk management. Neither TradingView nor the developer is liable for any financial decisions or losses.
RSI مبسط//@version=5
indicator("RSI مبسط", overlay=false)
// حساب RSI
rsiValue = ta.rsi(close, 14)
// رسم خط RSI
plot(rsiValue)
// رسم المستويات
plot(95, "Level 95")
plot(78.6, "Level 78.6")
plot(61.8, "Level 61.8")
plot(38.2, "Level 38.2")
plot(21.4, "Level 21.4")
plot(5, "Level 5")
MYPYBiTE.com – Trend MAsI wrote this simple script to track momentum and associate my personal webpage with the development projects I do as a hobby. Technical information is a powerful way to understand trends and I included the various variables I use. Please as always considering that the trend is not the only component to investing and trading and fundamental information provides a compliment to the diligence employed by any serious trader or investor.
SMB Master Hub Pro1 Bull Flag Strong uptrend, small consolidation, breakout above flag high
2 Range Breakout Consolidation range, breakout with volume
3 VWAP Reclaim Price crosses above VWAP after being below
4 EMA9 Bounce Price bounces off EMA9 in uptrend
5 Pre-market Gap Stock gaps up or down with momentum, looks for continuation
Smart MACD Divergence ScannerOriginal Base Indicator: "CM_MacD_Ult_MTF" by ChrisMoody
This indicator builds upon ChrisMoody's excellent multi-timeframe MACD foundation and transforms it into a professional divergence scanner with advanced quality assessment and filtering capabilities. The original MACD visualization and MTF functionality have been preserved while adding completely new divergence detection, scoring, and filtering systems.
🎯 What Makes This Indicator Unique:
Smart MACD Divergence Scanner is a professional tool for detecting MACD-based divergences with an advanced filtering system and signal quality assessment. Unlike standard divergence indicators, this version includes innovative features:
Adaptive Quality Scoring System — each signal receives a score from 0 to 100 based on multiple factors
Volatility Filter — automatic signal suppression during low market volatility periods
Multi-Timeframe Confirmation — divergence verification on higher timeframe for increased reliability
Divergence Strength Analysis — calculation of percentage difference between price and indicator movement
Information Dashboard — detailed real-time signal statistics
Cooldown System — prevention of multiple consecutive signals
💡 How It Works:
The indicator uses the classic divergence concept — the divergence between price movement and the MACD oscillator. However, instead of simple pivot detection, the algorithm:
Scans the market for local extremes (pivots) on price and MACD histogram
Searches for divergences — when price updates low/high while MACD shows opposite movement
Assesses quality — analyzes divergence strength, volatility, higher timeframe confirmation
Filters noise — eliminates weak signals through threshold system and cooldown
Generates signal — only when all quality criteria are met
🔧 Key Parameters:
MACD Settings: Fast Length (12), Slow Length (26), Signal Length (9)
Divergence Detection: Pivot Lookback (5), Max Lookback Range (60), Min Divergence Strength (15%)
Quality Filters: Min Quality Score (60), Volatility Filter, MTF Confirmation, Signal Cooldown (5)
📊 How to Use:
Add indicator to chart — it will automatically start scanning
Configure filters — start with default settings, then adapt to your trading style
Watch for signals: 🟢 Green "BUY" label = bullish divergence, 🔴 Red "SELL" label = bearish divergence
Check quality score on labels (Q: XX)
Use information panel to monitor statistics and current market conditions
⚙️ Settings Guide:
For swing trading (4H-Daily): Increase Pivot Lookback to 7-10, set Min Quality Score to 70+
For day trading (15m-1H): Keep default settings, enable all filters
For scalping (1m-5m): Decrease Min Quality Score to 50, disable MTF Confirmation
For volatile markets (crypto): Increase Min Divergence Strength to 20-25%, enable Volatility Filter
⚠️ Important Notes:
Divergences are probabilistic signals, not guaranteed reversals
Use additional confirmation (support/resistance levels, volume, price action)
Adjust parameters for specific asset and timeframe
Signals appear with Pivot Lookback bars delay (retrospective confirmation)
On volatile markets, increase Min Quality Score to reduce false signals
Monthly Open LineIt's a simple tool I made with the help of grok and SpacemanBTC Key level indicator which marks the monthly open with a line.
It will help you get a visual feel for how the price progresses over the month/s and can help you backtest trends easily.
Student Wyckoff Target Shooter
**Target Shooter — Equal Move Target Tool (Larry Williams idea)**
**1. What this indicator does**
Target Shooter is a tool that measures the last meaningful price swing and projects an **equal move target** in the direction of the breakout.
The logic is simple:
* The market makes a move from point A to point B (a swing high to a swing low, or vice versa).
* Then price breaks out above or below this swing range.
* Target Shooter takes the size of that swing and **adds it in the direction of the breakout**, showing a logical **price target zone** where the move may:
* slow down,
* react,
* or potentially reverse.
This is a practical implementation of the “Equal Moves” idea often referenced by Larry Williams.
---
**2. Core idea (example)**
Example from the classic explanation:
* Price drops from **80 down to 20** → the move is **60 points**.
* The swing range is now: **High = 80, Low = 20**.
* Later, price **breaks above 80**.
Target Shooter assumes:
> “If the market could move 60 points in one direction, after a breakout it may travel another 60 points in the opposite direction.”
So the upside target becomes:
* Move size: 80 − 20 = 60
* Breakout above 80
* **Target = 80 + 60 = 140**
The indicator finds such swings automatically and draws:
* **UT (Upper Target)** on upside breakouts
* **DT (Down Target)** on downside breakouts
---
**3. What you see on the chart**
1. **Target lines**
* When price breaks **above** a previous swing range, the indicator plots a horizontal **UT (Upper Target)** line — the projected equal move target.
* When price breaks **below** the previous swing range, it plots a **DT (Down Target)** line — the downside target.
* Each line is drawn from the breakout bar and extended to the right for a user-defined number of bars.
2. **Price labels**
* A small label “UT” or “DT” is shown at the end of the line with the exact target price.
* This makes it easy to see where the projected target is without checking the scale.
3. **Optional swing range (debug view)**
* There is an option to display the **swing range** that the target is based on (similar to a Donchian channel on previous bars).
* This shows the upper (swing high) and lower (swing low) boundaries the indicator used to define the last move.
---
**4. Key inputs (plain language)**
* **Swing window length (bars)**
How many bars back the indicator looks to find the last meaningful swing (highest high and lowest low).
This is like the length of a Donchian channel used to define the previous range.
Smaller values → more frequent, shorter targets.
Larger values → bigger swings and more distant targets.
* **Minimum move size (in ticks)**
This is a noise filter.
If the distance between the swing high and swing low is smaller than this threshold, no targets are drawn.
The indicator will only react to moves that are big enough to matter for your trading.
* **Breakout type: Close vs High/Low**
* **Breakout by Close**:
The target appears only when the **bar closes** above/below the swing range.
More conservative and fewer false signals.
* **Breakout by High/Low**:
The target appears as soon as the **high** or **low** of the bar breaks the swing range.
Faster and more aggressive, but more sensitive to noise.
* **Target line length (bars)**
How far to the right the UT/DT lines should be extended.
Shorter length → local target zones.
Longer length → important levels visible far into the future.
* **Appearance settings**
* Separate color, width and style for **UT** and **DT** lines.
* Option to show or hide labels with price and “UT/DT” text.
---
**5. How to use Target Shooter in trading**
> Important: this is **not** an entry signal indicator.
> Target Shooter is a **targeting and context tool**, not a standalone system.
Typical uses:
1. **Planning take-profit zones**
* You already have an entry signal from your own strategy (Wyckoff, Larry Williams patterns, levels, volume, whatever you use).
* Target Shooter shows a **logical equal move target** where the current wave can reasonably “shoot”.
* You can:
* place your main take-profit around the target,
* scale out part of the position,
* tighten stops when price approaches the target.
2. **Finding potential reaction / reversal areas**
* Equal move targets often act as **zones of interest**.
* If price reaches a UT/DT level and then shows weakness/absorption/volume spikes or reversal candles, this might be a good place to take profits or look for counter-trend opportunities (for experienced traders).
3. **Assessing trend strength**
* If price **easily exceeds** the equal move target and keeps going without any reaction, it suggests a very strong trend.
* If price **fails to reach** the target and reverses early, the move is weaker than expected.
---
**6. Timeframes**
Target Shooter can be used on:
* **Intraday** (M5, M15, M30, H1) — for shorter-term targets within the day,
* **Higher timeframes** (H4, D1 and above) — for swing and position trades.
General rule:
The **higher the timeframe and the larger the swing**, the **more important** the target level tends to be.
---
**7. Notes and limitations**
* The indicator does **not** predict the future.
It simply projects a geometric equal move from the last swing.
* It should be combined with your own trading framework:
* support/resistance,
* Wyckoff / VSA,
* trend tools,
* volume/flow, etc.
* Always keep proper risk management.
A target is a **scenario**, not a guarantee.
.
Breakout Pullback Continuation//@version=5
indicator("Breakout Pullback Continuation", overlay=true)
// === Parameters ===
lookback = 20 // Look for breakouts above this many bars
volumeFactor = 1.3 // How much volume needs to exceed average
pullbackDepth = 3 // Max bars to wait for pullback + green
// === Track State ===
var float breakoutLevel = na
var int breakoutBar = na
volumeSMA = ta.sma(volume, 20)
// === Detect Breakout ===
recentHigh = ta.highest(high, lookback)
breakout = close > recentHigh
if breakout
breakoutLevel := close
breakoutBar := bar_index
// === Check for Pullback After Breakout
pullbackOccurred = na(breakoutLevel) ? false : close < breakoutLevel and bar_index > breakoutBar
// === Check for Confirmation Candle
greenCandle = close > open
decentRange = (high - low) > (close * 0.003)
volumeSpike = volume > volumeSMA * volumeFactor
confirmation = pullbackOccurred and greenCandle and decentRange and volumeSpike and (bar_index - breakoutBar <= pullbackDepth)
// === Signal Plot ===
plotshape(confirmation, title="Pullback Continuation", location=location.belowbar, color=color.lime, style=shape.triangleup)
alertcondition(confirmation, title="Breakout Pullback Alert", message="🚀 {{ticker}} breakout-pullback-confirmation at {{close}}")
Momentum Breakout Signal//@version=5
indicator("Momentum Breakout Signal", overlay=true)
// === Breakout Logic ===
length = 20 // Lookback for recent high
recentHigh = ta.highest(high, length)
// === Breakout Condition: Close > prior high
priceBreakout = close > recentHigh
// === Volume Spike Confirmation ===
volumeSMA = ta.sma(volume, 20)
volumeSpike = volume > volumeSMA * 1.3 // Customize sensitivity
// === Optional: Filter for strong candles only
isGreen = close > open
decentRange = (high - low) > (close * 0.003)
// === Final Signal Logic ===
signal = priceBreakout and volumeSpike and isGreen and decentRange
plotshape(signal, title="Breakout Signal", location=location.abovebar, color=color.orange, style=shape.triangleup, size=size.small)
alertcondition(signal, title="Momentum Breakout Alert", message="🚀 {{ticker}} breakout confirmed at {{close}}")
Morning Momentum//@version=5
indicator("Morning Momentum", overlay=true) // This is your one required declaration
// --- Define Time Window ---
startTime = timestamp("2025-11-28T09:30:00")
endTime = timestamp("2025-11-28T10:00:00")
inWindow = time >= startTime and time <= endTime
// --- Define Price Change ---
priceChange = (close - open) / open * 100
// --- Define Volume Spike ---
volumeSMA = ta.sma(volume, 20)
volumeSpike = volume > volumeSMA
// --- Trigger Condition ---
signal = inWindow and priceChange > 2 and volumeSpike
// --- Plot Signal ---
plotshape(signal, title="Momentum Signal", location=location.abovebar, color=color.green, style=shape.triangleup)
ICT/SMC Holy GrailThe Holy Grail, with its backtesting feature to check win rates, is all you need to do when placing orders!
Adaptive Trend Direction Degree (Lax)Trend direction
Trend strength
Momentum
Potential reversal points
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
Stock whisperer vol 2Below is your updated, copy-paste ready Pine v5 script with 5 bullish targets and 5 bearish targets.
No broken line wraps. No reserved words. No Pine meltdowns.
MA Crossover Scalper [4H]//@version=5
indicator("MA Crossover Scalper ", overlay=false)
// Market Cap Filter (Volume as proxy)
volumeValid = volume >= 500000 and volume <= 4000000
// MA Crossover System
ma9 = ta.sma(close, 9)
ma21 = ta.sma(close, 21)
bullishCross = ta.crossover(ma9, ma21) and close > ma21
bearishCross = ta.crossunder(ma9, ma21) and close < ma21
// Volume Confirmation
volumeSpike = volume > ta.sma(volume, 20) * 1.3
// Final Signals
bullSignal = bullishCross and volumeSpike and volumeValid
bearSignal = bearishCross and volumeSpike and volumeValid
// Output for Screener
plot(bullSignal ? 1 : 0, "Bull MA Cross", color=color.green)
plot(bearSignal ? 1 : 0, "Bear MA Cross", color=color.red)
Micha Stokes Buyers Breakout Alert v2I added comments starts with EE , where code modifications are needed
DeepClean Linear indicator 1. Indicator Name
DeepClean Linear indicator
2. One-Line Introduction
A trend-recognition indicator that overlays a “transparent wave” on price, removing noise and revealing directional bias and trend intensity in a highly intuitive visual form.
3. Overall Summary
The DeepClean Linear indicator calculates trend direction using changes in linear regression slope and determines trend strength by comparing how consistently the regression line moves over a defined lookback window.
Rather than merely identifying trend direction, the indicator applies a triple-layer noise-filtering process (EMA → SMA → RMA) to produce a clean, wave-shaped data line that filters out unnecessary market noise.
This transparent wave sits directly on top of price, allowing traders to visually compare price movement and trend strength at the same time.
A stronger trend results in a taller, thicker wave, while weakening momentum causes the wave to thin, making it easier to spot trend continuation, exhaustion, or upcoming reversal.
Color automatically shifts based on trend:
Bright cyan/teal during bullish conditions
Reddish tones during bearish conditions
Transparency dynamically adjusts depending on strength
The indicator excels at identifying the true underlying trend by ignoring minor fluctuations and is well suited for scalping, swing trading, and position trading.
It also significantly reduces false signals in ranging markets, making it ideal for trend-following strategies.
4. Advantages
① Ultra-Clean Noise-Reduced Wave
Utilizes a 3-stage smoothing filter (EMA → SMA → RMA) to produce a much cleaner wave than standard moving averages, highlighting only core trend movement.
② Trend Direction & Strength at a Glance
Based on comparative linear regression behavior, the indicator quantifies both direction and strength, making convergence/divergence highly visible.
③ Intuitive Price Overlay Visualization
The semi-transparent wave sits directly on price action, allowing traders to instantly see divergence from price, trend weakening, or early turning points.
④ Dynamic Transparency Coloring
Strong trends appear bold and intense, while weaker trends fade visually—making signal interpretation effortless.
⑤ Excellent Range Filtering
During low-direction phases (state = 0), the wave turns neutral, preventing forced or premature entries.
⑥ Multi-Timeframe Compatibility
The wave remains stable from 1-minute to weekly charts, making it suitable for trend analysis, execution, and risk control across all timeframes.
📌 Core Concept Overview
The indicator evaluates the relative comparison of linear regression values over the last n periods.
A positive trend value indicates bullish bias
A negative trend value indicates bearish bias
Intensity represents strength and controls wave height
waveTop / waveBot define the visual wave area relative to price
State Values
1 = Bullish Trend
-1 = Bearish Trend
0 = Neutral / Weak Direction
⚙️ Settings Overview
Option Description
Trend Lookback (n) Comparison window for regression slope. Higher = bigger trend focus.
Range Tolerance (%) Strength threshold to classify bullish/bearish movement. Higher = more conservative.
Source Price source for regression calculations.
Linear Reg Length Length of the linear regression.
Noise Filter Strength (smoothK) Controls the smoothing intensity. Higher = smoother wave.
Wave Amplitude (amp) Adjusts the height/thickness of the wave.
Bull/Bear Color Colors for bullish/bearish waves.
Base Transparency Base opacity level; modified dynamically by trend strength.
📈 Bullish Timing Recognition Examples
Wave begins turning brighter teal and more opaque, indicating strengthening upward pressure.
waveTop expands above price, signaling early trend expansion.
State flips to 1, often marking a trend restart or early reversal phase.
A steadily rising wave height suggests sustained bullish momentum.
📉 Bearish Timing Recognition Examples
Wave shifts into red tones, showing bearish dominance.
waveBot expands below price, indicating rising downside volatility.
State stays at -1 while intensity increases, signaling entry into strong downtrend conditions.
A shift from weak → strong bearish intensity can provide short-entry timing cues.
🧪 Recommended Usage
Use as a core component in trend-following systems
Adjust position size based on wave thickness (trend strength)
Combine with RSI/MACD to reduce false signals during overbought/oversold zones
Sudden wave expansion during volatility increases helps detect trend acceleration
In sideways markets, frequent state = 0 readings help avoid low-probability trades
🔒 Important Notes
As a trend-based indicator, it may misread choppy/ranging markets
Because of smoothing, signals may appear slightly delayed
Extreme news volatility can temporarily distort trend clarity
Atlas 8 Currency Session Momentum (6H, London)This indicator calculates real-time currency strength for the 8 major currencies (USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF) using a balanced multi-pair engine and a 6-hour momentum reset.
🔍 How it works
The indicator computes the relative strength of each currency by averaging the percentage change of 7 major cross-pairs for each currency.
A currency's value increases when pairs where it is the base appreciate, and decreases when pairs where it is the quote depreciate.
This creates a symmetric and stable strength calculation similar to institutional relative-value models.
🕒 Session-based Momentum Reset
The global trading day is split into 4 × 6-hour blocks:
• 00:00–06:00 Tokyo
• 06:00–12:00 London
• 12:00–18:00 New York
• 18:00–24:00 Late US/Asia pre-open
At each new 6-hour session, all strength lines reset to 0.
This highlights fresh intraday momentum generated by liquidity transitions between sessions.
🎯 What the indicator shows
• Relative strength of all 8 currencies
• Smooth momentum curves using EMA smoothing
• Vertical dividers at each new session
• Background color for each session
• Real intraday build-up of strength/weakness (not cumulative from previous day)
This tool is designed for intraday traders who follow cross-currency momentum during session transitions (Tokyo → London → NY).
🧭 How to use it
• Look for the strongest vs weakest currency after each session reset
• Identify fresh trends during London and NY opens
• Confirm currency-pair bias using strength divergence
• Track momentum exhaustion when lines flatten or converge
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.
ل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))
//-----------------------------------------------------------------------------}






















