Daily High-Low-Open + LabelsSimple PDH/PDL/DO indicator. It is in horizontal line form and it includes labels. So you don't have to place them daily yourself. Updates on its own every single day.
Cerca negli script per "Candlestick"
VWAP + EMA9/21/50 + Ichimoku + RSI (M5) - Strict + TPSL//@version=5
indicator("VWAP + EMA9/21/50 + Ichimoku + RSI (M5) - Strict + TPSL", overlay=true, shorttitle="VWAP_EMA_ICH_RSI_TPSL")
// === Inputs ===
emaFastLen = input.int(9, "EMA Fast (9)")
emaMidLen = input.int(21, "EMA Mid (21)")
emaSlowLen = input.int(50, "EMA Slow (50)")
// Ichimoku inputs
tenkanLen = input.int(9, "Tenkan Sen Length")
kijunLen = input.int(26, "Kijun Sen Length")
senkouBLen = input.int(52, "Senkou B Length")
displacement = input.int(26, "Displacement")
// RSI
rsiLen = input.int(14, "RSI Length")
rsiThreshold = input.int(50, "RSI Threshold")
// VWAP option
useSessionVWAP = input.bool(true, "Use Session VWAP (true) / Daily VWAP (false)")
// Volume filter
useVolumeFilter = input.bool(true, "Enable Volume Filter")
volAvgLen = input.int(20, "Volume Avg Length")
volMultiplier = input.float(1.2, "Min Volume > avg *", step=0.1)
// Higher timeframe trend check
useHTF = input.bool(true, "Enable Higher-Timeframe Trend Check")
htfTF = input.string("60", "HTF timeframe (e.g. 60, 240, D)")
// Alerts / webhook
alertOn = input.bool(true, "Enable Alerts")
useWebhook = input.bool(true, "Send webhook on alerts")
webhookURL = input.string("", "Webhook URL (leave blank to set in alert)")
// TP/SL & Trailing inputs
useTP = input.bool(true, "Enable Take Profit (TP)")
tpTypeRR = input.bool(true, "TP as Risk-Reward ratio (true) / Fixed points (false)")
tpRR = input.float(1.5, "TP RR (e.g. 1.5)", step=0.1)
fixedTPpts = input.float(40.0, "Fixed TP (ticks/pips) if not RR")
useSL = input.bool(true, "Enable Stop Loss (SL)")
slTypeATR = input.bool(true, "SL as ATR-based (true) / Fixed points (false)")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier for SL", step=0.1)
fixedSLpts = input.float(20.0, "Fixed SL (ticks/pips) if not ATR")
useTrailing = input.bool(true, "Enable Trailing Stop")
trailType = input.string("ATR", "Trailing type: ATR or EMA", options= ) // "ATR" or "EMA"
trailATRmult = input.float(1.0, "Trailing ATR Multiplier", step=0.1)
trailEMAlen = input.int(9, "Trailing EMA Length (if EMA chosen)")
trailLockInPts = input.float(5.0, "Trail lock-in (min profit before trail active, pts)")
// Other
showArrows = input.bool(true, "Show Entry Arrows")
// === Calculations ===
ema9 = ta.ema(close, emaFastLen)
ema21 = ta.ema(close, emaMidLen)
ema50 = ta.ema(close, emaSlowLen)
// VWAP
vwapVal = ta.vwap
// Ichimoku
highestHighTenkan = ta.highest(high, tenkanLen)
lowestLowTenkan = ta.lowest(low, tenkanLen)
tenkan = (highestHighTenkan + lowestLowTenkan) / 2
highestHighKijun = ta.highest(high, kijunLen)
lowestLowKijun = ta.lowest(low, kijunLen)
kijun = (highestHighKijun + lowestLowKijun) / 2
highestHighSenkouB = ta.highest(high, senkouBLen)
lowestLowSenkouB = ta.lowest(low, senkouBLen)
senkouB = (highestHighSenkouB + lowestLowSenkouB) / 2
senkouA = (tenkan + kijun) / 2
// RSI
rsi = ta.rsi(close, rsiLen)
// Volume
volAvg = ta.sma(volume, volAvgLen)
volOk = not useVolumeFilter or (volume > volAvg * volMultiplier)
// Higher timeframe trend values
htf_close = request.security(syminfo.tickerid, htfTF, close)
htf_ema50 = request.security(syminfo.tickerid, htfTF, ta.ema(close, emaSlowLen))
htf_rsi = request.security(syminfo.tickerid, htfTF, ta.rsi(close, rsiLen))
htf_bull = htf_close > htf_ema50
htf_bear = htf_close < htf_ema50
htf_ok = not useHTF or (htf_bull and close > ema50) or (htf_bear and close < ema50)
// Trend filters (on current timeframe)
priceAboveVWAP = close > vwapVal
priceAboveEMA50 = close > ema50
priceAboveCloud = close > senkouA and close > senkouB
bullTrend = priceAboveVWAP and priceAboveEMA50 and priceAboveCloud
bearTrend = not priceAboveVWAP and not priceAboveEMA50 and not priceAboveCloud
// Pullback detection (price near EMA21 within tolerance)
tolPerc = input.float(0.35, "Pullback tolerance (%)", step=0.05) / 100.0
nearEMA21 = math.abs(close - ema21) <= ema21 * tolPerc
// Entry conditions
emaCrossUp = ta.crossover(ema9, ema21)
emaCrossDown = ta.crossunder(ema9, ema21)
longConditionBasic = bullTrend and (nearEMA21 or close >= vwapVal) and emaCrossUp and rsi > rsiThreshold
shortConditionBasic = bearTrend and (nearEMA21 or close <= vwapVal) and emaCrossDown and rsi < rsiThreshold
longCondition = longConditionBasic and volOk and htf_ok and (not useHTF or htf_bull) and (rsi > rsiThreshold)
shortCondition = shortConditionBasic and volOk and htf_ok and (not useHTF or htf_bear) and (rsi < rsiThreshold)
// More strict: require Tenkan > Kijun for bull and Tenkan < Kijun for bear
ichimokuAlign = (tenkan > kijun) ? 1 : (tenkan < kijun ? -1 : 0)
longCondition := longCondition and (ichimokuAlign == 1)
shortCondition := shortCondition and (ichimokuAlign == -1)
// ATR for SL / trailing
atr = ta.atr(atrLen)
// --- Trade management state variables ---
var float activeLongEntry = na
var float activeShortEntry = na
var float activeLongSL = na
var float activeShortSL = na
var float activeLongTP = na
var float activeShortTP = na
var float activeLongTrail = na
var float activeShortTrail = na
// Function to convert fixed points to price (assumes chart in points as price units)
fixedToPriceLong(p) => p
fixedToPriceShort(p) => p
// On signal, set entry, SL and TP
if longCondition
activeLongEntry := close
// SL
if useSL
if slTypeATR
activeLongSL := close - atr * atrMult
else
activeLongSL := close - fixedToPriceLong(fixedSLpts)
else
activeLongSL := na
// TP
if useTP
if tpTypeRR and useSL and not na(activeLongSL)
risk = activeLongEntry - activeLongSL
activeLongTP := activeLongEntry + risk * tpRR
else
activeLongTP := activeLongEntry + fixedToPriceLong(fixedTPpts)
else
activeLongTP := na
// reset short
activeShortEntry := na
activeShortSL := na
activeShortTP := na
// init trailing
activeLongTrail := activeLongSL
if shortCondition
activeShortEntry := close
if useSL
if slTypeATR
activeShortSL := close + atr * atrMult
else
activeShortSL := close + fixedToPriceShort(fixedSLpts)
else
activeShortSL := na
if useTP
if tpTypeRR and useSL and not na(activeShortSL)
riskS = activeShortSL - activeShortEntry
activeShortTP := activeShortEntry - riskS * tpRR
else
activeShortTP := activeShortEntry - fixedToPriceShort(fixedTPpts)
else
activeShortTP := na
// reset long
activeLongEntry := na
activeLongSL := na
activeLongTP := na
// init trailing
activeShortTrail := activeShortSL
// Trailing logic (update only when in profit beyond 'lock-in')
if not na(activeLongEntry) and useTrailing
// current unrealized profit in points
currProfitPts = close - activeLongEntry
if currProfitPts >= trailLockInPts
// declare candidate before use to avoid undeclared identifier errors
float candidate = na
if trailType == "ATR"
candidate := close - atr * trailATRmult
else
candidate := close - ta.ema(close, trailEMAlen)
// move trail stop up but never below initial SL
activeLongTrail := math.max(nz(activeLongTrail, activeLongSL), candidate)
// ensure trail never goes below initial SL if SL exists
if useSL and not na(activeLongSL)
activeLongTrail := math.max(activeLongTrail, activeLongSL)
// update SL to trailing
activeLongSL := activeLongTrail
if not na(activeShortEntry) and useTrailing
currProfitPtsS = activeShortEntry - close
if currProfitPtsS >= trailLockInPts
// declare candidateS before use
float candidateS = na
if trailType == "ATR"
candidateS := close + atr * trailATRmult
else
candidateS := close + ta.ema(close, trailEMAlen)
activeShortTrail := math.min(nz(activeShortTrail, activeShortSL), candidateS)
if useSL and not na(activeShortSL)
activeShortTrail := math.min(activeShortTrail, activeShortSL)
activeShortSL := activeShortTrail
// Detect TP/SL hits (for plotting & alerts)
longTPHit = not na(activeLongTP) and close >= activeLongTP
longSLHit = not na(activeLongSL) and close <= activeLongSL
shortTPHit = not na(activeShortTP) and close <= activeShortTP
shortSLHit = not na(activeShortSL) and close >= activeShortSL
if longTPHit or longSLHit
// reset long state after hit
activeLongEntry := na
activeLongSL := na
activeLongTP := na
activeLongTrail := na
if shortTPHit or shortSLHit
activeShortEntry := na
activeShortSL := na
activeShortTP := na
activeShortTrail := na
// Plot EMAs
p_ema9 = plot(ema9, title="EMA9", linewidth=1)
plot(ema21, title="EMA21", linewidth=1)
plot(ema50, title="EMA50", linewidth=2)
// Plot VWAP
plot(vwapVal, title="VWAP", linewidth=2, style=plot.style_line)
// Plot Ichimoku lines (Tenkan & Kijun)
plot(tenkan, title="Tenkan", linewidth=1)
plot(kijun, title="Kijun", linewidth=1)
// Plot cloud (senkouA & senkouB shifted forward)
plot(senkouA, title="Senkou A", offset=displacement, transp=60)
plot(senkouB, title="Senkou B", offset=displacement, transp=60)
fill(plot(senkouA, offset=displacement), plot(senkouB, offset=displacement), color = senkouA > senkouB ? color.new(color.green, 80) : color.new(color.red, 80))
// Plot active trade lines
plotshape(not na(activeLongEntry), title="Active Long", location=location.belowbar, color=color.new(color.green, 0), style=shape.circle, size=size.tiny)
plotshape(not na(activeShortEntry), title="Active Short", location=location.abovebar, color=color.new(color.red, 0), style=shape.circle, size=size.tiny)
plot(activeLongSL, title="Long SL", color=color.red, linewidth=2)
plot(activeLongTP, title="Long TP", color=color.green, linewidth=2)
plot(activeShortSL, title="Short SL", color=color.red, linewidth=2)
plot(activeShortTP, title="Short TP", color=color.green, linewidth=2)
// Arrows / labels
if showArrows
if longCondition
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
if shortCondition
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// Alerts
// alertcondition must be declared in global scope so TradingView can create alerts from them
alertcondition(longCondition, "VWAP+EMA+Ichimoku+RSI — BUY (STRICT)", "BUY signal from VWAP+EMA+Ichimoku+RSI (STRICT)")
alertcondition(shortCondition, "VWAP+EMA+Ichimoku+RSI — SELL (STRICT)", "SELL signal from VWAP+EMA+Ichimoku+RSI (STRICT)")
// Runtime alerts (still use alert() to trigger immediate alerts; webhook is added in TradingView Alert dialog)
if alertOn
if longCondition
alert("VWAP+EMA+Ichimoku+RSI — BUY (STRICT)", alert.freq_once_per_bar_close)
if shortCondition
alert("VWAP+EMA+Ichimoku+RSI — SELL (STRICT)", alert.freq_once_per_bar_close)
// Alerts for TP/SL hits
if longTPHit
alert("LONG TP HIT", alert.freq_once_per_bar_close)
if longSLHit
alert("LONG SL HIT", alert.freq_once_per_bar_close)
if shortTPHit
alert("SHORT TP HIT", alert.freq_once_per_bar_close)
if shortSLHit
alert("SHORT SL HIT", alert.freq_once_per_bar_close)
// Info table
var table info = table.new(position.top_right, 1, 8)
if barstate.islast
table.cell(info, 0, 0, text = 'Trend: ' + (bullTrend ? 'Bull' : bearTrend ? 'Bear' : 'Neutral'))
table.cell(info, 0, 1, text = 'EMA9/21/50: ' + str.tostring(ema9, format.mintick) + ' / ' + str.tostring(ema21, format.mintick) + ' / ' + str.tostring(ema50, format.mintick))
table.cell(info, 0, 2, text = 'VWAP: ' + str.tostring(vwapVal, format.mintick))
table.cell(info, 0, 3, text = 'RSI: ' + str.tostring(rsi, format.mintick))
table.cell(info, 0, 4, text = 'Vol OK: ' + (volOk ? 'Yes' : 'No'))
table.cell(info, 0, 5, text = 'HTF: ' + htfTF + ' ' + (htf_bull ? 'Bull' : htf_bear ? 'Bear' : 'Neutral'))
table.cell(info, 0, 6, text = 'ActiveLong: ' + (not na(activeLongEntry) ? 'Yes' : 'No'))
table.cell(info, 0, 7, text = 'ActiveShort: ' + (not na(activeShortEntry) ? 'Yes' : 'No'))
// End of script
BigCandleAndRSIAlertChanges Candle Color to your choosing for Big Candles or Big Wick Candles or Over Bought/Oversold RSI Levels.
Minor Break of Structure (Minor BoS)This indicator extracts and isolates the Minor Break of Structure (BoS) logic from a full SMC framework and presents it as a clean, lightweight tool for structure-based price action traders.
Unlike traditional BOS indicators that rely on swing calculations with heavy filtering, this script uses original SMC-style minor structure logic to detect meaningful shifts in internal order flow.
A Minor BoS appears when price breaks above a minor swing high (bullish) or below a minor swing low (bearish), confirming a short-term continuation in trend direction.
Features:
Bullish Minor BoS detection
Bearish Minor BoS detection
Automatic line plotting with extend-right
Clear “Minor BoS” label with tiny footprint
Customizable line styles and colors
Lightweight & optimized for fast execution
Zero repainting on BoS confirmations
This tool is ideal for traders who want a simple, clean, and reliable structure-based signal without the noise of major structure, order blocks, liquidity sweeps, or external SMC modules.
Multi Timeframe Traffic LightsMonthly, Weekly, Daily, Hourly previous candle range vs current price. Inside = orange, above = green, below = red
Candle Points (Based on High/Low)Places a dot on the candle at the 25% 50% and 75% mark.
Candle body opacity needs to reduced to see the dots when then are within the candle body.
XAU Macro Regime + Mispricing OscillatorThis indicator is designed to measure the true macro environment behind gold (XAUUSD) and identify when price is aligned with macro flows or mispriced relative to them.
It combines a macro composite index, a mispricing spread oscillator, and automatic divergence detection into one tool.
1. Macro Composite Index (Regime Filter)
The top layer of the indicator constructs a macro regime score derived from:
A basket of gold FX pairs (XAUJPY, XAUAUD, XAUCHF, XAUNZD, XAUSGD)
The inverted DXY (to represent USD pressure on gold)
US30 (to capture global risk appetite and macro sentiment)
Each component is normalized and weighted, then combined into a composite macro index.
A smoothed baseline (SMA) is subtracted from this composite to form the Regime Line.
Interpretation
Regime > 0 (Green background):
Macro environment is supportive for gold.
XAUUSD is more likely to rise, consolidate, or mean revert upward.
Regime < 0 (Red background):
Macro environment is hostile for gold.
XAUUSD is more likely to fall, struggle, or mean revert downward.
This creates a macro trend filter that tells you when it is safer to prefer longs, shorts, or stay out.
2. Mispricing Spread Oscillator (Spread MACD)
The second layer measures the difference between XAUUSD and the macro composite index:
Spread = (Macro Composite) – (Normalized XAUUSD)
This spread is then smoothed into a signal line, and a histogram is plotted from their difference (MACD-style).
Interpretation
Spread > 0:
Gold is undervalued relative to macro conditions.
Macro strength > price strength.
Spread < 0:
Gold is overvalued relative to macro conditions.
Price strength > macro strength.
Spread crossing above signal:
Macro momentum turning bullish relative to price.
Spread crossing below signal:
Macro momentum turning bearish relative to price.
Green histogram: acceleration upward
Red histogram: acceleration downward
This oscillator captures mispricing, momentum shifts, and macro-pressure reversals.
3. Automatic Divergence Detection
The indicator automatically detects:
-Bullish Divergence-
XAUUSD makes a lower low
Spread makes a higher low
→ Price is weaker than macro reality → potential bullish reversal or mispricing reversion.
-Bearish Divergence-
XAUUSD makes a higher high
Spread makes a lower high
→ Price is stronger than macro reality → potential bearish reversal or exhaustion.
Labels (“Bull div” / “Bear div”) appear directly on the oscillator for clarity.
4. What The Indicator Seeks To Do
This indicator aims to answer the question:
“Is gold moving with the true macro pressure behind it, or diverging from it?”
Most gold indicators only watch XAUUSD price.
This one watches:
-gold cross-currency flows
-USD strength
-global risk sentiment
-gold’s relative position vs macro
-mispricing momentum
-divergence between price and macro reality
This creates a unique tool that:
-Detects when gold is overextended
-Detects when gold is undervalued
-Reveals hidden macro strength or weakness
-Highlights turning points and exhaustion
-Shows when a pullback is likely to end
-Shows when a rally is likely to fail
-Gives regime-aware trade direction (long vs short bias)
-Adds divergence labels for precision entries
DAS-Style RVOLDAS RVOL compares the current 1-minute volume to the average volume of that same minute over the past 14 trading days.
Example:
Current 10:00 AM 1-minute volume = 10M
Avg 10:00 AM 1-min volume over last 14 days = 1M
→ RVOL = 10.0 (or 1000%)
So this is time-of-day specific — not just average volume across the whole day.
MTF Slow Stochastic Buy/Sellcompare between 2 timeframe 1 minute and 3 minute, if both 1 and 3 minute time frame value %K is greater then %D then display BUY text.
if both timeframe value %D is greater then %K, display SELL text
Stochastic Signalbuy and sell indicator for slow stochastic, basic indicator to show buy and sell position based on slow stochastic 3 minute time frame.
MAT's Equal Highs and Lows IndicatorEqual highs and lows indicator. This is an indicator that marks out equal highs and lows within the market, wich can be a strong draw on liquidity.
Current Candle Vertical LineDescription
The Current Candle Vertical Line indicator draws a fully customizable vertical line on the most recent candle (live bar). This provides a clear visual anchor for active traders, especially during fast-moving markets or multi-chart setups.
The line extends from the top of the chart to the bottom, ensuring maximum visibility—regardless of zoom level or price scale.
Features
✔ Fully customizable line color
✔ Adjustable opacity (0–100%)
✔ Custom line thickness
✔ Three selectable line styles: Solid, Dashed, or Dotted
✔ Automatically deletes old line and redraws on the newest bar
✔ Works on any timeframe, chart type, and asset
Use Cases
Highlight the current candle during live trading
Keep visual focus when scalping or trading futures
Align entries with indicators on lower or higher timeframes
Improve visibility during high volatility
Support multi-monitor or multi-chart layouts
Notes
The indicator draws the line only on the last active bar.
Since overlay=true, the line appears in the main chart panel.
This script does not generate alerts (visual marker only).
WEEKLY - 3-Condition Arrows - Buy & SellVersion 1.
On the WEEKLY time frame, this indicator will add a green BUY arrow to a stock price when the following 3 conditions are ALL true:
BUY (all 3 conditions are true)
1. Stock price > 50 EMA
2. MACD line above moving average
3. Williams %R (Best_Solve version) is above moving average
Conversely, a red SELL arrow will point out when the following 3 conditions are ALL true:
SELL (all 3 conditions are true)
1. Stock price < 50 EMA
2. MACD line below moving average
3. Williams %R (Best_Solve version) is below the moving average
Harris Triple Impulse Candle Detector Triple impulse candle detector system. Indicator uses size multiplier, volume multiplier and body to mick ratio, to calculate the size of its impulse
Highlight 6-7 PM (IST) candle + mark H/L (Hourly)📌 Highlight 6–7 PM Candle (IST) + High/Low Lines (No Labels)
This indicator automatically detects the 6:00–7:00 PM candle (IST) on the hourly timeframe and visually marks it on the chart.
It highlights the candle and draws horizontal High and Low levels without any labels—making the chart clean and easy to read.
✅ Features
Highlights the 6–7 PM hourly candle (timezone adjustable: IST/UTC/Exchange).
Draws high & low horizontal lines from the target candle.
Option to extend the lines for a selected number of bars.
Optional restriction to only show on 1-hour timeframe.
Clean design — no labels, no clutter.
🛠️ Inputs
Timezone (default: Asia/Kolkata)
Target Hour (default: 18 = 6 PM)
Highlight Color
High/Low Line Colors
Line Extension Length
Enable/Disable Hourly-only Mode
🎯 Use Case
Useful for traders who track post-market candles, volatility behavior, range levels, or want to build intraday strategies based on evening session highs/lows.
First Fvg Strategy with CHoCH Exits, Adaptive TP & Entry TimerA strategy that is purely based off of prices reaction to the first presented fair value gap at 9:30 market open. Works best on NASDAQ one minute timeframe. Experimental indicator for me to back test first presented fair value gap.
ETH MASTER v1ETH MASTER v1 is a comprehensive indicator designed specifically for Ethereum trend tracking, cost analysis, and momentum evaluation.
It combines multiple analytical layers into a clean, easy-to-read system suitable for both beginners and experienced traders.
Features
✔ EMA Trend System
Plots EMA20 and EMA50
Generates Bull Cross and Bear Cross labels when EMA20 crosses above or below EMA50
Helps identify short–mid term trend direction shifts
✔ Average Cost Line
Displays the user-defined average entry price
When price drops below the average cost, a risk warning background is activated
✔ Trend Background Coloring
Green background during bullish conditions
Red background during bearish conditions
Dark-red background when price is below the user’s cost (high-risk zone)
✔ Trend Power (0–100 Score)
A normalized momentum score derived from the distance between EMA20 and EMA50
Higher values = stronger trend
Lower values = weaker momentum or consolidation
✔ Built-in Alert Conditions
Bull Cross Alert: EMA20 crosses above EMA50
Bear Cross Alert: EMA20 crosses below EMA50
Below Cost Alert: Price falls under the average cost
Purpose
ETH MASTER v1 provides a clear, structured view of Ethereum’s market behavior.
It simplifies trend analysis, identifies momentum shifts, and highlights risk zones.
Ideal for long-term ETH tracking, portfolio monitoring, and disciplined trading strategies.
BTC BRD – Bullet-Proof Reversal StrategyBTC BRD – Bullet-Proof Reversal Strategy is a price-action based reversal system that turns your existing “Bullet-Proof Reversal Detector” into a fully backtestable TradingView strategy with built-in risk management. It is designed to catch clean swing reversals using pure market structure, then automatically place stop-loss and take-profit orders based on your preferred risk-reward settings.
## Core concept
The strategy identifies true swing highs and lows using pivots and then waits for a clear market structure shift before entering any trade. It looks for a higher low followed by a break of structure for longs, and a lower high followed by a break of structure for shorts, helping filter out many random spikes and fakeouts. This makes it suitable for traders who prefer clean, rule-based entries grounded in market structure rather than noisy, indicator-heavy setups.
## Entries and exits
- Long trades are triggered after a bullish higher-low plus a confirmed break above the last swing high.
- Short trades are triggered after a bearish lower-high plus a confirmed break below the last swing low.
- Every position is protected with an automatic stop-loss and a calculated take-profit, so each trade has a predefined risk and reward from the moment it is opened.
## Risk management
The strategy lets you control your risk with a configurable risk-reward ratio (RR) and flexible stop-loss options. You can choose between an ATR-based stop (ATR × multiplier) or a fixed percentage stop relative to the entry price. Once the stop distance is known, the take-profit level is automatically derived from your RR value, making trade sizing and evaluation more consistent across different pairs and timeframes.
## Use cases and recommendations
This script is ideal for swing and intraday traders who want to systematically test market-structure reversals on assets like Bitcoin or other volatile instruments. For best results, experiment with different timeframes and ATR/percentage settings, and always validate performance using the Strategy Tester before deploying it on live markets. Remember that no strategy is guaranteed to be profitable, so use proper risk management and adapt settings to your own style and risk tolerance.






















