Support Resistance By VIPIN(30D • MTF • Safe v4)This script automatically detects and plots strong Support & Resistance levels based on pivot highs/lows within a custom lookback period.
Key features:
• Lookback window (days): Select how many past days to scan for pivots.
• Pivot strength: Adjustable left/right bars to filter minor vs. strong swings.
• Clustering: Nearby levels are merged using either ATR-based proximity or percentage proximity.
• Touches count: Each level records how many times it has been tested/retested.
• Ranking: Top N strongest support and resistance levels are highlighted.
• Multi-Timeframe (MTF): Option to detect levels from a higher timeframe while viewing a lower chart.
• Labels: Show price, touch count, and timeframe (optional), with ability to shift labels to the right of current price action.
• Custom styling: Colors, line width, and label placement are fully configurable.
This tool is designed for traders who want to quickly identify key zones of market reaction.
It is not a buy/sell signal generator, but an analytical aid to help you make better decisions alongside your own strategy.
⸻
🔹 How to use
1. Apply on your desired symbol and timeframe.
2. Adjust pivot length and lookback to control sensitivity.
3. Use ATR or % proximity for clustering based on market volatility.
4. Combine levels with your own price action, volume, or strategy confirmation.
This script is created for educational purposes to help traders understand how Support and Resistance zones are formed in the market.
It shows how price reacts to certain levels by:
• Identifying pivots (swing highs and lows).
• Merging nearby levels into zones using ATR or percentage-based proximity.
• Counting how many times a level has been tested or touched.
• Highlighting the most relevant zones with labels.
By studying these zones, traders can learn:
• How markets often respect previously tested levels.
• Why certain levels act as barriers (support or resistance).
• How different timeframes can show different key levels.
⚠️ Note:
This indicator is intended as a learning & analysis tool only. It does not provide buy/sell signals or guarantee results. Always combine it with your own knowledge, analysis, and risk management.
Candlestick analysis
LeToan EMA-STOCH-MACDMulti-frame stoch and macd chart for current and previous candle, giving traders an overview of momentum, also integrated with 10 ema lines 5,12,21,35,50,75,100,200
Consecutive Candle Body Expansion with VolumeConsecutive Candle Body Expansion with Volume
This tool is designed to help traders identify moments of strong directional momentum in the market. It highlights potential buy and sell opportunities by combining candlestick behavior with volume confirmation.
✨ Key Features
Detects when the market shows consistent momentum in one direction.
Filters signals with volume confirmation, avoiding low-activity noise.
Highlights possible continuation signals for both bullish and bearish moves.
Works on any asset and any timeframe — from scalping to swing trading.
🛠 How to Use
Green labels suggest potential buying opportunities.
Red labels suggest potential selling opportunities.
Best used in combination with your own risk management rules and other indicators (like support/resistance or moving averages).
⚠️ Note: This is not financial advice. Always backtest before applying in live trading.
Gold Buy Sell Signals V2* This custom **30-minute breakout indicator** is designed especially for **Gold (XAUUSD) traders**.
It highlights three key candles of the day (IST 5:30 AM, 1:30 PM, and 6:30 PM), marking their **high and low levels** as support and resistance zones.
👉 By following this structured breakout strategy, traders can consistently capture **40–50 pips** in Gold with high accuracy, while keeping trading decisions simple and rule-based.
---
Dual MTF Stoch & MACD Visualizer (Vertical) & 10EMAMulti-frame stoch and macd chart for current and previous candle, giving traders an overview of momentum, also integrated with 10 ema lines 5,12,21,35,50,75,100,200
Unicorn Model[Pro++]by TriummWhat is the Unicorn Model?
The Unicorn Model is an intraday trading setup taught by ICT that combines:
Liquidity raids (stop hunts)
Market structure shift (BOS/CHOCH)
Fair Value Gap (FVG) entry
Key time & session context
It’s called the “Unicorn” because it’s a rare but high-probability model that delivers very clean moves when it sets up correctly.
🔹 Core Components of the Unicorn Model
Liquidity Grab (Sweep)
Market first raids a key level (previous day’s high/low, session high/low, Asian range).
This removes liquidity and traps traders.
Market Structure Shift (MSS / CHoCH)
After the sweep, price breaks structure in the opposite direction.
This signals a shift in order flow.
Fair Value Gap (FVG) or Order Block Entry
Wait for price to retrace into the imbalance (FVG) or OB formed by the move.
Entry is taken here in line with the new direction.
Time & Session Context
Usually forms around London or New York Killzones (ICT emphasizes time of day).
Often tied to daily bias (using daily open, previous day high/low, etc.).
Target
Opposite liquidity pool (e.g., if raid was above → target below).
Often uses ADR levels, previous session lows, or equal lows/highs.
🔹 Example Flow (Bearish Unicorn)
Price trades above Asia High (liquidity sweep).
Then forms a market structure shift (BOS to downside).
A bearish FVG is left behind.
Price retraces into that FVG.
Entry short → target Asia Low or previous day low.
🔹 Why It’s Powerful
Filters fake breakouts → wait for liquidity + structure shift.
Adds precision → entry only on FVG retracement.
Works best when aligned with daily bias (discount/premium model).
🔹 Key Confluences for Unicorn
Session killzones (London Open, NY AM/PM).
Daily bias (above/below daily open).
Liquidity sweep (old highs/lows).
Fair Value Gap retracement.
Targets = liquidity pools.
✅ In short:
The ICT Unicorn Model = A “liquidity sweep + market structure shift + FVG retracement” setup, best taken in London/NY sessions, targeting opposite liquidity. It’s one of ICT’s cleanest intraday models for precision entries.
ict key level Pro++What Are ICT Key Levels?
ICT Key Levels are specific price reference points that institutions, market makers, and smart money use to set liquidity pools and trading ranges.
They aren’t random – they’re based on time, liquidity, and symmetry of price delivery.
Think of them like "road signs" in the market where big decisions happen (stop hunts, reversals, or continuations).
🔹 Major ICT Key Levels
Here are the most common ones:
1. Daily / Weekly / Monthly Highs & Lows
Previous day’s high/low
Previous week’s high/low
Previous month’s high/low
📌 Why important?
→ These act as liquidity pools. Stops gather here. Price often sweeps them before reversing.
2. Midpoint Levels (50% Equilibrium)
50% of the daily/weekly/monthly range.
ICT calls this equilibrium.
📌 Why important?
→ Above 50% = premium (expensive for buys, good for sells).
→ Below 50% = discount (cheap for buys, bad for sells).
3. Opening Price Levels
Daily Open → sets intraday bias.
Weekly Open → sets weekly bias.
Midnight Open (00:00 NY Time) → ICT uses this as a daily anchor.
📌 Why important?
→ If price stays above the daily/weekly open → bullish bias.
→ If below → bearish bias.
4. Session Highs & Lows
Asia Range High/Low
London Session High/Low
New York Session High/Low
📌 Why important?
→ Asia range often acts as liquidity for London to raid.
→ London high/low often becomes setup for NY session moves.
5. Yearly & Quarterly Highs/Lows
The yearly high/low is a massive liquidity pool.
Quarterly levels (Q1, Q2, Q3, Q4) also attract institutional activity.
📌 Why important?
→ Acts as long-term magnets for swing trading.
6. Figures & Round Numbers (Big Figures)
00.00, 50.00, 25.00, 75.00 levels.
Example: EURUSD → 1.1000, 1.1050, 1.1100.
📌 Why important?
→ Institutions like clean, even levels for orders.
🔹 How ICT Uses Key Levels
Liquidity Concept
Price raids old highs/lows to grab stops.
After liquidity grab → reversal or continuation.
Bias Filter
Above daily open? → bullish bias.
Below daily open? → bearish bias.
Confluence with Setups
Order blocks + Fair Value Gaps (FVGs) + Key Levels = high probability.
🔹 Example Trading Scenarios
London Judas Swing → Price raids Asian high (key level) then reverses for London trend.
Daily Bias → If price trades above daily open & rejects previous day’s low = bullish bias.
Weekly Expansion
Ict kill zone Pro++What is Season High / Low?
A Seasonal High/Low refers to price levels (highs or lows) that tend to form during specific times of the year (or season).
It’s based on the idea that markets have repeating cycles influenced by:
Economic reports (quarterly earnings, GDP releases, crop harvest cycles, etc.)
Institutional flows (quarterly rebalancing, end-of-year tax moves)
Natural/commodity cycles (oil demand in winter, crop harvest in fall, etc.)
🔹 Types of Seasonal Highs & Lows
Annual Season High/Low
Highest and lowest price of the year.
Example: EURUSD 2023 high/low.
Useful for long-term key levels.
Quarterly Season High/Low
Highs & lows of each 3-month quarter.
Institutions rebalance portfolios each quarter → causing strong moves.
Monthly Season High/Low
Highs & lows formed within each calendar month.
Often used for swing trading.
🔹 Why Season High/Low Matters
Liquidity Pools → Old highs/lows attract stop hunts (smart money loves to raid seasonal levels).
Bias Reference → If price is above yearly low but below yearly high → you know the market is “inside the yearly range.”
Institutional Targets → Many funds benchmark against yearly/quarterly levels.
Confluence → Combining OBs, FVGs, ADR, and seasonal highs/lows = stronger zones.
🔹 Example (ICT style use)
If price trades near the yearly low, expect either:
✅ A liquidity sweep (false break) before rally, or
✅ A breakdown continuation if institutions want discount pricing.
If price trades near the quarterly high, it’s often used as a “draw on liquidity” target.
🔹 How Traders Use Them
Mark Yearly High & Low (from January – December).
Mark Quarterly Highs/Lows (Q1, Q2, Q3, Q4).
Watch how price reacts when approaching these zones:
Liquidity sweeps
Reversals
Breakouts
✅ In short:
Season Highs & Lows = Key reference points from specific time periods (yearly, quarterly, monthly).
They act as institutional liquidity magnets and are critical for identifying long-term bias, liquidity raids, and market cycle transitions.
session High/Low (Triumm)// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © Triummm
//@version=6
indicator("Trading session High/Low (Triumm)", overlay=true)
//──────── Fixed timezone (NY clock = UTC‑4) ────────
sessTz = "Etc/GMT+4"
//──────── Toggle for swept-dot feature ─────────────
useSweepDots = input.bool(true, "Dot swept lines", tooltip="If ON, a level turns dotted once price sweeps it AFTER the session closes")
//──────── Session inputs ────────────────────────────────────────────────────
// Asia
showAsia = input.bool(true, "Show Asia", group="Asia Session")
asiaRange = input.session("1800-0300", "Asia Time (UTC‑4) 24h", group="Asia Session")
asiaCol = input.color(color.rgb(243, 33, 33), "Color", group="Asia Session")
asiaW = input.int(1, "Width", minval=1, maxval=5, group="Asia Session")
asiaStyleStr = input.string("Solid", "Line Style", options= , group="Asia Session")
asiaTransp = input.int(0, "Transparency (%)", minval=0, maxval=100, group="Asia Session")
// London
showLon = input.bool(true, "Show London", group="London Session")
lonRange = input.session("0300-0930", "London Time (UTC‑4) 24h", group="London Session")
lonCol = input.color(color.rgb(76, 153, 255), "Color", group="London Session")
lonW = input.int(1, "Width", minval=1, maxval=5, group="London Session")
lonStyleStr = input.string("Solid", "Line Style", options= , group="London Session")
lonTransp = input.int(0, "Transparency (%)", minval=0, maxval=100, group="London Session")
// New York
showNY = input.bool(true, "Show NY", group="NY Session")
nyRange = input.session("0930-1600", "NY Time (UTC‑4) 24h", group="NY Session")
nyCol = input.color(color.rgb(11, 173, 125), "Color", group="NY Session")
nyW = input.int(1, "Width", minval=1, maxval=5, group="NY Session")
nyStyleStr = input.string("Solid", "Line Style", options= , group="NY Session")
nyTransp = input.int(0, "Transparency (%)", minval=0, maxval=100, group="NY Session")
//──────── Helpers ───────────────────────────────────────────────────────────
styleFromStr(s) =>
s == "Dashed" ? line.style_dashed : s == "Dotted" ? line.style_dotted :line.style_solid
resetStyleIfNeeded(l, baseStyle) =>
if not na(l)
line.set_style(l, baseStyle)
// map styles
asiaStyle = styleFromStr(asiaStyleStr)
lonStyle = styleFromStr(lonStyleStr)
nyStyle = styleFromStr(nyStyleStr)
//──────── Asia state ────────────────────────────────────────────────────────
var float asia_hi = na
var float asia_lo = na
var int asia_hi_bi = na
var int asia_lo_bi = na
var line asia_hL = na
var line asia_lL = na
var bool asia_hi_sw = false
var bool asia_lo_sw = false
inAsia = not na(time(timeframe.period, asiaRange, sessTz))
newAsia = inAsia and not inAsia
if newAsia
line.delete(asia_hL), line.delete(asia_lL)
asia_hi := high, asia_lo := low
asia_hi_bi := na, asia_lo_bi := na
asia_hi_sw := false, asia_lo_sw := false
if showAsia and inAsia
if (na(asia_hi_bi) and bar_index > bar_index ) or high > asia_hi
asia_hi := high, asia_hi_bi := bar_index, asia_hi_sw := false
if na(asia_hL)
asia_hL := line.new(asia_hi_bi, asia_hi, asia_hi_bi + 1, asia_hi, xloc.bar_index, extend.right,color.new(asiaCol, asiaTransp), asiaStyle, asiaW)
else
line.set_xy1(asia_hL, asia_hi_bi, asia_hi)
line.set_xy2(asia_hL, asia_hi_bi + 1, asia_hi)
line.set_style(asia_hL, asiaStyle)
if (na(asia_lo_bi) and bar_index > bar_index ) or low < asia_lo
asia_lo := low, asia_lo_bi := bar_index, asia_lo_sw := false
if na(asia_lL)
asia_lL := line.new(asia_lo_bi, asia_lo, asia_lo_bi + 1, asia_lo, xloc.bar_index, extend.right,color.new(asiaCol, asiaTransp), asiaStyle, asiaW)
else
line.set_xy1(asia_lL, asia_lo_bi, asia_lo)
line.set_xy2(asia_lL, asia_lo_bi + 1, asia_lo)
line.set_style(asia_lL, asiaStyle)
// sweep detection AFTER session
canSweepAsia = useSweepDots and not inAsia
if showAsia
if canSweepAsia
if not asia_hi_sw and not na(asia_hi_bi) and high > asia_hi // strict break
line.set_style(asia_hL, line.style_dotted), asia_hi_sw := true
if not asia_lo_sw and not na(asia_lo_bi) and low < asia_lo // strict break
line.set_style(asia_lL, line.style_dotted), asia_lo_sw := true
else
resetStyleIfNeeded(asia_hL, asiaStyle)
resetStyleIfNeeded(asia_lL, asiaStyle)
if not showAsia
line.delete(asia_hL), line.delete(asia_lL)
asia_hL := na, asia_lL := na
//──────── London state ─────────────────────────────────────────────────────
var float lon_hi = na
var float lon_lo = na
var int lon_hi_bi = na
var int lon_lo_bi = na
var line lon_hL = na
var line lon_lL = na
var bool lon_hi_sw = false
var bool lon_lo_sw = false
inLon = not na(time(timeframe.period, lonRange, sessTz))
newLon = inLon and not inLon
if newLon
line.delete(lon_hL), line.delete(lon_lL)
lon_hi := high, lon_lo := low
lon_hi_bi := na, lon_lo_bi := na
lon_hi_sw := false, lon_lo_sw := false
if showLon and inLon
if (na(lon_hi_bi) and bar_index > bar_index ) or high > lon_hi
lon_hi := high, lon_hi_bi := bar_index, lon_hi_sw := false
if na(lon_hL)
lon_hL := line.new(lon_hi_bi, lon_hi, lon_hi_bi + 1, lon_hi,
xloc.bar_index, extend.right,
color.new(lonCol, lonTransp), lonStyle, lonW)
else
line.set_xy1(lon_hL, lon_hi_bi, lon_hi)
line.set_xy2(lon_hL, lon_hi_bi + 1, lon_hi)
line.set_style(lon_hL, lonStyle)
if (na(lon_lo_bi) and bar_index > bar_index ) or low < lon_lo
lon_lo := low, lon_lo_bi := bar_index, lon_lo_sw := false
if na(lon_lL)
lon_lL := line.new(lon_lo_bi, lon_lo, lon_lo_bi + 1, lon_lo,
xloc.bar_index, extend.right,
color.new(lonCol, lonTransp), lonStyle, lonW)
else
line.set_xy1(lon_lL, lon_lo_bi, lon_lo)
line.set_xy2(lon_lL, lon_lo_bi + 1, lon_lo)
line.set_style(lon_lL, lonStyle)
// sweep detection AFTER session
canSweepLon = useSweepDots and not inLon
if showLon
if canSweepLon
if not lon_hi_sw and not na(lon_hi_bi) and high > lon_hi
line.set_style(lon_hL, line.style_dotted), lon_hi_sw := true
if not lon_lo_sw and not na(lon_lo_bi) and low < lon_lo
line.set_style(lon_lL, line.style_dotted), lon_lo_sw := true
else
resetStyleIfNeeded(lon_hL, lonStyle)
resetStyleIfNeeded(lon_lL, lonStyle)
if not showLon
line.delete(lon_hL), line.delete(lon_lL)
lon_hL := na, lon_lL := na
//──────── New York state ───────────────────────────────────────────────────
var float ny_hi = na
var float ny_lo = na
var int ny_hi_bi = na
var int ny_lo_bi = na
var line ny_hL = na
var line ny_lL = na
var bool ny_hi_sw = false
var bool ny_lo_sw = false
inNY = not na(time(timeframe.period, nyRange, sessTz))
newNY = inNY and not inNY
if newNY
line.delete(ny_hL), line.delete(ny_lL)
ny_hi := high, ny_lo := low
ny_hi_bi := na, ny_lo_bi := na
ny_hi_sw := false, ny_lo_sw := false
if showNY and inNY
if (na(ny_hi_bi) and bar_index > bar_index ) or high > ny_hi
ny_hi := high, ny_hi_bi := bar_index, ny_hi_sw := false
if na(ny_hL)
ny_hL := line.new(ny_hi_bi, ny_hi, ny_hi_bi + 1, ny_hi,
xloc.bar_index, extend.right,
color.new(nyCol, nyTransp), nyStyle, nyW)
else
line.set_xy1(ny_hL, ny_hi_bi, ny_hi)
line.set_xy2(ny_hL, ny_hi_bi + 1, ny_hi)
line.set_style(ny_hL, nyStyle)
if (na(ny_lo_bi) and bar_index > bar_index ) or low < ny_lo
ny_lo := low, ny_lo_bi := bar_index, ny_lo_sw := false
if na(ny_lL)
ny_lL := line.new(ny_lo_bi, ny_lo, ny_lo_bi + 1, ny_lo,
xloc.bar_index, extend.right,
color.new(nyCol, nyTransp), nyStyle, nyW)
else
line.set_xy1(ny_lL, ny_lo_bi, ny_lo)
line.set_xy2(ny_lL, ny_lo_bi + 1, ny_lo)
line.set_style(ny_lL, nyStyle)
// sweep detection AFTER session
canSweepNY = useSweepDots and not inNY
if showNY
if canSweepNY
if not ny_hi_sw and not na(ny_hi_bi) and high > ny_hi
line.set_style(ny_hL, line.style_dotted), ny_hi_sw := true
if not ny_lo_sw and not na(ny_lo_bi) and low < ny_lo
line.set_style(ny_lL, line.style_dotted), ny_lo_sw := true
else
resetStyleIfNeeded(ny_hL, nyStyle)
resetStyleIfNeeded(ny_lL, nyStyle)
if not showNY
line.delete(ny_hL), line.delete(ny_lL)
ny_hL := na, ny_lL := na
OB old version by triummWhat is an Order Block?
In Smart Money Concepts (SMC), an order block (OB) is the last bullish or bearish candle before a strong impulsive move that breaks structure.
A Bullish OB → the last down candle before price moves strongly up.
A Bearish OB → the last up candle before price moves strongly down.
Order blocks represent areas where institutions or “smart money” placed large buy/sell orders.
🔹 What is a Volume Order Block?
A Volume Order Block adds a volume filter to standard order blocks.
Instead of just marking any OB, it highlights only those that are confirmed by abnormally high trading volume.
📌 Logic:
When banks/institutions create OBs, they usually inject big volume into the market.
Regular OBs may appear everywhere, but volume-based OBs filter out weak ones.
🔹 How to Identify a Volume Order Block
Find the OB normally (last opposite candle before strong move).
Check volume of that OB candle:
If volume is above average → strong OB (institutions active).
If volume is low/normal → weak OB (likely to fail).
🔹 Why Volume OB is Better
Filters fake OBs → many OBs form, but not all are institutional.
Higher probability zones → when price revisits that OB, it’s more likely to respect it.
Confluence with liquidity → strong OB + high volume often means liquidity grab + institutional entry.
🔹 Example (Bullish Volume OB)
Price is in a downtrend.
A bearish candle with unusually high volume forms.
Immediately after, price pushes up strongly, breaking structure.
That bearish candle is now a bullish volume order block.
When price returns to that level → strong buy reaction expected.
🔹 How Traders Use Volume OBs
Entries → wait for price to revisit the OB + volume support.
Stop Loss → usually below (bullish OB) or above (bearish OB).
Target → next liquidity pool, FVG, or imbalance.
Filtering → ignore OBs with low volume → less clutter on chart.
✅ In short:
A Volume Order Block = A normal OB + confirmed by unusually high volume.
It gives you higher quality supply & demand zones backed by institutional activity.
Gold Buy-Sell 30 MinHere’s a short, clear **description** you can use for your indicator 👇
**📌 Indicator Brief**
This custom **30-minute breakout indicator** is designed especially for **Gold (XAUUSD) Traders**.
It highlights three key candles of the day (IST 5:30 AM, 1:30 PM, and 6:30 PM), marking their **high and low levels** as support and resistance zones.
👉 By following this structured breakout strategy, traders can consistently capture **40–50 pips** in Gold with high accuracy, while keeping trading decisions simple and rule-based.
---
Supertrend Infinite Signal by SanthoshThis SuperTrend generates signals on every candle. Use this for double super trend strategy to generate signals for Algo trade. (Eg for Double Super trend Strategy, 10:3 and 20:2)
BTC vs USDT Dominance + Info//@version=5
indicator("BTC vs USDT Dominance + Info", overlay=false)
// Ambil data BTCUSDT (Bybit)
btc = request.security("BYBIT:BTCUSDT", timeframe.period, close)
// Ambil data USDT Dominance (USDT.D)
usdtDom = request.security("CRYPTOCAP:USDT.D", timeframe.period, close)
// Normalisasi biar skalanya sama
btcNorm = (btc - ta.lowest(btc, 200)) / (ta.highest(btc, 200) - ta.lowest(btc, 200)) * 100
usdtNorm = (usdtDom - ta.lowest(usdtDom, 200)) / (ta.highest(usdtDom, 200) - ta.lowest(usdtDom, 200)) * 100
// Plot garis
plot(btcNorm, color=color.green, title="BTC (Normalized)", linewidth=2)
plot(usdtNorm, color=color.red, title="USDT Dominance (Normalized)", linewidth=2)
// Deteksi arah candle terakhir
btcUp = ta.change(btc) > 0
btcDown = ta.change(btc) < 0
// Label info otomatis
if btcUp
label.new(bar_index, btcNorm, "BTC Naik → USDT Dominance Turun",
color=color.green, textcolor=color.white, style=label.style_label_up)
if btcDown
label.new(bar_index, btcNorm, "BTC Turun → USDT Dominance Naik",
color=color.red, textcolor=color.white, style=label.style_label_down)
ATR Multiple from MAThe purpose of this indicator is to spot an over stretched price.
A stock that has price ratio of over 4x when measured from closing price to 50 SMA is considered as over stretched. An entry at this level post a higher risk of a pullback.
MA Dist/ATR of over 4x will be marked as Red color.
Psych Zones – 000/250/500/750 (250-pip bands, 500 emphasis)Market makers Strategy that helps all traders make money overtime
TOTAL3ES/ETH Mean Reversion
Total market capitalization of altcoins excluding ETH and BTC divided by ETH
Bearish Breakaway Dual Session-FVGInspired by the FVG Concept:
This indicator is built on the Fair Value Gap (FVG) concept, with a focus on Consolidated FVG. Unlike traditional FVGs, this version only works within a defined session (e.g., ETH 18:00–17:00 or RTH 09:30–16:00).
See the Figure below as an example:
Bearish consolidated FVG & Bearish breakaway candle
Begins when a new intraday high is printed. After that, the indicator searches for the 1st bearish breakaway candle, which must have its high below the low of the intraday high candle. Any candles in between are part of the consolidated FVG zone. Once the 1st breakaway forms, the indicator will shades the candle’s range (high to low). Then it will use this candle as an anchor to search for the 2nd, 3rd, etc. breakaways until the session ends.
Session Reset: Occurs at session close.
Repaint Behavior:
If a new intraday (or intra-session) high forms, earlier breakaway patterns are wiped, and the system restarts from the new low.
Counter:
A session-based counter at the top of the chart displays how many bullish consolidated FVGs have formed.
Settings
• Session Setup:
Choose ETH, RTH, or custom session. The indicator is designed for CME futures in New York timezone, but can be adjusted for other markets.
If nothing appears on your chart, check if you loaded it during an inactive session (e.g., weekend/Friday night).
• Max Zones to Show:
Default = 3 (recommended). You can increase, but 3 zones are usually most useful.
• Timeframe:
Best on 1m, 5m, or 15m. (If session range is big, try higher time frame)
Usage:
See this figure as an example
1. Avoid Trading in Wrong Direction
• No Bearish breakaway = No Short trade.
• Prevents the temptation to countertrade in strong uptrends.
2. Catch the Trend Reversal
• When a bearish breakaway appears after an intraday high, it signals a potential reversal.
• You will need adjust position sizing, watch out liquidity hunt, and place stop loss.
• Best entries of your preferred choices: (this is your own trading edge)
Retest
Breakout
Engulf
MA cross over
Whatever your favorite approach
• Reversal signal is the strongest when price stays within/below the breakaway candle’s
range. Weak if it breaks above.
3. Higher Timeframe Confirmation
• 1m can give false reversals if new lows keep forming.
• 5m often provides cleaner signals and avoids premature reversals.
Summary
This indicator offers 3 main advantages:
1. Prevents wrong-direction trades.
2. Confirms trend entry after reversal signals.
3. Filters false positives using higher timeframes.
Failed example:
Usually happen if you are countering a strong trend too early and using 1m time frame
Last Mention:
The indicator is only used for bearish side trading.
Scalp - Victor Trader//@version=6
indicator("Scalp Fluxo Simples v6 — OP1/OP2/OP3", overlay=true, max_labels_count=500)
// === Inputs básicos ===
lenVol = input.int(50, "Janela do Volume", minval=10)
zVolThr = input.float(2.2,"Z-score mínimo p/ Clímax", step=0.1)
imbThr = input.float(0.65,"Desequilíbrio |Δ|/Vol", step=0.01)
sweepLookbk = input.int(20, "Lookback p/ Varredura", minval=5)
wickMult = input.float(1.0,"Pavio dominante vs Corpo (x)", step=0.1)
confirmClose = input.bool(true, "Confirmar só no fechamento? (anti-repaint)")
cooldownBars = input.int(8, "Cooldown OP1 (barras mínimas entre OP1)", minval=0)
// --- OP2 (reteste) ---
useOP2 = input.bool(true, "Ativar OP2 (reteste da zona)?")
retestBars = input.int(8, "Janela p/ reteste (barras após OP1)", minval=1)
// --- OP3 (confirmação do candle seguinte) ---
useOP3 = input.bool(true, "Ativar OP3 (confirmação do candle seguinte)?")
// === Funções utilitárias ===
zscore(src, len) =>
m = ta.sma(src, len)
s = ta.stdev(src, len)
s := s == 0.0 ? 1e-10 : s
(src - m) / s
// === Proxy de delta (tick rule) ===
chg = close - close
delta = volume * math.sign(chg)
// === Clímax de volume ===
zVol = zscore(volume, lenVol)
climax = zVol >= zVolThr
// === Pavio dominante ===
body = math.abs(close - open)
topWick = high - math.max(open, close)
botWick = math.min(open, close) - low
topDom = topWick > body * wickMult
botDom = botWick > body * wickMult
// === Desequilíbrio ===
imbalance = math.abs(delta) / math.max(volume, 1.0)
buyImb = imbalance >= imbThr and delta > 0
sellImb = imbalance >= imbThr and delta < 0
// === Sweeps ===
prevHH = ta.highest(high, sweepLookbk)
prevLL = ta.lowest(low, sweepLookbk)
sweepHigh = high > prevHH
sweepLow = low < prevLL
okBar = not confirmClose or barstate.isconfirmed
// === OP1 (sinal raiz) ===
topOP1_raw = climax and buyImb and sweepHigh and topDom and okBar
bottomOP1_raw = climax and sellImb and sweepLow and botDom and okBar
// Cooldown OP1
var int lastTopOP1 = na
var int lastBotOP1 = na
topOP1 = topOP1_raw and (na(lastTopOP1) or bar_index - lastTopOP1 > cooldownBars)
bottomOP1 = bottomOP1_raw and (na(lastBotOP1) or bar_index - lastBotOP1 > cooldownBars)
if topOP1
lastTopOP1 := bar_index
if bottomOP1
lastBotOP1 := bar_index
// === Guardar ZONAS do pavio do OP1 para OP2 ===
var float lastTopZoneLow = na
var float lastTopZoneHigh = na
var int lastTopBar = na
var float lastBotZoneLow = na
var float lastBotZoneHigh = na
var int lastBotBar = na
if topOP1
lastTopZoneLow := math.max(open, close)
lastTopZoneHigh := high
lastTopBar := bar_index
if bottomOP1
lastBotZoneLow := low
lastBotZoneHigh := math.min(open, close)
lastBotBar := bar_index
// === OP2 (reteste da zona do pavio dentro de N barras) ===
topOP2 = useOP2 and not na(lastTopBar) and bar_index > lastTopBar and (bar_index - lastTopBar <= retestBars) and high >= lastTopZoneLow and low <= lastTopZoneHigh and close < open and okBar
bottomOP2 = useOP2 and not na(lastBotBar) and bar_index > lastBotBar and (bar_index - lastBotBar <= retestBars) and high >= lastBotZoneLow and low <= lastBotZoneHigh and close > open and okBar
// === OP3 (confirmação do candle seguinte) ===
topOP3 = useOP3 and topOP1 and close < low and okBar
bottomOP3 = useOP3 and bottomOP1 and close > high and okBar
// === Plots ===
plotshape(series=topOP1, title="TOP OP1", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="TOP1")
plotshape(series=topOP2, title="TOP OP2", style=shape.triangledown, location=location.abovebar, color=color.maroon, size=size.small, text="TOP2")
plotshape(series=topOP3, title="TOP OP3", style=shape.triangledown, location=location.abovebar, color=color.orange, size=size.small, text="TOP3")
plotshape(series=bottomOP1, title="FND OP1", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.small, text="FND1")
plotshape(series=bottomOP2, title="FND OP2", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="FND2")
plotshape(series=bottomOP3, title="FND OP3", style=shape.triangleup, location=location.belowbar, color=color.teal, size=size.small, text="FND3")
// === Alertas ===
alertcondition(condition=topOP1, title="TOP OP1", message="TOP OP1 (clímax+sweep+pavio)")
alertcondition(condition=topOP2, title="TOP OP2", message="TOP OP2 (reteste da zona)")
alertcondition(condition=topOP3, title="TOP OP3", message="TOP OP3 (confirmação)")
alertcondition(condition=bottomOP1, title="FND OP1", message="FND OP1 (clímax+sweep+pavio)")
alertcondition(condition=bottomOP2, title="FND OP2", message="FND OP2 (reteste da zona)")
alertcondition(condition=bottomOP3, title="FND OP3", message="FND OP3 (confirmação)")
Rolling Correlation BTC vs Hedge AssetsRolling Correlation BTC vs Hedge Assets
Overview
This indicator calculates and plots the rolling correlation between Bitcoin (BTC) returns and several key hedge assets:
• XAUUSD (Gold)
• EURUSD (proxy for DXY, U.S. Dollar Index)
• VIX (Volatility Index)
• TLT (20y U.S. Treasury Bonds ETF)
By monitoring these dynamic correlations, traders can identify whether BTC is moving in sync with risk assets or decoupling as a hedge, and adjust their trading strategy accordingly.
How it works
1. Computes returns for BTC and each asset using percentage change.
2. Uses the rolling correlation function (ta.correlation) over a configurable window length (default = 12 bars).
3. Plots each correlation as a separate colored line (Gold = Yellow, EURUSD = Blue, VIX = Red, TLT = Green).
4. Adds threshold levels at +0.3 and -0.3 to help classify correlation regimes.
How to use it
• High positive correlation (> +0.3): BTC is moving together with the asset (risk-on behavior).
• Near zero (-0.3 to +0.3): BTC is showing little to no correlation — neutral/independent moves.
• Negative correlation (< -0.3): BTC is moving in the opposite direction — potential hedge opportunity.
Practical strategies:
• Watch BTC vs VIX: a spike in volatility (VIX ↑) usually coincides with BTC selling pressure.
• Track BTC vs EURUSD: stronger USD often puts downside pressure on BTC.
• Observe BTC vs Gold: during “flight to safety” events, gold rises while BTC weakens.
• Monitor BTC vs TLT: rising yields (falling TLT) often align with BTC weakness.
Inputs
• Window Length (bars): Number of bars used to calculate rolling correlations (default = 12).
• Comparison Timeframe: Default = 5m. Can be changed to align with your intraday or swing trading style.
Notes
• Works best on intraday charts (1m, 5m, 15m) for scalping and short-term setups.
• Use correlations as context, not standalone signals — combine with volume, VWAP, and price action.
• Correlations are dynamic; they can switch regimes quickly during macro events (CPI, NFP, FOMC).
This tool is designed for traders who want to manage risk exposure by monitoring whether BTC is behaving as a risk-on asset or hedge, and to exploit opportunities during decoupling phases.
Pr0fit Circle 0rbThis indicator automatically plots dynamic support and resistance zones on the chart using swing highs and swing lows. The levels are drawn as dotted lines that extend into the future, making it easy to identify key areas where price may react.
Berlin High/Low bis 15:30dayHigh := na(dayHigh) ? high : math.max(dayHigh, high)
dayLow := na(dayLow) ? low : math.min(dayLow, low)
CHart_This FVGThis script will work on any time frame, and auto plots the classic ICT "fair value gaps", or imbalances, that result from a three candle formation wherein the middle candle body extends beyond the highs and lows of the end candles, leaving no overlap of the first and last candle wicks. Bullish imbalances are green, and bearish are red. Plotted zones will automatically close once a candle closure fully violates the imbalance zone with a close beyond its borders.