Heatmap w/ ATRThis script combines Heatmap Volume with a scaled ATR (Average True Range) overlay for dynamic market insight. Volume bars are color-coded based on how many standard deviations they deviate from a moving average, helping identify spikes, absorption, or anomalies.
The ATR is scaled relative to the maximum volume observed to maintain visual alignment in the same pane. This allows traders to compare price volatility (ATR) against real market activity (volume) in one view.
Use this overlay to:
Spot high-volatility, high-conviction moves (rising ATR + red/orange bars)
Detect low-volume fakeouts (high ATR, cool-colored bars)
Identify compression zones before expansion (low ATR + normal volume)
Chart patterns
Market Opening & Closing TimesThis indicator highlights the opening and closing times of major global markets (NYSE, LSE, Tokyo) on any chart timeframe. Users can toggle the display of lines and labels, and customize colors per market.
Features:
Toggle each market’s Open/Close separately
Global toggles: Show/Hide all lines or labels
Customizable colors for NYSE, LSE, and Tokyo markers
Accurate event detection using timezone-aware timestamp checks within each bar
MABB55 Full-CrossIndicates when the MABB55 crosses the:
MABB13
MABB21
EMA8
When a full crossover happens, where the long-term average (MABB 55) moves above or below the faster ones (EMA 8, MABB 13, and 21) it means the trend has shifted so strongly and consistently that it overcomes short-term price movement. That kind of shift usually signals a trend reversal.
Bullish reversals with the MABB55 crossing from above, indicated by a green arrowl.
Bearish reversals with the MABB55 crossing from below, indicated by a red arrow.
ROGUE ICT PRORogue ICT PRO — Smart Money Confluence Tool
The Rogue ICT Buy/Sell indicator is a precision-built, multi-confirmation tool inspired by Inner Circle Trader (ICT) concepts. It identifies high-probability trade setups using market structure, fair value gaps, killzone sessions, and higher timeframe trend alignment.
✅ Core Features
🔹 Market Structure Shift (MSS)
Detects clean breaks of swing highs or lows, indicating potential trend continuation or reversal.
🔹 Fair Value Gap Detection (FVG)
Automatically highlights institutional imbalances — essential ICT confluence zones.
🔹 Smart Killzone Filtering
Signals only trigger during high-liquidity sessions:
Asian (19:00–22:00)
London (02:00–05:00)
New York (07:00–10:00)
Each session is color-highlighted on the chart.
🔹 HTF EMA Bias Filter
Only trades in the direction of the Higher Timeframe 50 EMA (e.g., 1H on 5M chart). This ensures entries align with institutional directional bias. I have default set to the Daily 9 EMA but can be changed to your preference.
🔹 ATR-Based Stop Loss & Take Profit Lines
SL is calculated using ATR × multiplier
TP is placed using a customizable Risk-Reward Ratio
Both levels are plotted on the chart with "SL" and "TP" labels.
🔹 Cooldown Logic
Prevents overtrading by requiring a minimum number of bars between each signal.
Volume Overbought/Oversold Zones📊 What You’ll See on the Chart
Red Background or Red Triangle ABOVE a Candle
🔺 Means: Overbought Volume
→ Volume on that bar is much higher than average (as defined by your settings).
→ Suggests strong activity, possible exhaustion in the trend or an emotional spike.
→ It’s a warning: consider watching for signs of reversal, especially if price is already stretched.
Green Background or Green Triangle BELOW a Candle
🔻 Means: Oversold Volume
→ Volume on that bar is much lower than normal.
→ Suggests the market may be losing momentum, or few sellers are left.
→ Could signal an upcoming reversal or recovery if confirmed by price action.
Orange Line Below the Candles (Volume Moving Average)
📈 Shows the "normal" average volume over the last X candles (default is 20).
→ Helps you visually compare each bar’s volume to the average.
Gray Columns (Actual Volume Bars)
📊 These are your regular volume bars — they rise and fall based on how active each candle is.
🔍 What This Indicator Does (In Simple Words)
This indicator looks at trading volume—which is how many shares/contracts were traded in a given period—and compares it to what's considered "normal" for recent history. When volume is unusually high or low, it highlights those moments on the chart.
It tells you:
• When volume is much higher than normal → market might be overheated or experiencing a buying/selling frenzy.
• When volume is much lower than normal → market might be quiet, potentially indicating lack of interest or indecision.
These conditions are marked visually, so you can instantly spot them.
💡 How It Helps You As a Trader
1. Spotting Exhaustion in Trends (Overbought Signals)
If a market is going up and suddenly volume spikes way above normal, it may mean:
• The move is getting crowded (lots of buyers are already in).
• A reversal or pullback could be near because smart money may be taking profits.
Trading idea: Wait for high-volume up bars, then look for price weakness to consider a short or exit.
2. Identifying Hidden Opportunities (Oversold Signals)
If price is falling but volume drops unusually low, it might mean:
• Panic is fading.
• Sellers are losing energy.
• A bounce or trend reversal could happen soon.
Trading idea: After a volume drop in a downtrend, watch for bullish price patterns or momentum shifts to consider a buy.
3. Confirming or Doubting Breakouts
Volume is critical for confirming breakouts:
• If price breaks a key level with strong volume, it's more likely to continue.
• A breakout without volume could be a fake-out.
This indicator highlights volume surges that can help you confirm such moves.
📈 How to Use It in Practice
• Combine it with candlestick patterns, support/resistance, or momentum indicators.
• Use the background colors or shapes as a visual cue to pause and analyze.
• Adjust the sensitivity to suit fast-moving markets (like crypto) or slow ones (like large-cap stocks).
FutureObitz Bank LevelsFutureObitz Bank Levels - Daily Structure & Trading Zones
"The Obitz Bank Levels indicator is a powerful tool designed to help traders identify key daily structural price levels. It automatically extracts the 1 hour and 4 hour High and 1 hour and 4 hour Low. You may also use this indicator for lower timeframes aswell. Going lower than 15 min is not recommended.
What This Indicator Provides:
Dynamic Daily Levels: Calculates and plots the Daily High, Daily Low, Middle, Middle High, and Middle Low of the current trading day. These lines provide clear reference points for price action.
Defined Buy & Sell Zones: Visualizes potential accumulation (Buy Zone) and distribution (Sell Zone) areas. These zones are calculated as a customizable percentage (via inputs) above/below the 'Middle' of the daily range, helping to identify potential entry or exit points.
Multi-Timeframe Compatibility: Displays the exact same daily levels regardless of your active chart's timeframe, offering a consistent higher-timeframe perspective for intraday traders.
Visual Clarity: Includes filled zones for better visualization of the Buy and Sell areas.
Optional Labels: Provides clear labels for the latest daily levels (D. High, D. Low, D. Middle, D. Buy Zone, D. Sell Zone) on the last bar of your chart for quick reference.
This indicator serves as a robust framework for understanding daily market structure and can assist in identifying potential areas of support, resistance, and trading opportunities. It's an excellent tool for traders who rely on clear, higher-timeframe levels to inform their trading decisions.
-FutureObitz
Saty ATR Levels// Saty ATR Levels
// Copyright (C) 2022 Saty Mahajan
// Author is not responsible for your trading using this script.
// Data provided in this script is not financial advice.
//
// Features:
// - Day, Multiday, Swing, Position, Long-term, Keltner trading modes
// - Range against ATR for each period
// - Put and call trigger idea levels
// - Intermediate levels
// - Full-range levels
// - Extension levels
// - Trend label based on the 8-21-34 Pivot Ribbon
//
// Special thanks to Gabriel Viana.
// Based on my own ideas and ideas from Ripster, drippy2hard,
// Adam Sliver, and others.
//@version=5
indicator('Saty ATR Levels', shorttitle='Saty ATR Levels', overlay=true)
// Options
day_trading = 'Day'
multiday_trading = 'Multiday'
swing_trading = 'Swing'
position_trading = 'Position'
longterm_trading = 'Long-term'
trading_type = input.string(day_trading, 'Trading Type', options= )
use_options_labels = input(true, 'Use Options Labels')
atr_length = input(14, 'ATR Length')
trigger_percentage = input(0.236, 'Trigger Percentage')
previous_close_level_color = input(color.white, 'Previous Close Level Color')
lower_trigger_level_color = input(color.yellow, 'Lower Trigger Level Color')
upper_trigger_level_color = input(color.aqua, 'Upper Trigger Level Color')
key_target_level_color = input(color.silver, 'Key Target Level Color')
atr_target_level_color = input(color.white, 'ATR Target Level Color')
intermediate_target_level_color = input(color.gray, 'Intermediate Target Level Color')
show_all_fibonacci_levels = input(true, 'Show All Fibonacci Levels')
show_extensions = input(false, 'Show Extensions')
level_size = input(2, 'Level Size')
show_info = input(true, 'Show Info Label')
use_current_close = input(false, 'Use Current Close')
fast_ema = input(8, 'Fast EMA')
pivot_ema = input(21, 'Pivot EMA')
slow_ema = input(34, 'Slow EMA')
// Set the appropriate timeframe based on trading mode
timeframe_func() =>
timeframe = 'D'
if trading_type == day_trading
timeframe := 'D'
else if trading_type == multiday_trading
timeframe := 'W'
else if trading_type == swing_trading
timeframe := 'M'
else if trading_type == position_trading
timeframe := '3M'
else if trading_type == longterm_trading
timeframe := '12M'
else
timeframe := 'D'
// Trend
price = close
fast_ema_value = ta.ema(price, fast_ema)
pivot_ema_value = ta.ema(price, pivot_ema)
slow_ema_value = ta.ema(price, slow_ema)
bullish = price >= fast_ema_value and fast_ema_value >= pivot_ema_value and pivot_ema_value >= slow_ema_value
bearish = price <= fast_ema_value and fast_ema_value <= pivot_ema_value and pivot_ema_value <= slow_ema_value
// Data
period_index = use_current_close ? 0 : 1
ticker = ticker.new(syminfo.prefix, syminfo.ticker, session=session.extended)
previous_close = request.security(ticker, timeframe_func(), close , gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
atr = request.security(ticker, timeframe_func(), ta.atr(atr_length) , gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
period_high = request.security(ticker, timeframe_func(), high, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
period_low = request.security(ticker, timeframe_func(), low, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
range_1 = period_high - period_low
tr_percent_of_atr = range_1 / atr * 100
lower_trigger = previous_close - trigger_percentage * atr
upper_trigger = previous_close + trigger_percentage * atr
lower_0382 = previous_close - atr * 0.382
upper_0382 = previous_close + atr * 0.382
lower_0500 = previous_close - atr * 0.5
upper_0500 = previous_close + atr * 0.5
lower_0618 = previous_close - atr * 0.618
upper_0618 = previous_close + atr * 0.618
lower_0786 = previous_close - atr * 0.786
upper_0786 = previous_close + atr * 0.786
lower_1000 = previous_close - atr
upper_1000 = previous_close + atr
lower_1236 = lower_1000 - atr * 0.236
upper_1236 = upper_1000 + atr * 0.236
lower_1382 = lower_1000 - atr * 0.382
upper_1382 = upper_1000 + atr * 0.382
lower_1500 = lower_1000 - atr * 0.5
upper_1500 = upper_1000 + atr * 0.5
lower_1618 = lower_1000 - atr * 0.618
upper_1618 = upper_1000 + atr * 0.618
lower_1786 = lower_1000 - atr * 0.786
upper_1786 = upper_1000 + atr * 0.786
lower_2000 = lower_1000 - atr
upper_2000 = upper_1000 + atr
lower_2236 = lower_2000 - atr * 0.236
upper_2236 = upper_2000 + atr * 0.236
lower_2382 = lower_2000 - atr * 0.382
upper_2382 = upper_2000 + atr * 0.382
lower_2500 = lower_2000 - atr * 0.5
upper_2500 = upper_2000 + atr * 0.5
lower_2618 = lower_2000 - atr * 0.618
upper_2618 = upper_2000 + atr * 0.618
lower_2786 = lower_2000 - atr * 0.786
upper_2786 = upper_2000 + atr * 0.786
lower_3000 = lower_2000 - atr
upper_3000 = upper_2000 + atr
// Add Labels
tr_vs_atr_color = color.green
if tr_percent_of_atr <= 70
tr_vs_atr_color := color.green
else if tr_percent_of_atr >= 90
tr_vs_atr_color := color.red
else
tr_vs_atr_color := color.orange
trading_mode = 'Day'
if trading_type == day_trading
trading_mode := 'Day'
else if trading_type == multiday_trading
trading_mode := 'Multiday'
else if trading_type == swing_trading
trading_mode := 'Swing'
else if trading_type == position_trading
trading_mode := 'Position'
else if trading_type == longterm_trading
trading_mode := 'Long-term'
else
trading_mode := ''
long_label = ''
short_label = ''
if use_options_labels
long_label := 'Calls'
short_label := 'Puts'
else
long_label := 'Long'
short_label := 'Short'
trend_color = color.orange
if bullish
trend_color := color.green
else if bearish
trend_color := color.red
else
trend_color := color.orange
var tbl = table.new(position.top_right, 1, 4)
if barstate.islast and show_info
table.cell(tbl, 0, 0, 'Saty ATR Levels', bgcolor=trend_color)
table.cell(tbl, 0, 1, trading_mode + ' Range ($' + str.tostring(range_1, '#.##') + ') is ' + str.tostring(tr_percent_of_atr, '#.#') + '% of ATR ($' + str.tostring(atr, '#.##') + ')', bgcolor=tr_vs_atr_color)
table.cell(tbl, 0, 2, long_label + ' > $' + str.tostring(upper_trigger, '#.##') + ' | +1 ATR $' + str.tostring(upper_1000, '#.##'), bgcolor=upper_trigger_level_color)
table.cell(tbl, 0, 3, short_label + ' < $' + str.tostring(lower_trigger, '#.##') + ' | -1 ATR: $' + str.tostring(lower_1000, '#.##'), bgcolor=lower_trigger_level_color)
// Add levels
plot(show_extensions ? lower_3000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-300.0%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-278.6%', style=plot.style_stepline)
plot(show_extensions ? lower_2618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-261.8%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-250.0%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-238.2%', style=plot.style_stepline)
plot(show_extensions ? lower_2236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-223.6%', style=plot.style_stepline)
plot(show_extensions ? lower_2000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-200.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-178.6%', style=plot.style_stepline)
plot(show_extensions ? lower_1618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-161.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-150.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-138.2%', style=plot.style_stepline)
plot(show_extensions ? lower_1236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-123.6%', style=plot.style_stepline)
plot(lower_1000, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-100%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-78.6%', style=plot.style_stepline)
plot(lower_0618, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-61.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-50.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-38.2%', style=plot.style_stepline)
plot(lower_trigger, color=color.new(lower_trigger_level_color, 40), linewidth=level_size, title='Lower Trigger', style=plot.style_stepline)
plot(previous_close, color=color.new(previous_close_level_color, 40), linewidth=level_size, title='Previous Close', style=plot.style_stepline)
plot(upper_trigger, color=color.new(upper_trigger_level_color, 40), linewidth=level_size, title='Upper Trigger', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='38.2%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='50.0%', style=plot.style_stepline)
plot(upper_0618, color=color.new(key_target_level_color, 40), linewidth=level_size, title='61.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='78.6%', style=plot.style_stepline)
plot(upper_1000, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='100%', style=plot.style_stepline)
plot(show_extensions ? upper_1236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='123.6%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='138.2%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='150.0%', style=plot.style_stepline)
plot(show_extensions ? upper_1618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='161.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='178.6%', style=plot.style_stepline)
plot(show_extensions ? upper_2000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='200.0%', style=plot.style_stepline)
plot(show_extensions ? upper_2236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='223.6%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='238.2%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='250.0%', style=plot.style_stepline)
plot(show_extensions ? upper_2618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='261.8%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='278.6%', style=plot.style_stepline)
plot(show_extensions ? upper_3000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='300%', style=plot.style_stepline)
Doji Candlestick w/ Volatility & Uninterrupted CyclesTracks Doji formation and provides a rating score of Low Medium and High for stocks.
EMAs y señales🧠 What does the script do?
It draws the 9-period SMA (blue) and the 21-period SMA (orange).
It generates labels:
✅ “Buy” when the 9 SMA crosses above the 21 SMA.
❌ “Sell” when the 9 SMA crosses below the 21 SMA.
It triggers configurable alerts whenever a crossover occurs.
lucio_RCI6Displaying 6 RCIs
Long-term RCIs are shown in green, and short-term RCIs are shown in white.
Alerts can be added based on a short period of time.
lucio_😎必勝StrategyThe reversal after the RCI reaches the upper and lower bounds is used as the trigger for entry and settlement.
In order to follow the trend, record the highs and lows of the last 4 hours (adjustable) and aim for long above the center line and short below the center line.
MACD divergence alerts and plots are possible.
SMA (15m.1h.4h) tilted and colored, default display.
In the case of margin trading, it is possible to display a table showing whether there is a bias toward long or short lots for margin with the above high and low as the settlement line.
8 SMA Cross 200 SMACatch big moves, this ensures the direction of the stock price will either go up or down depending whether the 8 sma crosses above or below the 200 sma
Closed Market / Back-Test Filter x 'Bull_Trap_9'Hello TradingView Traders!
This is a very valuable tool that I believe all traders will find useful.
This indicator / filter is '1 of 2'. I prefer it as a filter because it is not meant for live trade analysis. It is designed to make a trader aware of their individual trade sessions and to help aid in static chart candlestick back-testing.
Also, look for my indicator / filter, '2 of 2': 'Red Report Filter'
There are two functions to this filter.
Primary use: It allows a trader to set a session window: Open / Close.
During a trade session, like YM, I only trade 9:30 - 15:00. Without the filter, many times I have traded past my cutoff because I was focused on the chart and not the time.
With this filter on as close nears with an open trade and the filter starts to apply, I know I am at session close with no more trades upon exit. Otherwise, I know the session is done with no further trades.
It is also nice to have the filter on during the session open as a demarcation boundary.
Secondary use: It is used as a chart back-test tool.
When applied to a traders back-test chart, the trader can control their trade session envelopes for easier and more precise evaluation. The filter will allow only the candles per session that the trader wants to focus on and will filter all other non-session candles.
I can easily compare a whole week of 30m session data, concentrating solely on the filtered trade windows.
Please Note: The filter will be active as far back as the historic data prints.
Thanks for viewing!
Previous Day O H L C Calculation By Md//@version=6
indicator("Previous Day O H L C Calculation By Md", overlay=true)
// Check if the previous daily candle is green (bullish) or red (bearish)
previousCandleBullish = close > open
previousCandleBearish = close < open
// Calculate the difference for bullish candles: previous day's high minus previous day's open
bullishCalculation = high - open
// Calculate the difference for bearish candles: previous day's low minus previous day's close
bearishCalculation = low - close
// Show the result at the top of the current daily candle if the previous candle was bullish
if previousCandleBullish
label.new(bar_index, high, "Bullish Calc: " + str.tostring(bullishCalculation), color=color.green, textcolor=color.white, style=label.style_label_left, size=size.small)
// Show the result at the bottom of the current daily candle if the previous candle was bearish
if previousCandleBearish
label.new(bar_index, low, "Bearish Calc: " + str.tostring(bearishCalculation), color=color.red, textcolor=color.white, style=label.style_label_left, size=size.small)
Rapid Candle PATTERNS V2.0Indicator Title: Rapid Candle Patterns - High-Probability Signals
Description
Tired of noisy charts filled with weak and ambiguous candlestick patterns? The Rapid Candle Patterns indicator is engineered to solve this problem by moving beyond simple textbook definitions. It identifies only high-probability reversal and continuation signals by focusing on the underlying market dynamics: momentum, liquidity, and confirmation.
This is not just another pattern indicator; it's a professional-grade tool designed to help you spot truly significant price action events.
How The Logic Works & Why It's More Accurate
Each pattern in this script has been enhanced with stricter, more intelligent rules to filter out noise and reduce false signals. Here’s what makes our logic superior:
1. The Liquidity Grab Hammer & Inverted Hammer
Standard Logic: A simple hammer shows a long lower wick, suggesting buyers pushed the price back up.
Our Enhanced Logic: We don't just look for a hammer shape. Our signal is only valid if the hammer’s low takes out the low of the previous candle (a "liquidity grab" or "stop hunt").
Why It's More Accurate: This sequence is incredibly powerful. It shows that sellers attempted to push the market lower, triggered stop-loss orders below the prior low, and then were decisively overpowered by buyers who reversed the price. This isn't just a reversal; it's a failed breakdown, often trapping sellers and fueling a stronger move in the opposite direction.
2. The "True" Bullish & Bearish Harami
Standard Logic: A small candle forms within the high-low range of the previous candle. This can often be misleading if the prior candle has long wicks and a tiny body.
Our Enhanced Logic: We enforce a "dual containment" rule. For a Harami to be valid, its body must be contained within the body of the previous candle. We also ensure the Harami candle itself is not a Doji, meaning it must show some conviction.
Why It's More Accurate: This ensures you are seeing a genuine and significant contraction in momentum. It filters out scenarios where a large-bodied candle forms inside the wicks of a doji-like candle, which is not a true Harami. Our logic captures the "pregnant" pattern as it was intended—a moment of quiet consolidation before a potential new move.
3. The "Power" Bullish & Bearish Engulfing
Standard Logic: A candle's body engulfs the body of the previous candle. This is a common signal, but it often lacks follow-through.
Our Enhanced Logic: Our "Power Engulfing" requires two conditions: (1) The body must engulf the prior candle's body, AND (2) the candle must close beyond the entire high/low range of the prior candle.
Why It's More Accurate: This is the ultimate sign of confirmation. It doesn't just show that one side has won the battle for the session; it proves they had enough force to break the entire structure of the previous candle. This signifies immense momentum and dramatically increases the probability that the trend will continue in the direction of the engulfing candle.
4. The Quantified Doji
Our Logic: Instead of being a subjective pattern, a Doji is defined quantitatively. It's a candle whose body is less than or equal to a user-defined percentage (default 9%) of its total range.
Why It's More Accurate: It provides a consistent and objective measure of market indecision. Furthermore, any candle identified as a Doji is automatically disqualified from being a Hammer, ensuring clear and distinct signals.
User Customization
Toggle Patterns On/Off: Declutter your chart by only showing the patterns you want to see.
Fine-Tune Logic: Use the "Pattern Logic" settings to adjust the sensitivity of the Doji and Harami detectors to perfectly match your trading style, asset, and timeframe.
Disclaimer: This indicator is a powerful tool for identifying high-probability price action. However, no single indicator is a complete trading system. Always use these signals as part of a comprehensive strategy, combined with analysis of market structure, support/resistance levels, and other forms of confluence.
RSI Divergence (Nikko)RSI Divergence by Nikko
🧠 RSI Divergence Detector — Nikko Edition This script is an enhanced RSI Divergence detector built with Pine Script v6, modified for better visuals and practical usability. It uses linear regression to detect bullish and bearish divergences between the RSI and price action — one of the most reliable early signals in technical analysis.
✅ Improvements from the Original:
- Clean divergence lines using regression fitting.
- Optional label display to reduce clutter (Display Labels toggle).
- Adjustable line thickness (Display Line Width).
- A subtle heatmap background to highlight RSI overbought/oversold zones.
- Uses max accuracy with high calc_bars_count and custom extrapolation window.
🔍 How It Works: The script applies linear regression (least squares method) on both RSI data, and Price (close) data.
It then compares the direction of RSI vs. direction of Price over a set length. If price is making higher highs while RSI makes lower highs, it's a bearish divergence. If price is making lower lows while RSI makes higher lows, it's a bullish divergence. Additional filters (e.g., momentum and slope thresholds) are used to validate only strong divergences.
🔧 Input Parameters: RSI Length: The RSI period (default: 14). RSI Divergence Length: The lookback period for regression (default: 25). Source: Which price data to calculate RSI from (default: close). Display Labels: Show/hide “Bullish” or “Bearish” labels on the chart. Display Line Width: Adjusts how thick the plotted divergence lines appear.
📣 Alerts: Alerts are built-in for both RSI Buy (bullish divergence) and RSI Sell (bearish divergence) so you can use it in automation or notifications.
🚀 Personal Note: I’ve been using this script daily in my own trading, which is why I took time to improve both the logic and visual clarity. If you want a divergence tool that doesn't clutter your chart but gives strong signals, this might be what you're looking for.
cd_secret_candlestick_patterns_CxHi traders,
With this indicator, we aim to uncover secret candlestick formations that even advanced traders may miss—especially those that can't be detected by classic pattern indicators, unless you're a true master of candlestick patterns or candle math.
________________________________________
General Idea:
We'll try to identify candlestick patterns by regrouping candles into custom-sized segments that you define.
You might ask: “Why do I need this? I can just look at different timeframes and spot the structure anyway.” But it’s not the same.
For example, if you're using a 1-minute chart and add a higher-timeframe candle overlay (like 5-minute), the candles you see start at fixed timestamps like 0, 5, 10, etc.
However, in this indicator, we redraw new candles by grouping them from the current candle backward in batches of five.
These candles won't match the standard view—only when aligned with exact time multiples (e.g., 0 and 5 minutes) will they look the same.
In classic charts:
• You see 5-minute candles that begin every 0 and 5 minutes.
In this tool:
• You see a continuously updating set of 5 merged 1-minute candles redrawn every minute.
What about the structures forming in between those fixed timeframes?
That’s exactly what we’ll be able to detect—while also making the lower timeframe chart more readable.
________________________________________
Candle Merging:
Let’s continue with an example.
Assume we choose to merge 5 candles. Then the new candle will be formed using:
open = open
close = close
high = math.max(high , high , high , high , high)
low = math.min(low , low , low , low , low)
This logic continues backward on the chart, creating merged candles in groups of 5.
Since the selected patterns are made up of 3, 4, or 5 candles, we redraw 5 such merged candles to analyze.
________________________________________
Which Patterns Are Included?
A total of 18 bullish and bearish patterns are included.
You’ll find both widely known formations and a few personal ones I use, marked as (MeReT).
You can find the pattern list and visual reference here:
________________________________________
Entry and Filtering Suggestions:
Let me say this clearly:
Entering a trade every time a pattern forms will not make you profitable in the long run.
You need a clear trade plan and should only act when you can answer questions like:
• Where did the pattern appear?
• When and under what conditions?
It’s more effective to trade in the direction of the trend and look for setups around support/resistance, supply/demand zones, key levels, or areas confirmed by other indicators.
Whether you enter immediately after the pattern or wait for a retest is a personal choice—but risk management is non-negotiable.
One of the optional filters I’ve included is a Higher Timeframe (HTF) condition, which is my personal preference:
When enabled, the highest or lowest price among the pattern candles must match the high or low of the current HTF candle.
You can see in the image below the decrease in the number of detected patterns on the 1-minute chart when using no filter (blue labels) compared to when the 1-hour timeframe filter is applied (red labels).
Additionally, I’ve added a “protected” condition for engulfing patterns to help filter out weak classic engulf patterns.
________________________________________
Settings:
From the menu, you can configure:
• Number of candles for regrouping
• Distance between the last candle and newly drawn candles
• Show/hide options
• HTF filter toggle and timeframe selection
• Color, label placement, and text customization
• Pattern list (select which to display or trigger alerts for)
My preferred setup:
While trading on the 1-minute chart, I typically set the higher timeframe to 15m or 1H, and switch the candle count between 2 and 3 depending on the situation.
⚠️ Important note:
The “Show” and “Alert” options are controlled by a single command.
Alerts are automatically created for any pattern you choose to display.
________________________________________
What’s Next?
In future updates, I plan to add:
• Pattern success rate statistics
• Multi-broker confirmation for pattern validation
Lastly, keep in mind:
The more candles a pattern is based on, the more reliable it may be.
I'd love to hear your feedback and suggestions.
Cheerful trading! 🕊️📈
Morning Structure – Live 30 Min Range📝 Description:
This indicator captures the morning price structure by tracking the high and low during the first 30 minutes after market open (default: 9:30 AM to 10:00 AM, New York time).
🔧 How it works:
At market open, it begins tracking the highest high and lowest low
The high and low lines are dynamic and update in real-time during the first 30 minutes
Once the 30-minute range completes, the lines freeze at their final values
Lines extend horizontally across the rest of the session to mark the "Morning Range"
✅ Key Features:
Tracks live price action during the morning session
Freezes the structure after 30 minutes (or user-defined)
Automatically resets each new trading day
Built-in timezone setting (America/New_York) to align with standard U.S. market hours
Clean visual lines that scroll naturally with the chart
⚙️ Use Cases:
Identify morning breakout zones
Define support and resistance early in the session
Combine with breakout, fade, or range-trading strategies
⚠️ Note:
This version does not include alerts or labels, by design (clean and focused).
Those can be added easily for custom strategies.
Trap Candle (Trend H4 + RSI Filter)🔍 Trap Candle (Trend H4 + RSI Filter)
Description:
The Trap Candle indicator is designed to identify a specific and powerful two-candle price action pattern that often signals a false breakout followed by a strong reversal. It combines pure price action with two objective filters to increase signal quality and trend alignment.
📊 Pattern Logic:
Bullish Trap: The current candle breaks the previous candle’s low, but closes above its high (and is bullish).
Bearish Trap: The current candle breaks the previous candle’s high, but closes below its low (and is bearish).
This pattern often reveals institutional traps or stop hunts before directional movement.
🧠 Trend Filter (H4):
Ensures long signals occur only when the H4 close is higher than the previous H4 close (uptrend).
Ensures short signals occur only in a H4 downtrend.
Designed to align intraday entries (M15, H1) with higher timeframe momentum.
💪 RSI Confirmation:
Includes a configurable RSI filter on the current timeframe.
Only long signals are shown when RSI is above a user-defined threshold (e.g. 55).
Only short signals are shown when RSI is below a user-defined threshold (e.g. 45).
⚙️ Key Features:
Full customization of RSI period and thresholds.
Clean, visual signal plotting on the chart (with “Trap L” or “Trap S” labels).
Built-in alerts for both long and short trap candle setups.
Perfect for traders who want to trade smart reversals with trend and momentum confirmation.
✅ Recommended Timeframes:
M15 and H1 (entry)
Uses H4 for trend bias
If you’re looking to filter out noise and spot only the highest quality reversal setups, the Trap Candle (Trend H4 + RSI Filter) is a solid tool for any price action-based strategy.
First Candle🕯️ First Candle Indicator (First 5-Minute Candle High/Low)
The First Candle indicator automatically marks the high and low of the first 5-minute candle of the U.S. trading session . These levels can act as key intraday support and resistance zones, often used in breakout, scalping, or opening-range trading strategies.
📌 Key Features:
Automatic detection of the first candle of the U.S. session based on the selected timeframe (default is 5 minutes).
Horizontal lines are plotted at the high and low of that candle, with fully customizable colors and thickness.
Labels show the exact level and timeframe used for the high and low.
Resets daily, removing previous session data at the start of a new session.
Displays a visual marker (blue triangle) when the first candle is detected.
Allows users to select different timeframes for defining the "first candle" (e.g., 1, 5, 15 minutes).
⚙️ Customizable Inputs:
Show First Candle Lines: toggle the display of high/low lines.
Timeframe for Marking: choose the timeframe to detect the first candle (e.g., 5 minutes).
High Line Color / Low Line Color: set the color of each level line.
Line Thickness: adjust the width of the lines (1 to 5 pixels).
🧠 Strategic Applications:
Identify breakout zones right after the market opens.
Define opening range for pullback or continuation setups.
Set clear reference levels for intraday trading decisions.
Price-EMA Z-Score Backgroundhe “Price‑to‑EMA Z‑Score Background” indicator is designed to give you a clear, visual sense of when price has moved unusually far away from its smoothed trend, and to highlight those moments as potential overextension or mean‑reversion opportunities. Under the hood, it first computes a standard exponential moving average (EMA) of your chosen lookback length, then measures the raw difference between the current close and that EMA on every bar. To make that raw deviation comparable across different markets and timeframes, it converts the series of differences into a z‑score—subtracting the rolling mean of the deviations and dividing by their rolling standard deviation over a second lookback window.
Once you’ve normalized price‑to‑EMA distance into z‑score units, you can set two simple trigger levels: one upper threshold and one lower threshold. Whenever the z‑score climbs above the upper threshold, the chart background glows green, signaling that price is extended far above its EMA (and might be ripe for a pullback). Whenever the z‑score falls below the lower threshold, the background turns red, calling out an equally extreme move below the EMA (and a possible oversold bounce). Between those bands, no shading appears, letting you know price is trading within its “normal” range around the trend.
By adjusting the EMA period, the z‑score lookback, and the two trigger levels, you can dial in early warning signals (e.g. ±1 σ) or wait for very stretched moves (±2 σ or more). Used in concert with your favorite momentum or pattern tools—or even as a standalone visual cue—this simple background‑shading approach makes it easy to spot when a market is running too hot or too cold relative to its own recent average.
Yield Curve Regime Shading with LegendTakes two symbols (e.g. two futures contracts, two FX pairs, etc.) as inputs.
Calculates the “regime” as the sign of the change in their difference over an n‑period lookback.
Lets you choose whether you want to color the bars themselves or shade the background.
How it works
Inputs
symbolA, symbolB: the two tickers you’re comparing.
n: lookback in bars to measure the change in the spread.
mode: pick between “Shading” or “Candle Color”.
Data fetching
We use request.security() to pull each series at the chart’s timeframe.
Regime calculation
spread = priceA – priceB
spreadPrev = ta.valuewhen(not na(spread), spread , 0) (i.e. the spread n bars ago)
If spread > spreadPrev → bullish regime
If spread < spreadPrev → bearish regime
Plotting
Shading: apply bgcolor() in green/red.
Candle Color: use barcolor() to override the bar color.
SMA Smooth Market Structure (Multi-Timeframe)SMA Market Structure (Multi-Timeframe) is a powerful tool for tracking structural price action, using simple moving averages across any higher timeframe (HTF). It blends Smart Money Concepts with clean swing logic to reveal trend shifts, breaks of structure, and supply/demand zones.
This indicator highlights key structure features:
• Break of Structure (BOS) – Automatic detection of bullish or bearish swing breaks
• Internal Shifts – Early clues that the market is building toward a reversal
• Liquidity Sweeps (LS) – Detects swing failures that may trap traders
• Zigzag Swing Lines – Cleanly connects swing highs and lows
• Dynamic Zones – Demand (green) and supply (red) blocks drawn from engulfing breakouts
How to Use:
• Set your preferred HTF (e.g. 1H on a 15m chart) to view structure in proper context and
adjust SMA to smooth out market structure for directional consistency
• Watch BOS lines and swing labels like HH, HL, LH, LL for directional clarity
• Use the MS (Market Shift) label to identify full reversals after internal shifts + BOS
• Demand/Supply zones mark areas of previous strength and will update or mitigate automatically
• Alerts notify you of every BOS, MS, HH, LL, and LS event — no need to monitor manually
Customization Features:
• Toggle visibility of market shift markers, internal shifts, and zones
• Choose how internal shifts are calculated (High/Low or Open)
• Customize line style, width, and colors for BOS and zigzag lines
• Control zone duration and how mitigated zones behave (fade or delete)
• Built-in safety for Pine Script’s history limits using smart offset caps
Best Use Tips:
• Combine with price action patterns or volume for confirmation
• MS + BOS + zone tap often marks a high-probability reversal setup
• Use it to align lower timeframe entries with higher timeframe structure
For traders who want structure clarity without clutter, this tool is built to keep your chart actionable and adaptive.