Prev days openLabels are offset to the right of Lines
You can adjust the number of opens back to display
If you want to change the format of the label please read the tool tip
Original FrizLabz
Indicators and strategies
BTC SCALPERS By Anup## *BTC Scalper by Anup – Precision Trading for BTC Scalpers*
🔹 *BTC Scalper by Anup* is a high-accuracy scalping indicator designed specifically for Bitcoin traders. This tool combines multiple confirmations to ensure precise entry and exit points, reducing false signals and improving profitability.
### *🚀 Key Features:*
✅ *EMA Crossover Strategy* – Uses EMA to identify trend reversals.
✅ *ATR Volatility Filter* – Ensures trades are executed only in high-volatility conditions.
✅ *RSI Confirmation* – Prevents overbought/oversold entries by confirming trend strength.
✅ *Stochastic Momentum Check* – Filters weak signals and confirms valid trade setups.
✅ *Buy & Sell Signals* – Clearly marked entries and exits for easy decision-making.
### *📈 How It Works:*
📌 *BUY Signal* – When the EMA crosses above , ATR confirms volatility, RSI is above 50, and Stochastic shows momentum.
📌 *SELL Signal* – When the EMA crosses below , ATR confirms volatility, RSI is below 50, and Stochastic indicates bearish momentum.
🚀 Perfect for *scalpers and day traders* looking for *fast & reliable trade signals* on BTC ONLY!
📍 *Timeframe Recommendation:* Best suited for *M5 to M15 charts* for short-term trades.
🔔 *Try BTC Scalper by Anup and take your BTC trading to the next level!*
BTC SCALPERS By Anup## *BTC Scalper by Anup – Precision Trading for BTC Scalpers*
🔹 *BTC Scalper by Anup* is a high-accuracy scalping indicator designed specifically for Bitcoin traders. This tool combines multiple confirmations to ensure precise entry and exit points, reducing false signals and improving profitability.
### *🚀 Key Features:*
✅ *EMA Crossover Strategy* – Uses * TWO EMA* to identify trend reversals.
✅ *ATR Volatility Filter* – Ensures trades are executed only in high-volatility conditions.
✅ *RSI Confirmation* – Prevents overbought/oversold entries by confirming trend strength.
✅ *Stochastic Momentum Check* – Filters weak signals and confirms valid trade setups.
✅ *Buy & Sell Signals By arrow* – Clearly marked entries and exits for easy decision-making.
### *📈 How It Works:*
📌 *BUY Signal* – When the *EMA to EMA crosses up*, ATR confirms volatility, RSI is above 50, and Stochastic shows momentum.
📌 *SELL Signal* – When the *EMA to ema crosses down*, ATR confirms volatility, RSI is below 50, and Stochastic indicates bearish momentum.
🚀 Perfect for *scalpers and day traders* looking for *fast & reliable trade signals* on BTC only!
📍 *Timeframe Recommendation:* Best suited for *M5 to M15 charts* for short-term trades.
🔔 *Try BTC Scalper by Anup and take your BTC trading to the next level!*
Relative Strength Index//@version=6
indicator(title="Relative Strength Index", shorttitle="RSI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
// RSI Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings", display = display.data_window, tooltip = "Calculating divergences is needed in order for divergence alerts to fire.")
// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Smoothing MA inputs
GRP = "Smoothing"
TT_BB = "Only applies when 'SMA + Bollinger Bands' is selected. Determines the distance between the SMA and the bands."
maTypeInput = input.string("SMA", "Type", options = , group = GRP, display = display.data_window)
maLengthInput = input.int(14, "Length", group = GRP, display = display.data_window)
bbMultInput = input.float(2.0, "BB StdDev", minval = 0.001, maxval = 50, step = 0.5, tooltip = TT_BB, group = GRP, display = display.data_window)
var enableMA = maTypeInput != "None"
var isBB = maTypeInput == "SMA + Bollinger Bands"
// Smoothing MA Calculation
ma(source, length, MAtype) =>
switch MAtype
"SMA" => ta.sma(source, length)
"SMA + Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Calculate MA
smoothingMA = enableMA ? ma(rsi, maLengthInput, maTypeInput) : na
// Define RSI color based on position relative to MA
rsiColor = enableMA ? (rsi > smoothingMA ? color.green : color.red) : (rsi > rsi ? color.green : color.red)
// Plot RSI with dynamic color
rsiPlot = plot(rsi, "RSI", color = rsiColor)
// Horizontal lines
rsiUpperBand = hline(70, "RSI Upper Band (70)", color=#787B86, linestyle=hline.style_solid)
rsiUpperMidBand = hline(60, "RSI Upper Mid Band (60)", color=color.new(#787B86, 30), linestyle=hline.style_dashed)
midline = hline(50, "RSI Middle Band (50)", color=color.new(#787B86, 50))
rsiLowerMidBand = hline(40, "RSI Lower Mid Band (40)", color=color.new(#787B86, 30), linestyle=hline.style_dashed)
rsiLowerBand = hline(30, "RSI Lower Band (30)", color=#787B86, linestyle=hline.style_solid)
// Fills
fill(rsiUpperBand, rsiUpperMidBand, color=color.new(color.green, 90), title="Extreme Overbought Zone")
fill(rsiUpperMidBand, midline, color=color.new(color.green, 95), title="Overbought Zone")
fill(midline, rsiLowerMidBand, color=color.new(color.red, 95), title="Oversold Zone")
fill(rsiLowerMidBand, rsiLowerBand, color=color.new(color.red, 90), title="Extreme Oversold Zone")
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(rsiPlot, midLinePlot, 100, 70, top_color = color.new(color.green, 0), bottom_color = color.new(color.green, 100), title = "Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 30, 0, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0), title = "Oversold Gradient Fill")
// Smoothing MA plots
smoothingStDev = isBB ? ta.stdev(rsi, maLengthInput) * bbMultInput : na
plot(smoothingMA, "RSI-based MA", color=color.yellow, display = enableMA ? display.all : display.none, editable = enableMA)
bbUpperBand = plot(smoothingMA + smoothingStDev, title = "Upper Bollinger Band", color=color.green, display = isBB ? display.all : display.none, editable = isBB)
bbLowerBand = plot(smoothingMA - smoothingStDev, title = "Lower Bollinger Band", color=color.green, display = isBB ? display.all : display.none, editable = isBB)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill", display = isBB ? display.all : display.none, editable = isBB)
// Divergence (unchanged)
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)
_inRange(cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
plFound = false
phFound = false
bullCond = false
bearCond = false
rsiLBR = rsi
if calculateDivergence
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
plFoundPrev = plFound
inRangeBull = _inRange(plFoundPrev)
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and inRangeBull
lowLBR = low
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
phFoundPrev = phFound
inRangeBear = _inRange(phFoundPrev)
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and inRangeBear
highLBR = high
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
plot(plFound ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bullish", linewidth = 2, color = (bullCond ? bullColor : noneColor), display = display.pane, editable = calculateDivergence)
plotshape(bullCond ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bullish Label", text = " Bull ", style = shape.labelup, location = location.absolute, color = bullColor, textcolor = textColor, display = display.pane, editable = calculateDivergence)
plot(phFound ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bearish", linewidth = 2, color = (bearCond ? bearColor : noneColor), display = display.pane, editable = calculateDivergence)
plotshape(bearCond ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bearish Label", text = " Bear ", style = shape.labeldown, location = location.absolute, color = bearColor, textcolor = textColor, display = display.pane, editable = calculateDivergence)
alertcondition(bullCond, title='Regular Bullish Divergence', message="Found a new Regular Bullish Divergence, `Pivot Lookback Right` number of bars to the left of the current bar.")
alertcondition(bearCond, title='Regular Bearish Divergence', message='Found a new Regular Bearish Divergence, `Pivot Lookback Right` number of bars to the left of the current bar.')
Swing Option for individual stocks Focusing on individual stocks not SPY or QQQ
Use 4 hours as time chart to use the script
It is for the swing option trade
It is easy to understand since the sell and buy signal are very clear
Please common below if you have any questions
Pinbar DetectorFinding a pinbars on m5 timeframe. In order for the indicator to search for pinbars specifically on the M5 timeframe (5 minutes), you need to set this value in the tf parameter by default. In the current code, the timeframe is set via input.timeframe, and you can either change it manually in the indicator settings after adding it to the chart, or set M5 directly in the code.
Here's how to do it:
Change in code: In the line with input.timeframe, replace the default value "D" with "5" (in Pine Script, timeframes are designated as follows: "5" for 5 minutes, "15" for 15 minutes, "60" for 1 hour, etc.).
Volume Delta Divergence + Bollinger Bands (Filtered)📌 Volume Delta Divergence with Bollinger Bands (Filtered)
This script combines Volume Delta Divergence detection with Bollinger Bands to help identify high-probability buy and sell signals based on volume behavior and price action.
🔍 Key Features:
✅ Divergence Detection: Identifies when price moves in one direction (green/red candle), but the delta volume (buy vs sell volume) moves in the opposite direction — a common sign of hidden weakness or strength.
✅ Volume Strength Filter: Filters out weak divergence signals by checking if the delta volume is significantly larger than its historical average (user-defined lookback).
✅ Breakout Confirmation: A signal is only triggered when the next candle breaks the high or low of the divergence candle.
✅ Bollinger Bands Overlay: Adds standard Bollinger Bands (20-period SMA ± 2 standard deviations by default) for trend and volatility analysis.
✅ Clean Signal Display: Plots "BUY" and "SELL" labels only when strong divergences occur, reducing noise and false signals.
⚙️ User Inputs:
Custom timeframe for volume delta analysis
Delta volume average lookback period
Bollinger Band settings (length & deviation)
🧠 How to Use:
Use the divergence signals in conjunction with Bollinger Band positioning.
Consider SELL signals stronger when they occur near the upper Bollinger Band, and BUY signals near the lower band.
Combine with price action or RSI for added confluence.
MDTrader DashboardMDtrader Script that looks at moving averages, weekly and daily levels to help guide the trading day and establish a bias
TJR Strategy Ultimate ProAll done — your TJR Strategy Ultimate indicator is now fully coded and live in the canvas.
This version includes:
Liquidity sweeps
OB and FVG zones
Session filter
RSI + multi-timeframe bias
Alerts + webhook formatting
Auto-drawing Entry / SL / TP boxes
Dashboard panel
Previous session highs/lows & equal highs/lows
EMA + RSI + MACD + Support & Resistance Combined StrategyStrategy: Enhanced EMA + RSI + MACD + Support & Resistance
This strategy combines multiple technical indicators to create a robust system for identifying market opportunities. By leveraging Exponential Moving Averages (EMA), Relative Strength Index (RSI), and Moving Average Convergence Divergence (MACD) for trend confirmation, along with Support and Resistance levels to trigger breakout trades, this strategy aims to capture both trending and breakout movements.
Indicators Used:
EMA (5, 20, 50, 200): Helps identify the prevailing market trend, with short-term EMAs crossing longer-term ones as signals of trend shifts.
RSI (14): Confirms whether the market is in a bullish (RSI > 50) or bearish (RSI < 50) zone, adding additional filter to entries.
MACD (12, 26, 9): Used to confirm the momentum, where a MACD line crossing above the signal line indicates a bullish signal and vice versa for bearish.
Breakout Strategy (Support & Resistance):
Support & Resistance levels are dynamically calculated based on a user-defined period.
Buy Condition: Triggered when price breaks above resistance and confirms bullish indicators (EMA, RSI, MACD).
Sell Condition: Triggered when price breaks below support and confirms bearish indicators (EMA, RSI, MACD).
Exits & Risk Management:
Trailing Stop: A trailing stop is applied to lock in profits as the price moves in favor of the trade. The stop is dynamically adjusted with the market price, providing better protection during strong trends.
Stop Loss: The stop loss is set at key support and resistance levels to ensure a safe exit if the market moves against the trade.
This strategy aims to provide more frequent entries, take advantage of breakouts, and effectively manage risk with trailing stops. It is suitable for traders looking to capture both trends and breakouts across various timeframes.
SPY QQQ DayTrade Final - 5 Bars CooldownFocusing on trading SPY and QQQ
Users should look at into 3/5 mins chart, please do not go to less than 3 mins chart
It it use for the day trade instead of swing trade
This should be very easy to use and understand
Please common below if you have any questions
Estrategia EMA + RSIElser Senior Strategy: A Precise Approach to Profitable Trading
The Elser Senior strategy is designed for traders looking to take advantage of the best market opportunities with a robust technical approach. Using a combination of Exponential Moving Averages (EMA) and the Relative Strength Index (RSI), this strategy identifies key entry and exit points, allowing you to maximize profits and minimize risks.
Short and Long EMAs: Accurately detect the market trend, providing clear buy and sell signals.
RSI: Filters out false breakouts, focusing on overbought and oversold levels for more informed decision-making.
Customizable Stop Loss and Take Profit: Protects your capital with risk management settings tailored to your needs. Set a personalized Stop Loss and TP/SL ratio, optimizing your chances of success.
This strategy works across the most popular timeframes: 15 minutes, 1 hour, 4 hours, and 1 day, allowing you to adapt to different trading styles, from intraday to long-term positions.
Ideal for Forex, Indices, Commodities, and Cryptocurrencies, the Elser Senior Strategy has been crafted for serious traders seeking consistency and reliability in their operations. With a clear and easy-to-follow structure, it is perfect for both novice and experienced traders.
Follow the signals, optimize your risk management, and achieve successful trading with Elser Senior!
M5 Đỉnh Đáy & CHoCH//@version=5
indicator("M5 CHoCH - Lọc tín hiệu", overlay=true)
// Tham số người dùng
swing_len = input.int(5, title="Độ dài Swing", minval=1)
rsi_length = input.int(14, title="RSI Length")
rsi_oversold = input.int(30, title="RSI Oversold")
rsi_overbought = input.int(70, title="RSI Overbought")
filter_by_rsi = input.bool(true, title="Lọc tín hiệu theo RSI")
trend_tf = input.timeframe("60", title="Khung trend lớn hơn")
// Xác định Swing
isHigh = ta.pivothigh(high, swing_len, swing_len)
isLow = ta.pivotlow(low, swing_len, swing_len)
// Cấu trúc giá
var float lastHigh = na
var float lastLow = na
if isHigh
lastHigh := high
if isLow
lastLow := low
bullishChoch = isHigh and close > lastHigh
bearishChoch = isLow and close < lastLow
// RSI
rsi = ta.rsi(close, rsi_length)
rsi_bull_confirm = rsi < rsi_oversold
rsi_bear_confirm = rsi > rsi_overbought
// Trend lớn (MA)
ma_trend = request.security(syminfo.tickerid, trend_tf, ta.sma(close, 50))
trend_up = close > ma_trend
trend_down = close < ma_trend
// Tín hiệu cuối cùng sau lọc
buySignal = bullishChoch and trend_up and (not filter_by_rsi or rsi_bull_confirm)
sellSignal = bearishChoch and trend_down and (not filter_by_rsi or rsi_bear_confirm)
// Vẽ tín hiệu
plotshape(buySignal, title="Buy", location=location.belowbar, style=shape.labelup, text="BUY", color=color.green)
plotshape(sellSignal, title="Sell", location=location.abovebar, style=shape.labeldown, text="SELL", color=color.red)
bgcolor(buySignal ? color.new(color.green, 85) : na)
bgcolor(sellSignal ? color.new(color.red, 85) : na)
Options Trading Strategy with AlertsTitle: Options Trading Strategy with Buy/Sell Alerts
Description:
This script is designed for day traders and short-term options traders who focus on directional and trend-based trades. It integrates key indicators to identify high-probability entry and exit points for call and put options.
Features & Strategy Logic:
✅ Moving Averages (9 EMA, 21 EMA, 200 EMA) → Identifies short-term and long-term trends.
✅ VWAP (Volume Weighted Average Price) → Tracks institutional buying/selling pressure.
✅ RSI (Relative Strength Index, 14) → Confirms momentum and trend strength.
✅ MACD (12, 26, 9) → Detects shifts in momentum for trend continuation or reversals.
✅ Buy & Sell Alerts → Automatically notifies traders when optimal conditions are met.
How It Works:
• BUY (Call Signal):
• 9 EMA crosses above 21 EMA (bullish momentum).
• Price is above VWAP (institutional buying pressure).
• RSI is above 50 (bullish confirmation).
• MACD is trending upward.
• Trigger: Green “BUY” label appears below the candle.
• SELL (Put Signal):
• 9 EMA crosses below 21 EMA (bearish momentum).
• Price is below VWAP (institutional selling pressure).
• RSI is below 50 (bearish confirmation).
• MACD is trending downward.
• Trigger: Red “SELL” label appears above the candle.
How to Use:
1. Apply the script to 5-minute or 15-minute charts for best results.
2. Look for buy/sell labels and confirm with market context before entering trades.
3. Set alerts to receive real-time notifications when conditions align.
Ideal For:
✔️ Day traders looking for quick, high-probability trades.
✔️ Options traders focusing on directional movement.
✔️ Scalpers and momentum traders who rely on trend confirmation.
🔔 Set up alerts for automated trade notifications and never miss a setup!
NQ 13 EMA & 200 EMA Crossover with RSIThe 13 EMA crossing the 200 EMA is a widely used trend-following strategy, but its effectiveness depends on market conditions and confirmation signals.
How It Works:
✅ Bullish Entry (Buy Signal): When the 13 EMA crosses above the 200 EMA, it signals a potential long-term uptrend.
✅ Bearish Entry (Sell Signal): When the 13 EMA crosses below the 200 EMA, it suggests a potential downtrend.
Why It Works:
The 200 EMA represents the long-term trend, filtering out market noise.
The 13 EMA is a fast-moving average that reacts quickly to price movements.
The crossover helps identify trend shifts while avoiding minor fluctuations.
Pros of This Strategy:
✔ Strong Trend Confirmation – The 200 EMA acts as dynamic support/resistance.
✔ Best for Swing & Position Trading – Works well on higher timeframes (1H, 4H, Daily).
✔ Avoids Choppy Market Noise – Reduces false signals compared to shorter EMAs.
Cons & Risks:
❌ Lagging Indicator – Since EMAs are trend-following, signals may be delayed.
❌ False Signals in Ranging Markets – Whipsaws can occur if the market lacks strong momentum.
❌ Better with Confirmation – Needs RSI, MACD, or volume confirmation to avoid bad entries.
Enhancing the Strategy:
Confirm with RSI (above 50 for buys, below 50 for sells).
Use volume spikes to validate strong moves.
Check price action (e.g., breakouts, support & resistance levels).
ATR and Moving AverageUsing ATR and Moving Average: A Technical Analysis Strategy
The Average True Range (ATR) and the Moving Average are two important technical analysis tools that can be used together to identify trading opportunities in the market. In this article, we will explore how to use these two tools and how the crossover between them can indicate changes in the market.
What is ATR?
The Average True Range (ATR) is a measure of the volatility of an asset, which calculates the average true range of an asset over a period of time. The true range is the difference between the closing price and the opening price of an asset, or the difference between the closing price and the highest or lowest price of the day. ATR is an important measure of volatility, as it helps to identify the magnitude of price fluctuations of an asset.
What is Moving Average?
The Moving Average is a technical analysis tool that calculates the average price of an asset over a period of time. The Moving Average can be used to identify trends and price patterns, and is an important tool for traders. There are different types of Moving Averages, including the Simple Moving Average (SMA), the Exponential Moving Average (EMA), and the Weighted Moving Average (WMA).
Crossover between ATR and Moving Average
The crossover between ATR and Moving Average can be an important indicator of changes in the market. When ATR crosses above the Moving Average, it may indicate that the volatility of the asset is increasing and that the price may be about to rise. This occurs because ATR is increasing, which means that the true range of the asset is increasing, and the Moving Average is being surpassed, which means that the price is rising.
On the other hand, when ATR crosses below the Moving Average, it may indicate that the volatility of the asset is decreasing and that the price may be about to fall. This occurs because ATR is decreasing, which means that the true range of the asset is decreasing, and the Moving Average is being surpassed, which means that the price is falling.
Trading Strategies
There are several trading strategies that can be used with the crossover between ATR and Moving Average. Some of these strategies include:
Buying when ATR crosses above the Moving Average, with the expectation that the price will rise.
Selling when ATR crosses below the Moving Average, with the expectation that the price will fall.
Using the crossover between ATR and Moving Average as a filter for other trading strategies, such as trend analysis or pattern recognition.
In summary, the crossover between ATR and Moving Average can be an important indicator of changes in the market, and can be used as a technical analysis tool to identify trading opportunities. However, it is important to remember that no trading strategy is foolproof, and that it is always important to use a disciplined approach and manage risk adequately.
Serhat's Sinyal + Panel (Kompakt Versiyon)🔹 This indicator provides a clean and reliable signal system using a combination of multiple classic indicators: RSI, MACD, Stochastic RSI, ADX, DI+, Volume, and SMA sequences.
🔹 All signals are non-repetitive — once active, no new signal is given until the condition resets.
🔹 The compact panel summarizes all indicator statuses in real-time.
💡 Works best on daily and 4H charts.
Developed by: Serhat E.
Feedback is welcome!
NQ Supply & Demand ZonesStrategy Overview
Detect Supply Zones: Identify price levels where NQ faced strong selling pressure.
Detect Demand Zones: Identify price levels where NQ faced strong buying pressure.
Stochastic RSI DistanceThis indicator will displace the distance between the %K and %D lines of the Stochastic RSI
2:45 AM Candle High/Low Crossing Bars2:45 AM Candle High/Low Crossing Bars is an indicator that focuses on the trading view 2:45am NY TIME high and low indicating green for buy and red bars for sell, with the 2:45am new york time highlight/ If the next candle sweeps the low we buy while if it sweeps the high we sell, all time zoon must be the new York UTC time.
RGGR Pattern with Breakout Marking//@version=5
indicator("RGGR Pattern with Breakout Marking", overlay=true)
// Define color constants for Red and Green candles
redColor = color.red
greenColor = color.green
// Look for RGGR pattern (Red-Green-Green-Red)
findRGGRPattern() =>
// Check if the pattern is Red-Green-Green-Red
close < open and close > open and close > open and close < open
// Find the RGGR pattern on the chart
patternFound = findRGGRPattern()
// Store the high and low of the RGGR pattern
var float rggrHigh = na
var float rggrLow = na
// If RGGR pattern is found, update the high and low
if patternFound
rggrHigh := math.max(high , math.max(high , high ))
rggrLow := math.min(low , math.min(low , low ))
// Plot the high and low of the RGGR pattern
plot(rggrHigh, color=color.green, linewidth=2, title="RGGR High", style=plot.style_line)
plot(rggrLow, color=color.red, linewidth=2, title="RGGR Low", style=plot.style_line)
// Check for breakout condition
breakoutCondition = (high > rggrHigh or low < rggrLow) and patternFound and (close > rggrHigh or close < rggrLow)
// Mark the breakout candle
bgcolor(breakoutCondition ? color.new(color.blue, 90) : na, title="Breakout Candle Background")
// Plot breakout marker
plotshape(breakoutCondition, style=shape.triangledown, location=location.abovebar, color=color.blue, size=size.small, title="Breakout Candle")
// Alerts
alertcondition(breakoutCondition, title="Breakout Alert", message="Breakout candle detected!")