MTF Round Level Reversal [RunRox]🧲 MTF Round Level Reversal is an indicator designed to highlight price levels on the chart where the market encountered significant resistance or support at round numbers, failing to break through large clusters of orders.
In many cases, price revisits these round-number levels to absorb the remaining liquidity, offering potential reversal or continuation trade opportunities.
✏️ EXAMPLE
Here’s an example demonstrating how this indicator works and how its logic is structured:
As shown in the screenshot above, price encountered resistance at round-number levels, clearly reacting off these areas.
Afterward, the market pulled back, presenting opportunities to enter trades targeting these previously established open levels.
This logic is based on the observation that price often seeks to revisit these open round-number levels due to the residual liquidity resting there.
While effective across various markets, this indicator performs particularly well with stocks or assets priced at higher values.
For a level to appear on the chart, price must first encounter a round-number value and clearly reverse from it, leaving a visible reaction on the chart. After this occurs, the indicator will mark this level as fully formed and display it as an active reversal area.
⚙️ SETTINGS
🔷 Timeframe – Choose any timeframe from which you’d like the indicator to source level data.
🔷 Period – Defines the number of candles required on both sides (left and right) to confirm and fully form a level.
🔷 Rounding Level – Adjusts price rounding precision when detecting levels (from 0.0001 up to 5000).
🔷 Color – Customize the color and transparency of displayed levels.
🔷 Line Style – Select the desired line style for level visualization.
🔷 Label Size – Set the font size for the level labels displayed on the chart.
🔷 Move Label to the Right – Move level labels to the right side of the screen for better visibility.
🔷 Label Offset – Specifies how many bars labels should be offset from the chart’s right edge.
🔷 Delete Filled Level – Automatically removes levels from the chart after they’ve been revisited or filled.
🔷 Calculation Bars – Determines the number of recent bars considered when calculating and identifying levels.
🔶 There are numerous ways to apply this indicator in your trading strategy. You can look for trades targeting these round-number levels or identify reversal setups forming at these high-liquidity zones. The key insight is understanding that these levels represent significant liquidity areas, which price frequently revisits and retests.
We greatly appreciate your feedback and suggestions to further improve and enhance this indicator!
Candlestick analysis
ELVTDFinance LiquidityThe Liquidity Levels Indicator helps traders identify key price levels where significant liquidity is likely to be present. These levels act as zones of potential support and resistance, where institutional orders, stop hunts, and price reversals often occur.
Key Features:
✅ Auto-Detection of Liquidity Zone s – Identifies swing highs, swing lows, and consolidation areas where liquidity pools exist.
✅ Dynamic Support & Resistance – Highlights areas where price is likely to react due to high order flow concentration.
✅ Stop Hunt Detection – Spots potential liquidity grabs where smart money targets stop-loss orders.
✅ Works on Any Timeframe – Suitable for scalping, day trading, and swing trading.
This indicator is perfect for traders looking to align their entries with institutional moves and improve their trade execution by anticipating liquidity-based price reactions.
Zona Momentum Strategysilakan dipakai sepuasnya untuk hasil maksimal. jadikan momentum buy dan sell dengan baik dan jangan bingung
OBV Reversal//@version=6
indicator('OBV Divergence Indicator On Balance Vol Reversal', shorttitle = 'TFlab OBV Divergence', overlay = true, max_bars_back = 5000, max_labels_count = 500, max_lines_count = 500)
// User Inputs
n = input.int(title = 'Fractal Periods', defval = 4, minval = 2, group = 'Logic Setting')
emaLength = input.int(50, title = 'EMA Length', minval = 1, group = 'Trend Settings')
Show_Table = input.string('Yes', 'Show Table', options = , group = 'Display Setting')
Show_Label = input.string('Yes', 'Show Label', options = , group = 'Display Setting')
// Indicators
ATR = ta.atr(55)
Hist = ta.obv
EMA = ta.ema(close, emaLength)
// Trend Identification
up_trend = close > EMA
down_trend = close < EMA
// Fractal Detection (Fix: Use `not na` to check valid pivots)
UpPivot = ta.pivothigh(n, n)
DownPivot = ta.pivotlow(n, n)
upFractal = not na(UpPivot)
downFractal = not na(DownPivot)
// Bearish Divergence Calculation (Sell Signal Fix)
High_Last_Price = ta.valuewhen(upFractal, high, 0)
High_Per_Price = ta.valuewhen(upFractal, high, 1)
High_Last_Hist = ta.valuewhen(upFractal, Hist, 0)
High_Per_Hist = ta.valuewhen(upFractal, Hist, 1)
High_Last_Bar = ta.valuewhen(upFractal, bar_index, 0)
High_Per_Bar = ta.valuewhen(upFractal, bar_index, 1)
Time_Condition_Bear = High_Last_Bar + 30 > bar_index
Last_Bearish_Divergece = if Time_Condition_Bear and High_Last_Bar - High_Per_Bar < 30
High_Last_Price > High_Per_Price and High_Last_Hist < High_Per_Hist
else
false
// Bullish Divergence Calculation (Buy Signal)
Low_Last_Price = ta.valuewhen(downFractal, low, 0)
Low_Per_Price = ta.valuewhen(downFractal, low, 1)
Low_Last_Hist = ta.valuewhen(downFractal, Hist, 0)
Low_Per_Hist = ta.valuewhen(downFractal, Hist, 1)
Low_Last_Bar = ta.valuewhen(downFractal, bar_index, 0)
Low_Per_Bar = ta.valuewhen(downFractal, bar_index, 1)
Time_Condition_Bull = Low_Last_Bar + 30 > bar_index
Last_Bullish_Divergece = if Time_Condition_Bull and Low_Last_Bar - Low_Per_Bar < 30
Low_Last_Price < Low_Per_Price and Low_Last_Hist > Low_Per_Hist
else
false
// ✅ Fixed: Plot Divergence Lines & Labels
plotDivergence() =>
if Last_Bullish_Divergece
line.new(x1 = Low_Per_Bar, y1 = Low_Per_Price, x2 = Low_Last_Bar, y2 = Low_Last_Price, color = color.green, width = 2)
if Show_Label == 'Yes'
label.new(x = Low_Last_Bar, y = Low_Last_Price, text = '+RD', color = color.green, textcolor = color.white, size = size.tiny, style = label.style_label_up)
if Last_Bearish_Divergece
line.new(x1 = High_Per_Bar, y1 = High_Per_Price, x2 = High_Last_Bar, y2 = High_Last_Price, color = color.red, width = 2)
if Show_Label == 'Yes'
label.new(x = High_Last_Bar, y = High_Last_Price, text = '-RD', color = color.red, textcolor = color.white, size = size.tiny, style = label.style_label_down)
plotDivergence()
OBV Divergence Indicator [TradingFinder] On Balance Vol Reversal//@version=6
indicator('OBV Divergence Indicator On Balance Vol Reversal', shorttitle = 'TFlab OBV Divergence', overlay = true, max_bars_back = 5000, max_labels_count = 500, max_lines_count = 500)
// User Inputs
n = input.int(title = 'Fractal Periods', defval = 4, minval = 2, group = 'Logic Setting')
emaLength = input.int(50, title = 'EMA Length', minval = 1, group = 'Trend Settings')
Show_Table = input.string('Yes', 'Show Table', options = , group = 'Display Setting')
Show_Label = input.string('Yes', 'Show Label', options = , group = 'Display Setting')
// Indicators
ATR = ta.atr(55)
Hist = ta.obv
EMA = ta.ema(close, emaLength)
// Trend Identification
up_trend = close > EMA
down_trend = close < EMA
// Fractal Detection (Fix: Use `not na` to check valid pivots)
UpPivot = ta.pivothigh(n, n)
DownPivot = ta.pivotlow(n, n)
upFractal = not na(UpPivot)
downFractal = not na(DownPivot)
// Bearish Divergence Calculation (Sell Signal Fix)
High_Last_Price = ta.valuewhen(upFractal, high, 0)
High_Per_Price = ta.valuewhen(upFractal, high, 1)
High_Last_Hist = ta.valuewhen(upFractal, Hist, 0)
High_Per_Hist = ta.valuewhen(upFractal, Hist, 1)
High_Last_Bar = ta.valuewhen(upFractal, bar_index, 0)
High_Per_Bar = ta.valuewhen(upFractal, bar_index, 1)
Time_Condition_Bear = High_Last_Bar + 30 > bar_index
Last_Bearish_Divergece = if Time_Condition_Bear and High_Last_Bar - High_Per_Bar < 30
High_Last_Price > High_Per_Price and High_Last_Hist < High_Per_Hist
else
false
// Bullish Divergence Calculation (Buy Signal)
Low_Last_Price = ta.valuewhen(downFractal, low, 0)
Low_Per_Price = ta.valuewhen(downFractal, low, 1)
Low_Last_Hist = ta.valuewhen(downFractal, Hist, 0)
Low_Per_Hist = ta.valuewhen(downFractal, Hist, 1)
Low_Last_Bar = ta.valuewhen(downFractal, bar_index, 0)
Low_Per_Bar = ta.valuewhen(downFractal, bar_index, 1)
Time_Condition_Bull = Low_Last_Bar + 30 > bar_index
Last_Bullish_Divergece = if Time_Condition_Bull and Low_Last_Bar - Low_Per_Bar < 30
Low_Last_Price < Low_Per_Price and Low_Last_Hist > Low_Per_Hist
else
false
// ✅ Fixed: Plot Divergence Lines & Labels
plotDivergence() =>
if Last_Bullish_Divergece
line.new(x1 = Low_Per_Bar, y1 = Low_Per_Price, x2 = Low_Last_Bar, y2 = Low_Last_Price, color = color.green, width = 2)
if Show_Label == 'Yes'
label.new(x = Low_Last_Bar, y = Low_Last_Price, text = '+RD', color = color.green, textcolor = color.white, size = size.tiny, style = label.style_label_up)
if Last_Bearish_Divergece
line.new(x1 = High_Per_Bar, y1 = High_Per_Price, x2 = High_Last_Bar, y2 = High_Last_Price, color = color.red, width = 2)
if Show_Label == 'Yes'
label.new(x = High_Last_Bar, y = High_Last_Price, text = '-RD', color = color.red, textcolor = color.white, size = size.tiny, style = label.style_label_down)
plotDivergence()
9 & 15 EMA + ADX Strategy**📌 9 & 15 EMA + ADX Strategy | Trend-Following Trading System**
This script is a **highly effective trend-following strategy** that combines **Exponential Moving Averages (9 EMA & 15 EMA)** with **ADX (Average Directional Index)** to filter out weak trends and improve accuracy.
🔹 **How it Works:**
✅ A **Buy Signal** is generated when:
- The price **closes above 9 EMA** and is also above 15 EMA.
- **ADX is greater than 20**, confirming a strong trend.
✅ A **Sell Signal** is generated when:
- The price **closes below 9 EMA** and is also below 15 EMA.
- **ADX is greater than 20**, confirming bearish strength.
🎯 **Best Use Cases:**
- Works well for **Forex, Crypto, Stocks, and Indices**.
- Optimized for **Scalping, Intraday, and Swing Trading**.
- Effective on **5min, 15min, 1H, and 4H timeframes**.
📊 **Features:**
✔️ **Filters out false breakouts** using ADX confirmation.
✔️ **Backtest-ready** with TradingView's Strategy Tester.
✔️ **Fully customizable parameters** for different market conditions.
✔️ Can be used alongside **Support & Resistance levels** for better accuracy.
🚀 **Try it now and enhance your trading strategy!**
OBV Divergence Indicator [TradingFinder] On Balance Vol ReversalALSFKJGDGFJHSADGFHGDHFGhgfjhsagfjhasgdgasdgjhsagdhjasgdhjasgdgasdg
ICT Silver Bullet [Eyman_azayr]//@version=5
indicator("ICT Silver Bullet ", shorttitle='Eyman_azayr - ICT Silver Bullet', max_lines_count=500, max_boxes_count=500, max_labels_count=500, overlay=true)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
left = input.int ( 5 , '' , minval=1, maxval=20, group='Swings settings (left)')
showSB = input.bool ( true , 'Show SB session', inline='SB' , group='Silver Bullet session' )
col_SB = input.color(#b2b5be50, ' ' , inline='SB' , group='Silver Bullet session' )
choice = input.string('Super-Strict', '' , inline='fvg' , group='FVG'
, options = )
superstrict = choice == 'Super-Strict'
iTrend = choice != 'All FVG'
strict = choice == 'Strict'
stricty = superstrict or strict
cBullFVG = input.color (#4dd0e160, '' , inline='fvg' , group='FVG' )
cBearFVG = input.color (#ffc1b160, '' , inline='fvg' , group='FVG' )
extend = input.bool ( true , 'extend' , inline='fvg' , group='FVG' )
opt = input.string('previous session (similar)','', inline='TG' , group='Targets - Support/Resistance'
, options = )
prev = opt == 'previous session (any)'
cSupLine = input.color (#b22833 , '' , inline='TG' , group='Targets - Support/Resistance')
cResLine = input.color (#3e89fa , '' , inline='TG' , group='Targets - Support/Resistance')
keep = input.bool (true , 'Keep lines (only in strict mode)', group='Targets - Support/Resistance')
showT = input.bool (false, title = 'MSS ~ session' , group='Show' )
showZZ = input.bool (false, title = 'Trend' , group='Show' )
//show_minFr= input.bool (false, title = 'Minimum Trade Framework' , group='Show' )
n = bar_index
maxSize = 250
minT = syminfo.mintick
//------------------------------------------------------------------------------
//UDT's
//-----------------------------------------------------------------------------{
type piv
int b
float p
bool br
type ZZ
int d
int x
float y
line l
type FVG
box box
bool active
bool current
type actLine
line ln
bool active
type aPiv
piv GN_swingH
piv GN_swingL
float GN_mnPiv
float GN_mxPiv
line GN_targHi
line GN_targLo
piv LN_swingH
piv LN_swingL
float LN_mnPiv
float LN_mxPiv
line LN_targHi
line LN_targLo
piv AM_swingH
piv AM_swingL
float AM_mnPiv
float AM_mxPiv
line AM_targHi
line AM_targLo
piv PM_swingH
piv PM_swingL
float PM_mnPiv
float PM_mxPiv
line PM_targHi
line PM_targLo
//-----------------------------------------------------------------------------}
//Variables
//-----------------------------------------------------------------------------{
var aPiv a = aPiv.new(
GN_swingH = array.new(1, piv.new(na, na))
, GN_swingL = array.new(1, piv.new(na, na))
, GN_mnPiv = 10e6
, GN_mxPiv = 0
, GN_targHi = array.new()
, GN_targLo = array.new()
, LN_swingH = array.new(1, piv.new(na, na))
, LN_swingL = array.new(1, piv.new(na, na))
, LN_mnPiv = 10e6
, LN_mxPiv = 0
, LN_targHi = array.new()
, LN_targLo = array.new()
, AM_swingH = array.new(1, piv.new(na, na))
, AM_swingL = array.new(1, piv.new(na, na))
, AM_mnPiv = 10e6
, AM_mxPiv = 0
, AM_targHi = array.new()
, AM_targLo = array.new()
, PM_swingH = array.new(1, piv.new(na, na))
, PM_swingL = array.new(1, piv.new(na, na))
, PM_mnPiv = 10e6
, PM_mxPiv = 0
, PM_targHi = array.new()
, PM_targLo = array.new()
)
var ZZ aZZ =
ZZ.new(
array.new < int >(maxSize, 0),
array.new < int >(maxSize, 0),
array.new < float >(maxSize, na),
array.new < line >(maxSize, na)
)
var FVG bFVG_bull = array.new(
1, FVG.new(
box = box.new(na, na, na, na)
, active = na
)
)
var FVG bFVG_bear = array.new(
1, FVG.new(
box = box.new(na, na, na, na)
, active = na
)
)
var min = 10e6
var max = 0.
//var minTrFr = line.new(na, na, na, na, style=line.style_arrow_right, color=color.yellow )
//var maxTrFr = line.new(na, na, na, na, style=line.style_arrow_left , color=color.fuchsia)
var hilo = array.from(0, 10e6)
var aTrend= array.from(0)
var l_SB = array.new< line>()
var highs = array.new()
var lows = array.new()
var tab = table.new(position = position.top_right, columns = 1, rows = 1, bgcolor = color(na), border_width = 1)
//-----------------------------------------------------------------------------}
//General calculations
//-----------------------------------------------------------------------------{
ph = ta.pivothigh(left, 1)
pl = ta.pivotlow (left, 1)
//-----------------------------------------------------------------------------}
//Methods/Functions
//-----------------------------------------------------------------------------{
method type(string str) =>
( syminfo.type == 'stock' and str == 'stock' ) or
(syminfo.type == 'futures' and str == 'futures') or
(syminfo.type == 'index' and str == 'index' ) or
(syminfo.type == 'forex' and str == 'forex' ) or
(syminfo.type == 'crypto' and str == 'crypto' ) or
(syminfo.type == 'fund' and str == 'fund' )
method timeSess(string timezone, string session) => time(timeframe.period, session, timezone)
//Silver Bullet Periods
SB_LN_per = "Europe/Moscow".timeSess("1100-1200") // period/session ~ The London Open Silver Bullet (11 AM — 12 PM Moscow time)
SB_AM_per = "Europe/Moscow".timeSess("1800-1900") // period/session ~ The AM Session Silver Bullet (6 PM — 7 PM Moscow time)
SB_PM_per = "Europe/Moscow".timeSess("2200-2300") // period/session ~ The PM Session Silver Bullet (10 PM — 11 PM Moscow time)
is_in_SB = SB_LN_per or SB_AM_per or SB_PM_per
strSB = is_in_SB and not is_in_SB
strLN = SB_LN_per and not SB_LN_per
strAM = SB_AM_per and not SB_AM_per
strPM = SB_PM_per and not SB_PM_per
endSB = not is_in_SB and is_in_SB
endLN = not SB_LN_per and SB_LN_per
endAM = not SB_AM_per and SB_AM_per
endPM = not SB_PM_per and SB_PM_per
minimum_trade_framework =
'forex'.type () ? syminfo.mintick * 15 * 10 :
'index'.type () or
'futures'.type() ? syminfo.mintick * 40 : 0
method in_out(ZZ aZZ, int d, int x1, float y1, int x2, float y2) =>
aZZ.d.unshift(d), aZZ.x.unshift(x2), aZZ.y.unshift(y2), aZZ.d.pop(), aZZ.x.pop(), aZZ.y.pop()
if showZZ
aZZ.l.unshift(line.new(x1, y1, x2, y2, color= color.new(color.blue, 50))), aZZ.l.pop().delete()
f_setTrend() =>
//
MSS_dir = aTrend.get(0)
iH = aZZ.d.get(2) == 1 ? 2 : 1
iL = aZZ.d.get(2) == -1 ? 2 : 1
//
switch
// MSS Bullish
close > aZZ.y.get(iH) and aZZ.d.get(iH) == 1 and MSS_dir < 1 =>
aTrend.set(0, 1)
// MSS Bearish
close < aZZ.y.get(iL) and aZZ.d.get(iL) == -1 and MSS_dir > -1 =>
aTrend.set(0, -1)
f_swings(start, end, str, col, min, max) =>
//
max_bars_back(time, 1000)
var int MSS_dir = aTrend.get(0)
//
x2 = n -1
piv swingH = na
piv swingL = na
float mnPiv = na
float mxPiv = na
line targHi = na
line targLo = na
bool active = na
switch str
'GN' =>
swingH := a.GN_swingH
swingL := a.GN_swingL
mnPiv := a.GN_mnPiv
mxPiv := a.GN_mxPiv
targHi := a.GN_targHi
targLo := a.GN_targLo
active := is_in_SB
'LN' =>
swingH := a.LN_swingH
swingL := a.LN_swingL
mnPiv := a.LN_mnPiv
mxPiv := a.LN_mxPiv
targHi := a.LN_targHi
targLo := a.LN_targLo
active := SB_LN_per
'AM' =>
swingH := a.AM_swingH
swingL := a.AM_swingL
mnPiv := a.AM_mnPiv
mxPiv := a.AM_mxPiv
targHi := a.AM_targHi
targLo := a.AM_targLo
active := SB_AM_per
'PM' =>
swingH := a.PM_swingH
swingL := a.PM_swingL
mnPiv := a.PM_mnPiv
mxPiv := a.PM_mxPiv
targHi := a.PM_targHi
targLo := a.PM_targLo
active := SB_PM_per
if start
hilo.set(0, 0 )
hilo.set(1, 10e6)
if stricty ? not keep : true
while highs.size() > 0
get=highs.pop()
get.ln.delete()
while lows.size() > 0
get= lows.pop()
get.ln.delete()
while targHi.size() > 0
targHi.pop().delete()
while targLo.size() > 0
targLo.pop().delete()
while a.GN_targHi.size() > 0
a.GN_targHi.pop().delete()
while a.LN_targHi.size() > 0
a.LN_targHi.pop().delete()
while a.AM_targHi.size() > 0
a.AM_targHi.pop().delete()
while a.PM_targHi.size() > 0
a.PM_targHi.pop().delete()
while a.GN_targLo.size() > 0
a.GN_targLo.pop().delete()
while a.LN_targLo.size() > 0
a.LN_targLo.pop().delete()
while a.AM_targLo.size() > 0
a.AM_targLo.pop().delete()
while a.PM_targLo.size() > 0
a.PM_targLo.pop().delete()
if active
hilo.set(0, math.max(hilo.get(0), high))
hilo.set(1, math.min(hilo.get(1), low ))
if ph
if ph > mxPiv
mxPiv := ph
if swingH.size() > 0
for i = swingH.size() -1 to 0
get = swingH.get(i)
if ph >= get.p
swingH.remove(i)
swingH.unshift(piv.new(n -1, ph))
if str == 'GN' or str == 'LN'
dir = aZZ.d.get (0)
x1 = aZZ.x.get (0)
y1 = aZZ.y.get (0)
y2 = nz(high )
//
if dir < 1 // if previous point was a pl, add, and change direction ( 1)
aZZ.in_out( 1, x1, y1, x2, y2)
else
if dir == 1 and ph > y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if showZZ
aZZ.l.get(0).set_xy2 (x2 , y2)
if pl
if pl < mnPiv
mnPiv := pl
if swingL.size() > 0
for i = swingL.size() -1 to 0
get = swingL.get(i)
if pl <= get.p
swingL.remove(i)
swingL.unshift(piv.new(n -1, pl))
//
if str == 'GN' or str == 'LN'
dir = aZZ.d.get (0)
x1 = aZZ.x.get (0)
y1 = aZZ.y.get (0)
y2 = nz(low )
//
if dir > -1 // if previous point was a ph, add, and change direction (-1)
aZZ.in_out(-1, x1, y1, x2, y2)
else
if dir == -1 and pl < y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if showZZ
aZZ.l.get(0).set_xy2 (x2 , y2)
//
iH = aZZ.d.get(2) == 1 ? 2 : 1
iL = aZZ.d.get(2) == -1 ? 2 : 1
//
switch
// MSS Bullish
close > aZZ.y.get(iH) and aZZ.d.get(iH) == 1 and MSS_dir < 1 =>
MSS_dir := 1
if active and showT
line.new(aZZ.x.get(iH), aZZ.y.get(iH), n, aZZ.y.get(iH), color=cResLine, width=2)
// MSS Bearish
close < aZZ.y.get(iL) and aZZ.d.get(iL) == -1 and MSS_dir > -1 =>
MSS_dir := -1
if active and showT
line.new(aZZ.x.get(iL), aZZ.y.get(iL), n, aZZ.y.get(iL), color=cSupLine, width=2)
if end
sz = swingH.size()
if sz > 0
for i = 0 to sz -1
y = swingH.get(i).p
if y > (stricty ? min : hilo.get(0))
targHi.unshift(line.new(swingH.get(i).b, y, n, y, color=cResLine))
highs.unshift(actLine.new(line.new( n, y, n, y, color=cResLine), true))
sz := swingL.size()
if sz > 0
for i = 0 to sz -1
y = swingL.get(i).p
if y < (stricty ? max : hilo.get(1))
targLo.unshift(line.new(swingL.get(i).b, y, n, y, color=cSupLine))
lows.unshift(actLine.new(line.new( n, y, n, y, color=cSupLine), true))
swingH.clear()
swingL.clear()
mnPiv := 10e6
mxPiv := 0
if showZZ
if ph or pl
aZZ.l.get(0).set_color(MSS_dir == 1 ? cResLine : cSupLine)
aTrend.set(0, MSS_dir)
//-------------------------------------------}
//Execution
//-------------------------------------------}
f_setTrend()
trend = aTrend.get(0)
//Targets
targetHi = false
targetLo = false
hSz = highs.size()
if hSz > 200
highs.pop().ln.delete()
hSz := highs.size()
if hSz > 0
for i = 0 to hSz -1
get = highs.get(i)
if get.active
get.ln.set_x2(n)
if high > get.ln.get_y2()
get.active := false
targetHi := true
lSz = lows.size()
if lSz > 200
lows.pop().ln.delete()
lSz := lows.size()
if lSz > 0
for i = 0 to lSz -1
get = lows.get(i)
if get.active
get.ln.set_x2(n)
if low < get.ln.get_y2()
get.active := false
targetLo := true
if l_SB.size() > 100
l_SB.pop().delete()
// SB session vLines & 'lock' previous FVG boxes
if strSB
min := 10e6
max := 0.
if showSB
l_SB.unshift(line.new(n, close, n, close + minT
, color= col_SB, extend=extend.both))
for i = 0 to bFVG_bull.size ( ) -1
get = bFVG_bull.get (i)
if n > get.box.get_right( ) -1
if get.current == true
get.current := false
for i = 0 to bFVG_bear.size ( ) -1
get = bFVG_bear.get (i)
if n > get.box.get_right( ) -1
if get.current == true
get.current := false
//FVG's
if is_in_SB
trend := aTrend.get(0)
if iTrend
switch trend
//bullish
1 =>
if low > high
bFVG_bull.unshift(
FVG.new(
box = box.new(
n-2, low, n, high
,border_color=color(na)
,bgcolor = cBullFVG)
, active = false
, current = true
)
)
//bearish
=>
if high < low
bFVG_bear.unshift(
FVG.new(
box = box.new(
n-2, low , n, high
,border_color=color(na)
,bgcolor = cBearFVG)
, active = false
, current = true
)
)
else
if low > high
bFVG_bull.unshift(
FVG.new(
box = box.new(
n , low, n, high
,border_color=color(na)
,bgcolor = cBullFVG)
, active = false
, current = true
)
)
if high < low
bFVG_bear.unshift(
FVG.new(
box = box.new(
n , low , n, high
,border_color=color(na)
,bgcolor = cBearFVG)
, active = false
, current = true
)
)
if endSB
if showSB
l_SB.unshift(line.new(n, close, n, close + minT
, color= col_SB, extend=extend.both))
if bFVG_bull.size() > 0
for i = 0 to bFVG_bull.size ( ) -1
get = bFVG_bull.get (i)
bLeft = get. box.get_left ( )
bTop = get. box.get_top ( )
bBot = get. box.get_bottom( )
if n - bLeft < 1000
if get.current
if is_in_SB
if close < bBot
if superstrict
get.current := false
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if superstrict or strict
get.active := false
else
if extend
if get.active
//update right when extend
get.box.set_right(n)
//trigger retrace -> activated
if not get.active
if low < bTop and close > bBot
get.active := true
if extend
get.box.set_right(n)
//if last bar of session and no retrace or close < bottom -> FVG invisible
if endSB
if get.active
if strict
if close < bBot // needs to be above box bottom
get.active := false
if superstrict
if close < bTop // needs to be above box top
get.active := false
//All FVG's who are not retraced (activated) are made invisible
if not get.active
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if get.active
min := math.min(min, bBot + minimum_trade_framework)
if extend
get.box.set_right(n)
if endSB
get.active := false
//if show_minFr
// minTrFr.set_xy1(n -1, min - minimum_trade_framework)
// minTrFr.set_xy2(n -1, min )
if bFVG_bear.size() > 0
for i = 0 to bFVG_bear.size ( ) -1
get = bFVG_bear.get (i)
bLeft = get.box. get_left ( )
bTop = get.box. get_top ( )
bBot = get.box. get_bottom( )
if n - bLeft < 1000
if get.current
if is_in_SB
if close > bTop
if superstrict
get.current := false
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if superstrict or strict
get.active := false
else // if close < bTop
if extend
if get.active
//update right when extend
get.box.set_right(n)
//trigger retrace -> activated
if not get.active
if high > bBot and close < bTop
get.active := true
if extend
get.box.set_right(n)
//if last bar of session and no retrace -> FVG invisible
if endSB
if get.active
if strict
if close > bTop // needs to be below box top
get.active := false
if superstrict
if close > bBot // needs to be below box bottom
get.active := false
//All FVG's who are not retraced (activated) are made invisible
if not get.active
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if get.active
max := math.max(max, bTop - minimum_trade_framework)
if extend
get.box.set_right(n)
if endSB
get.active := false
//if show_minFr
// maxTrFr.set_xy1(n -1, max )
// maxTrFr.set_xy2(n -1, max + minimum_trade_framework)
if prev
f_swings(strSB, endSB, 'GN', col_SB, min, max)
else
f_swings(strLN, endLN, 'LN', col_SB, min, max)
f_swings(strAM, endAM, 'AM', col_SB, min, max)
f_swings(strPM, endPM, 'PM', col_SB, min, max)
//-------------------------------------------}
//Plotchar/table
//-------------------------------------------}
tfs = (60 / (timeframe.in_seconds(timeframe.period) / 60)) / 2
plotchar(not na(SB_LN_per) and na(SB_LN_per ) and showSB
, title= '3-4 AM' , location=location.top, text= '3-4 AM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(not na(SB_AM_per) and na(SB_AM_per ) and showSB
, title='10-11 AM', location=location.top, text='10-11 AM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(not na(SB_PM_per) and na(SB_PM_per ) and showSB
, title= '2-3 PM' , location=location.top, text= '2-3 PM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(targetHi ? high : na, 'target high', '•', location.abovebar, color=cResLine, size=size.small)
plotchar(targetLo ? low : na, 'target low' , '•', location.belowbar, color=cSupLine, size=size.small)
if barstate.islast
if timeframe.in_seconds(timeframe.period) > 15 * 60
table.cell(tab, 0, 0, text = 'Please use a timeframe <= 15 minutes', text_color=#FF0000)
//-------------------------------------------}
High Volume & Chart Patternsit indicates high volume with 150 percent . useful at support and resistence
My script//@version=5
indicator("Session Highs and Lows", overlay=true)
// Session Time Inputs
asiaStart = timestamp(year, month, day, 0, 0)
asiaEnd = timestamp(year, month, day, 8, 0)
londonStart = timestamp(year, month, day, 8, 0)
londonEnd = timestamp(year, month, day, 13, 0)
usStart = timestamp(year, month, day, 13, 0)
usEnd = timestamp(year, month, day, 21, 0)
// Variables to store session highs and lows
var float asiaHigh = na
var float asiaLow = na
var float londonHigh = na
var float londonLow = na
var float usHigh = na
var float usLow = na
// Update session highs and lows
asiaHigh := (time >= asiaStart and time < asiaEnd) ? math.max(asiaHigh, high) : asiaHigh
asiaLow := (time >= asiaStart and time < asiaEnd) ? math.min(asiaLow, low) : asiaLow
londonHigh := (time >= londonStart and time < londonEnd) ? math.max(londonHigh, high) : londonHigh
londonLow := (time >= londonStart and time < londonEnd) ? math.min(londonLow, low) : londonLow
usHigh := (time >= usStart and time < usEnd) ? math.max(usHigh, high) : usHigh
usLow := (time >= usStart and time < usEnd) ? math.min(usLow, low) : usLow
// Plot Highs and Lows
plot(asiaHigh, color=color.blue, linewidth=2, title="Asia High")
plot(asiaLow, color=color.blue, linewidth=2, title="Asia Low")
plot(londonHigh, color=color.green, linewidth=2, title="London High")
plot(londonLow, color=color.green, linewidth=2, title="London Low")
plot(usHigh, color=color.red, linewidth=2, title="US High")
plot(usLow, color=color.red, linewidth=2, title="US Low")
Elliott Wave DetectorDưới đây là một bot Pine Script giúp nhận diện sóng Elliott cơ bản trên TradingView. Nó xác định điểm bắt đầu của sóng 1 và hiển thị các mức TP/SL dựa trên Fibonacci.
Stocks Riders S1Stock Riders S1 A Daily Time Frame Trading Indicator
Overview
The Stock Riders S1 is a powerful trading tool designed specifically for the daily time frame. It calculates key trading levels based on the **last two candles' high, low, and open**, providing traders with a structured approach to identifying **entry points, risk-reward zones, and potential reversals.
Unlike conventional indicators, **Stock Riders S1** generates its levels at the **opening of the trading day**, allowing traders to plan their trades proactively rather than reacting to market movements.
Key Features
1. PowerLane (Risk & Reward Levels)
- Defines the **risk-reward ratio** for each trade.
- Helps traders set precise **targets and stop-loss levels** based on calculated values.
- Ensures that trades are executed with a well-defined strategy.
2. CrownPoint (Target Projection)
- Projects the price movement **potential** based on the latest buy or sell signal.
- If a **buy signal** is generated, the CrownPoint estimates the level the price might reach.
- If a **sell signal** appears, it suggests the probable downside movement.
3. ShieldPoint (Reversal Signal)
- Indicates a possible reversal zone.
- If the price reaches this level, traders should be cautious, as the trend may **change direction**.
- Ideal for **managing open positions**, ensuring timely exits or reversals.
4. ColorChange (Market Reversal Probability)
- If the indicator shows a **color change**, it signals a **strong possibility** that the price might move **against the original signal**.
- Risk-reward calculations are **adjusted at this level** to account for changing market conditions.
How It Works
- The **Stock Riders S1** calculates trading levels using the **last two candles' high, low, and open**.
- These levels appear **at the market opening** and remain static for the day, ensuring clarity for traders.
- **When a trade is initiated**, traders must align their **entry, stop-loss, and target** with PowerLane.
- If the **ShieldPoint is hit**, consider **reversing the position** to capitalize on market direction shifts.
Recommended Trading Strategy
1. Trade at the Right Time
- Enter a position **only after the market opens and levels are displayed**.
- Avoid delayed entries; trade as soon as the calculated levels are met.
2. Follow the Risk-Reward Structure*
- Always use **PowerLane** to set **target and stop-loss** values.
- If the **ShieldPoint is reached**, consider **reversing your trade** instead of holding losses.
3. Daily Time Frame Focus
- This indicator is **designed exclusively for daily charts** and should not be used on lower time frames.
- After marking the levels, apply them to **stocks in your watchlist** for disciplined trading.
Why It’s Special
Pre-Market Level Calculation Unlike conventional indicators that rely on past data, **Stock Riders S1** provides actionable trading levels **at market open**, allowing traders to plan their trades in advance.
Structured Risk-Reward System The **PowerLane levels** ensure that traders always trade with a clear stop-loss and target, reducing emotional decision-making.
Predictive Market SignalCrownPoint, ShieldPoint, and ColorChange work together to highlight **trends, reversals, and high-probability moves**, giving traders a strategic edge.
Daily Time Frame Precision Unlike short-term indicators, Stock Riders S1 focuses solely on daily charts, making it ideal for positional and swing traders.
Dynamic Adaptation – The levels are recalculated **daily**, adapting to changing market conditions without lagging signals.
Important Notes
- This indicator is meant for educational purposes only and does not provide financial advice.
- **Trading involves risk**, and past performance does not guarantee future results.
- It is advisable to use **Stock Riders S1** in conjunction with other market analysis tools and proper risk management strategies.
Disclaimer
The **Stock Riders S1** indicator is based on historical market data and **mathematical calculations**. While it provides valuable insights into potential price movements, it should not be used as the sole basis for trading decisions.
- **Use at your own discretion**, keeping in mind market risks and personal trading strategies.
- This indicator is designed for **daily stock market trading only** and should not be applied to other asset classes.
- Always conduct independent research before making any trading decisions.
Final Thought
The **Stock Riders S1** is not just another trading indicator—it’s a **strategic trading tool** designed to help traders stay ahead of market movements. By leveraging its **calculated levels, risk-reward structures, and reversal signals**, traders can **approach the market with confidence and clarity**.
Use it wisely, trade with discipline, and let the market ride in your favor!
4 days ago
Release Notes
Stock Riders S1 A Daily Time Frame Trading Indicator
Overview
The Stock Riders S1 is a powerful trading tool designed specifically for the daily time frame. It calculates key trading levels based on the **last two candles' high, low, and open**, providing traders with a structured approach to identifying **entry points, risk-reward zones, and potential reversals.
Unlike conventional indicators, **Stock Riders S1** generates its levels at the **opening of the trading day**, allowing traders to plan their trades proactively rather than reacting to market movements.
Key Features
1. PowerLane (Risk & Reward Levels)
- Defines the **risk-reward ratio** for each trade.
- Helps traders set precise **targets and stop-loss levels** based on calculated values.
- Ensures that trades are executed with a well-defined strategy.
2. CrownPoint (Target Projection)
- Projects the price movement **potential** based on the latest buy or sell signal.
- If a **buy signal** is generated, the CrownPoint estimates the level the price might reach.
- If a **sell signal** appears, it suggests the probable downside movement.
3. ShieldPoint (Reversal Signal)
- Indicates a possible reversal zone.
- If the price reaches this level, traders should be cautious, as the trend may **change direction**.
- Ideal for **managing open positions**, ensuring timely exits or reversals.
4. ColorChange (Market Reversal Probability)
- If the indicator shows a **color change**, it signals a **strong possibility** that the price might move **against the original signal**.
- Risk-reward calculations are **adjusted at this level** to account for changing market conditions.
How It Works
- The **Stock Riders S1** calculates trading levels using the **last two candles' high, low, and open**.
- These levels appear **at the market opening** and remain static for the day, ensuring clarity for traders.
- **When a trade is initiated**, traders must align their **entry, stop-loss, and target** with PowerLane.
- If the **ShieldPoint is hit**, consider **reversing the position** to capitalize on market direction shifts.
Recommended Trading Strategy
1. Trade at the Right Time
- Enter a position **only after the market opens and levels are displayed**.
- Avoid delayed entries; trade as soon as the calculated levels are met.
2. Follow the Risk-Reward Structure*
- Always use **PowerLane** to set **target and stop-loss** values.
- If the **ShieldPoint is reached**, consider **reversing your trade** instead of holding losses.
3. Daily Time Frame Focus
- This indicator is **designed exclusively for daily charts** and should not be used on lower time frames.
- After marking the levels, apply them to **stocks in your watchlist** for disciplined trading.
Why It’s Special
Pre-Market Level Calculation Unlike conventional indicators that rely on past data, **Stock Riders S1** provides actionable trading levels **at market open**, allowing traders to plan their trades in advance.
Structured Risk-Reward System The **PowerLane levels** ensure that traders always trade with a clear stop-loss and target, reducing emotional decision-making.
Predictive Market SignalCrownPoint, ShieldPoint, and ColorChange work together to highlight **trends, reversals, and high-probability moves**, giving traders a strategic edge.
Daily Time Frame Precision Unlike short-term indicators, Stock Riders S1 focuses solely on daily charts, making it ideal for positional and swing traders.
Dynamic Adaptation – The levels are recalculated **daily**, adapting to changing market conditions without lagging signals.
Important Notes
- This indicator is meant for educational purposes only and does not provide financial advice.
- **Trading involves risk**, and past performance does not guarantee future results.
- It is advisable to use **Stock Riders S1** in conjunction with other market analysis tools and proper risk management strategies.
Disclaimer
The **Stock Riders S1** indicator is based on historical market data and **mathematical calculations**. While it provides valuable insights into potential price movements, it should not be used as the sole basis for trading decisions.
- **Use at your own discretion**, keeping in mind market risks and personal trading strategies.
- This indicator is designed for **daily stock market trading only** and should not be applied to other asset classes.
- Always conduct independent research before making any trading decisions.
Final Thought
The **Stock Riders S1** is not just another trading indicator—it’s a **strategic trading tool** designed to help traders stay ahead of market movements. By leveraging its **calculated levels, risk-reward structures, and reversal signals**, traders can **approach the market with confidence and clarity**.
Use it wisely, trade with discipline, and let the market ride in your favor!
Mercúrio RetrógradoWelcome to the cosmic world of Mercury Retrograde! 🌠 This indicator on TradingView is designed to mark the periods when the planet Mercury goes into retrograde, bringing with it a touch of introspection, revision, and of course, challenges in communication, technology, and travel. 🚀
Between 2025 and 2030, whenever Mercury begins its retrograde, you'll see a red background on the chart, signaling these astrological periods that could influence the market and your personal journey. 🌑
🔴 What is Mercury Retrograde? It's an astrological phenomenon that occurs when Mercury appears to move backward in the sky. This motion can create a feeling of slowdown and confusion but is also a time for reflection and reassessment.
EMA Cross Indicator with 55 EMAAn EMA Ribbon with a 55 EMA is a powerful technical indicator used to identify trends, momentum shifts, and potential trading opportunities. The EMA (Exponential Moving Average) is a weighted moving average that places more emphasis on recent price action, making it more responsive to price changes compared to a Simple Moving Average (SMA).
Key Price Levels Indicator[Tronly]Shows key price levels grid.
Inputs: step. For example, for BTC default value is 100. It means the grid will display every 100 USDT step
Sequential Price Levels[Tronly]Inputs: 101.1, 100.3, 104.5...
Draws support and resistance levels based on single string line input.
If current price above the level it is resistance.
If current price below the level it is support.
Sequential means price moving order should be as in the input string.
Support and resistance levels[Tronly]Inputs: comma separated values of support and resistance levels prices. E.g. 101.1, 102.3 ...
Draws lines with labels for support and resistance levels
MTF Channel-S&R-MAThis indicator includes:
・Two MTF Channels
・MTF Support and Resistance
・Two MTF Moving Averages
・Fibonacci Retracement within the price labels
APM (Avg of last 5 days)New update on how to caculate hte last few candlesticks to understand more about analysis of the movement. works a bit like the moving average and that can be used instead too as an example. Go to Come Learn Forex if you want to learn more.
Wick-to-Body Percentagewick to body percentage indicator, used for finding rejections from potential entry zones. quantifiable data useful for back testing and finding repeatable set ups
Rubotics Supertrend Indicator1. ATR-Based Volatility Signal (ATR Volatility System)
This module measures market volatility by computing the current ATR over a specified period and comparing it to a baseline ATR (calculated as an SMA of ATR over a longer lookback period) multiplied by a user-defined threshold. When volatility spikes—i.e. the current ATR exceeds the baseline by the multiplier—a bullish signal (+1) is generated if the bar is upward (close > open), and a bearish signal (–1) if downward.
2. ADX (Average Directional Index)
A custom ADX calculation smooths the true range and directional movements over a defined period. The ADX component outputs +1 or –1 based on whether the smoothed ADX exceeds a threshold and which directional movement is dominant, thereby quantifying trend strength.
3. Ichimoku Cloud Signal
The Ichimoku system computes the conversion line, base line, and leading spans to assess trend direction and potential support/resistance levels. A bullish signal is issued when the price is above the cloud and bearish when below.
4. MACD Signal
The MACD is derived from the difference between fast and slow exponential moving averages along with a signal line. A bullish signal is triggered when the MACD line exceeds the signal line, and a bearish signal when it falls below, providing momentum confirmation.
5. Parabolic SAR Signal
Utilizing a dynamic stop-and-reverse algorithm, the Parabolic SAR indicates potential reversals. A bullish signal is generated when price remains above the PSAR, and bearish when below, offering rapid feedback on trend changes.
6. Volume Breakout Signal
This volume-based module calculates the average volume over a given period and flags a breakout when current volume exceeds this average by a specified multiplier. The breakout signal is directional—bullish if the bar is up and bearish if down—capturing significant market moves driven by volume surges.
7. MFI (Money Flow Index) Confirmation
The MFI integrates price and volume data to gauge money flow. Readings above 50 yield a bullish signal while those below 50 produce a bearish signal, reinforcing the composite assessment of market conditions.
Composite Signal & System Integration
Each module outputs a discrete signal (+1, –1, or 0), and these are aggregated into a composite score. The system is fully modular—each component can be enabled or disabled, and thresholds can be set for the minimum number of signals required to trigger a buy or sell. This comprehensive fusion of volatility, trend strength, momentum, and volume factors provides a robust multi-dimensional view of market dynamics.
Visualization & Engineering Advantages
Additional visual elements include a SuperTrend-style trailing stoploss and a trend table that concisely presents the status of each component along with the overall composite score. The design leverages modularity and dynamic assessment techniques to deliver adaptive, responsive signals in various market conditions.
Advanced Market Structure & Order Blocks (fadi)Advanced Market Structure & Order Blocks indicator provides a new approach to understanding price action using ICT (Inner Circle Trader) concepts related to candle blocks to analyze the market behavior and eliminate much of the noise created by the price action.
This indicator is not intended to provide trade signals, it is designed to provide the traders with to support their trading strategies and add clarity where possible.
There are currently three main elements to this indicator:
Market Structure
Order Blocks
Liquidity Voids
Market Structure
In trading, market structure is often identified by observing higher highs and higher lows. An uptrend is characterized by a series of higher highs, where each peak surpasses the previous one, and higher lows, where each trough is higher than the preceding one. Conversely, a downtrend is marked by lower highs and lower lows.
Other indicators usually determine these peaks by calculating the highest or lowest levels within a predefined number of candles. For example, identifying the highest price level within the last 15 candles and marking it as a higher high or a lower high. While this approach offers some structure to price action, it can be arbitrary and random due to price fluctuations and the lack of proper structure analysis beyond finding the highest peaks and valleys within candle ranges.
In his 2022 mentorship, episode 12, ICT introduced an alternative approach focusing on three-candle pivots called Short Term High and Low (STH/STL), which are then used to calculate the Intermediate Term High and Low (ITH/ITL), and in turn, the Long Term High and Low (LTH/LTL). ICT’s approach provides better structure than the traditional method mentioned above. However, it can be confusing and difficult to track. There are great indicators that track and label ICT’s levels, but traders still find it challenging to follow and understand.
The Advanced Market Structure indicator takes a unique approach by analyzing candle formations, using ICT concepts, to identify possible turning points that mimic a real trader’s analysis of price action as closely as possible. However, it should be expected that Market Makers may use market manipulation to induce traders to make failed trades, and no tooling can eliminate these situations.
Advanced Market Structure tracks true Peaks and Valleys as they form, confirms them, and marks the chart with corresponding labels using traditional labeling methods (HH/HL/LH/LL), as such labeling makes it easier for traders to follow and understand. The indicator also draws levels to help identify possible liquidity areas and trade targets.
The indicator uses different calculation methods for the different type of market structure length, however all calculations are based on the same ICT candle blocks concepts.
Market Structure Settings
Other than the display settings, there are four (4) settings, mainly under the Level Settings section.
Allow Nested Candles
This option is only available on the Short Market Structure due to the methods used in calculating highs and lows. When used, the indicator will attempt to detect smaller fluctuations in price by tracking smaller candle moves, if any.
Level Settings
Level Settings allows the trader to decide two main calculations:
1. A new pivot point will form when a candle’s is crossed by the following candle’s
2. For a liquidity sweep and marking a level as mitigated, a candle’s must cross that level
Order Blocks
ICT (Inner Circle Trader) defines an Order Block as the last down-closing candle, or series of candles, before a significant upward price move or the last up-closing candle, or series of candles, before a significant downward price move. These key price levels, marked by substantial buy or sell orders from institutional traders or "smart money," create a block or zone on the price chart. When the price revisits these levels, it often leads to a strong market reaction. Order Blocks can consist of one or multiple consecutive candles of the same color, signaling areas of significant buying or selling interest. ICT's approach to Order Blocks provides traders with a structured method to identify potential areas of support or resistance, where price movements are more likely to change direction. Although ICT has shared some criteria for identifying Order Blocks publicly, the full details are reserved for his upcoming books. This indicator leverages the publicly available information to provide traders with valuable insights into these crucial price levels.
The Advanced Market Structure indicator is designed to be highly flexible, allowing traders to define their own combination of rules for identifying Order Blocks, thus customizing it to fit their unique trading strategies.
Order Block Configuration
Can be nested
An Order Block is defined as the last down candle or candles before a strong move higher, and vice versa for bearish Order Blocks. However, larger-than-usual candles resulting from news events or price action may not qualify as Order Blocks and can mute any Order Block within their range.
The "Can be nested" flag ensures that each Order Block is treated as an independent entity, even if it appears within the body of another Order Block.
Forms at swing point
Order Blocks formed at swing points typically have higher probabilities but are less frequent, assuming the same rules are applied. Additionally, Order Blocks at swing points may become Breaker and Mitigation blocks if they fail, providing more trading opportunities.
Forms a simple pivot point
A simple pivot point corresponds to ICT Short Term High and Low (STH/STL). Order Blocks using simple pivot points can occur in the middle of a move, not just at swing points. These are useful for identifying IOFED setups and supporting blocks that can bolster the price move.
Causes Market Structure Shift
Order Blocks that result in a break above or below a short swing point can help narrow down target order blocks, but they are less frequent. An Order Block causing a break above or below a pivot point does not necessarily indicate a strong Order Block. For example, an Order Block formed at a Lower Low is more likely to fail in a downtrend.
A clean close above order block
When the first candle breaks above an Order Block and closes above its high, this indicates a stronger Order Block. On the other hand, if a candle merely wicks through the Order Block without a solid close above it, it suggests a weaker Order Block. This may indicate hesitation or an impending reversal, as the wick represents a temporary and unsustained price movement.
Has displacement more than X the body
While some traders may capitalize on the initial break above an Order Block's CISD level, others prefer to focus on the return to an Order Block after displacement. Displacement is determined by the body size of the Order Block, and an Order Block cannot be tested until this level has been achieved.
Has a Fair Value Gap
When an Order Block is combined with a Fair Value Gap (FVG), it signifies a strong Order Block. The Fair Value Gap indicates a strong price movement away from the Order Block.
Has a liquidity void
A Liquidity Void occurs when two consecutive candles of the same color do not overlap, creating a gap similar to a Fair Value Gap, but involving one or more middle candles. Liquidity Voids can be utilized in combination with, or as an alternative to, the displacement setting.
Maximum number of OBs
The maximum number of Order Blocks to display.
Mitigated at block’s
An Order Block is considered mitigated when price reaches one of the main Order Block levels.
Liquidity Void
Liquidity Void refers to areas on a price chart where there is one-sided trading activity. This phenomenon occurs when the price of an asset moves sharply in one direction, leaving gaps where two consecutive candles of the same color do not overlap. These gaps can comprise one or more middle candles and indicates a pronounced lack of trading within that price range. Liquidity Voids are important because they highlight areas of minimal resistance, where price is more likely to return to fill the void and balance the market.
Liquidity Void vs Fair Value Gap
While both concepts are related to gaps in price action, they are distinct. A Fair Value Gap is a specific three-candle pattern where the middle candle creates a gap between the first and third candles. In contrast, a Liquidity Void represents a broader area on the chart where there is little to no trading activity, often encompassing multiple candles and indicating a more pronounced imbalance between buy and sell orders.
A FVG can be part of a Liquidity Void, a Liquidity Void can exist without necessarily including an FVG. Both concepts highlight areas of minimal resistance and potential price movement, but they differ in their formation and implications.
Advanced Market Structure and Order Blocks indicator focus on liquidity voids since a liquidity void can substitute for a FVG and it is usually less addressed by other indicators.