VN30 Effort-vs-Result Multi-Scanner — LinhVN30 Effort-vs-Result Multi-Scanner (Pine v5)
Cross-section scanner for Vietnam’s VN30 stocks that surfaces Effort vs Result footprints and related accumulation/distribution and volatility tells. It renders a ranked table (Top-N) with per-ticker signals and key metrics.
What it does
Scans up to 30 tickers (editable input.symbol slots) using one security() call per symbol → stays under Pine’s 40-call limit and runs reliably on any chart.
Scores each ticker by counting active signals, then ranks and lists the top names.
Optional metrics columns: zVol(60), zTR(60), ATR(20), HL/ATR(20).
Signals (toggleable)
Price/Volume – Effort vs Result
EVR Squeeze (stealth): z(Vol,60) > 4 & z(TR,60) < −0.5
5σ Vol, ≤1σ Ret: z(Vol,60) > 5 & |z(Return,60)| < 1
Wide Effort, Opposite Result: z(Vol,60) > 3 & close < open & z(CLV×Vol,60) > 1
Spread Compression, Heavy Tape: (H−L)/ATR(20) < 0.6 & z(Vol,60) > 3
No-Supply / No-Demand: close < close & range < 0.6×ATR(20) & vol < 0.5×SMA(20)
Momentum & Volatility
Vol-of-Vol Kink: z(ATR20,200) rising & z(ATR5,60) falling
BB Squeeze → Expansion: BBWidth(20) in low regime (z<−1.3) then close > upper band & z(Vol,60) > 2
RSI Non-Confirmation: Price LL/HH with RSI HL/LH & z(Vol,60) > 1
Accumulation/Distribution
OBV Divergence w/ Flat Price: OBV slope > 0 & |z(ret20,260)| < 0.3
Accumulation Days Cluster: ≥3/5 bars: up close, higher vol, close near high
Effort-Result Inversion (Down): big vol on down day then next day close > prior high
How to use
Set the timeframe (works best on 1D for EOD scans).
Edit the 30 symbol slots to your VN30 constituents.
Choose Top N, toggle Show metrics/Only matches and enable/disable scenarios.
Read the table: Rank, Ticker, (metrics), Score, and comma-separated Signals fired.
Method notes
Z-scores use a population-std estimate; CLV×Vol is used for effort/location.
Rolling counts avoid ta.sum; OBV is computed manually; all logic is Pine v5-safe.
Intraday-only ideas (true VWAP magnets, auction volume, flows, futures/options) are not included—Pine can’t cross-scan those datasets.
Disclaimer: Educational tool, not financial advice. Always confirm signals on the chart and with your process.
Breadth Indicators
My script
//@version=5
indicator(title = "Trader Club 5in1", shorttitle="Trader Club 5in1", overlay=true, format=format.price, precision=2,max_lines_count = 500, max_labels_count = 500, max_bars_back=500)
showEma200 = input(true, title="EMA 200")
showPmax = input(true, title="Pmax")
showLinreg = input(true, title="Linreg")
showMavilim = input(true, title="Mavilim")
showNadaray = input(true, title="Nadaraya Watson")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
//Ema200
timeFrame = input.timeframe(defval = '240',title= 'EMA200 TimeFrame',group = 'EMA200 Settings')
len200 = input.int(200, minval=1, title="Length",group = 'EMA200 Settings')
src200 = input(close, title="Source",group = 'EMA200 Settings')
offset200 = input.int(title="Offset", defval=0, minval=-500, maxval=500,group = 'EMA200 Settings')
out200 = ta.ema(src200, len200)
higherTimeFrame = request.security(syminfo.tickerid,timeFrame,out200 ,barmerge.gaps_on,barmerge.lookahead_on)
ema200Plot = showEma200 ? higherTimeFrame : na
plot(ema200Plot, title="EMA200", offset=offset200)
//Linreq
group1 = "Linreg Settings"
lengthInput = input.int(100, title="Length", minval = 1, maxval = 5000,group = group1)
sourceInput = input.source(close, title="Source")
useUpperDevInput = input.bool(true, title="Upper Deviation", inline = "Upper Deviation", group = group1)
upperMultInput = input.float(2.0, title="", inline = "Upper Deviation", group = group1)
useLowerDevInput = input.bool(true, title="Lower Deviation", inline = "Lower Deviation", group = group1)
lowerMultInput = input.float(2.0, title="", inline = "Lower Deviation", group = group1)
group2 = "Linreg Display Settings"
showPearsonInput = input.bool(true, "Show Pearson's R", group = group2)
extendLeftInput = input.bool(false, "Extend Lines Left", group = group2)
extendRightInput = input.bool(true, "Extend Lines Right", group = group2)
extendStyle = switch
extendLeftInput and extendRightInput => extend.both
extendLeftInput => extend.left
extendRightInput => extend.right
=> extend.none
group3 = "Linreg Color Settings"
colorUpper = input.color(color.new(color.blue, 85), "Linreg Renk", inline = group3, group = group3)
colorLower = input.color(color.new(color.red, 85), "", inline = group3, group = group3)
calcSlope(source, length) =>
max_bars_back(source, 5000)
if not barstate.islast or length <= 1
else
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for i = 0 to length - 1 by 1
val = source
per = i + 1.0
sumX += per
sumY += val
sumXSqr += per * per
sumXY += val * per
slope = (length * sumXY - sumX * sumY) / (length * sumXSqr - sumX * sumX)
average = sumY / length
intercept = average - slope * sumX / length + slope
= calcSlope(sourceInput, lengthInput)
startPrice = i + s * (lengthInput - 1)
endPrice = i
var line baseLine = na
if na(baseLine) and not na(startPrice) and showLinreg
baseLine := line.new(bar_index - lengthInput + 1, startPrice, bar_index, endPrice, width=1, extend=extendStyle, color=color.new(colorLower, 0))
else
line.set_xy1(baseLine, bar_index - lengthInput + 1, startPrice)
line.set_xy2(baseLine, bar_index, endPrice)
na
calcDev(source, length, slope, average, intercept) =>
upDev = 0.0
dnDev = 0.0
stdDevAcc = 0.0
dsxx = 0.0
dsyy = 0.0
dsxy = 0.0
periods = length - 1
daY = intercept + slope * periods / 2
val = intercept
for j = 0 to periods by 1
price = high - val
if price > upDev
upDev := price
price := val - low
if price > dnDev
dnDev := price
price := source
dxt = price - average
dyt = val - daY
price -= val
stdDevAcc += price * price
dsxx += dxt * dxt
dsyy += dyt * dyt
dsxy += dxt * dyt
val += slope
stdDev = math.sqrt(stdDevAcc / (periods == 0 ? 1 : periods))
pearsonR = dsxx == 0 or dsyy == 0 ? 0 : dsxy / math.sqrt(dsxx * dsyy)
= calcDev(sourceInput, lengthInput, s, a, i)
upperStartPrice = startPrice + (useUpperDevInput ? upperMultInput * stdDev : upDev)
upperEndPrice = endPrice + (useUpperDevInput ? upperMultInput * stdDev : upDev)
var line upper = na
lowerStartPrice = startPrice + (useLowerDevInput ? -lowerMultInput * stdDev : -dnDev)
lowerEndPrice = endPrice + (useLowerDevInput ? -lowerMultInput * stdDev : -dnDev)
var line lower = na
if na(upper) and not na(upperStartPrice) and showLinreg
upper := line.new(bar_index - lengthInput + 1, upperStartPrice, bar_index, upperEndPrice, width=1, extend=extendStyle, color=color.new(colorUpper, 0))
else
line.set_xy1(upper, bar_index - lengthInput + 1, upperStartPrice)
line.set_xy2(upper, bar_index, upperEndPrice)
na
if na(lower) and not na(lowerStartPrice) and showLinreg
lower := line.new(bar_index - lengthInput + 1, lowerStartPrice, bar_index, lowerEndPrice, width=1, extend=extendStyle, color=color.new(colorUpper, 0))
else
line.set_xy1(lower, bar_index - lengthInput + 1, lowerStartPrice)
line.set_xy2(lower, bar_index, lowerEndPrice)
na
showLinregPlotUpper = showLinreg ? upper : na
showLinregPlotLower = showLinreg ? lower : na
showLinregPlotBaseLine = showLinreg ? baseLine : na
linefill.new(showLinregPlotUpper, showLinregPlotBaseLine, color = colorUpper)
linefill.new(showLinregPlotBaseLine, showLinregPlotLower, color = colorLower)
// Pearson's R
var label r = na
label.delete(r )
if showPearsonInput and not na(pearsonR) and showLinreg
r := label.new(bar_index - lengthInput + 1, lowerStartPrice, str.tostring(pearsonR, "#.################"), color = color.new(color.white, 100), textcolor=color.new(colorUpper, 0), size=size.normal, style=label.style_label_up)
//Mavilim
group4 = "Mavilim Settings"
mavilimold = input(false, title="Show Previous Version of MavilimW?",group=group4)
fmal=input(3,"First Moving Average length",group = group4)
smal=input(5,"Second Moving Average length",group = group4)
tmal=fmal+smal
Fmal=smal+tmal
Ftmal=tmal+Fmal
Smal=Fmal+Ftmal
M1= ta.wma(close, fmal)
M2= ta.wma(M1, smal)
M3= ta.wma(M2, tmal)
M4= ta.wma(M3, Fmal)
M5= ta.wma(M4, Ftmal)
MAVW= ta.wma(M5, Smal)
col1= MAVW>MAVW
col3= MAVWpmaxsrc ? pmaxsrc-pmaxsrc : 0
vdd1=pmaxsrc
ma = 0.0
if mav == "SMA"
ma := ta.sma(pmaxsrc, length)
ma
if mav == "EMA"
ma := ta.ema(pmaxsrc, length)
ma
if mav == "WMA"
ma := ta.wma(pmaxsrc, length)
ma
if mav == "TMA"
ma := ta.sma(ta.sma(pmaxsrc, math.ceil(length / 2)), math.floor(length / 2) + 1)
ma
if mav == "VAR"
ma := VAR
ma
if mav == "WWMA"
ma := WWMA
ma
if mav == "ZLEMA"
ma := ZLEMA
ma
if mav == "TSF"
ma := TSF
ma
ma
MAvg=getMA(pmaxsrc, length)
longStop = Normalize ? MAvg - Multiplier*atr/close : MAvg - Multiplier*atr
longStopPrev = nz(longStop , longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = Normalize ? MAvg + Multiplier*atr/close : MAvg + Multiplier*atr
shortStopPrev = nz(shortStop , shortStop)
shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir , dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
PMax = dir==1 ? longStop: shortStop
// plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="EMA9")
pmaxPlot = showPmax ? PMax : na
pALL=plot(pmaxPlot, color=color.new(#FF5252, transp = 0), linewidth=2, title="PMax")
alertcondition(ta.cross(MAvg, PMax), title="Cross Alert", message="PMax - Moving Avg Crossing!")
alertcondition(ta.crossover(MAvg, PMax), title="Crossover Alarm", message="Moving Avg BUY SIGNAL!")
alertcondition(ta.crossunder(MAvg, PMax), title="Crossunder Alarm", message="Moving Avg SELL SIGNAL!")
alertcondition(ta.cross(pmaxsrc, PMax), title="Price Cross Alert", message="PMax - Price Crossing!")
alertcondition(ta.crossover(pmaxsrc, PMax), title="Price Crossover Alarm", message="PRICE OVER PMax - BUY SIGNAL!")
alertcondition(ta.crossunder(pmaxsrc, PMax), title="Price Crossunder Alarm", message="PRICE UNDER PMax - SELL SIGNAL!")
buySignalk = ta.crossover(MAvg, PMax)
plotshape(buySignalk and showsignalsk and showPmax ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, transp = 0), textcolor=color.white)
sellSignallk = ta.crossunder(MAvg, PMax)
plotshape(sellSignallk and showsignalsk and showPmax ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, transp = 0), textcolor=color.white)
// buySignalc = ta.crossover(pmaxsrc, PMax)
// plotshape(buySignalc and showsignalsc ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=#0F18BF, textcolor=color.white)
// sellSignallc = ta.crossunder(pmaxsrc, PMax)
// plotshape(sellSignallc and showsignalsc ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=#0F18BF, textcolor=color.white)
// mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0,display=display.none)
longFillColor = highlighting ? (MAvg>PMax ? color.new(color.green, transp = 90) : na) : na
shortFillColor = highlighting ? (MAvg math.exp(-(math.pow(x, 2)/(h * h * 2)))
//-----------------------------------------------------------------------------}
//Append lines
//-----------------------------------------------------------------------------{
n = bar_index
var ln = array.new_line(0)
if barstate.isfirst and repaint
for i = 0 to 499
array.push(ln,line.new(na,na,na,na))
//-----------------------------------------------------------------------------}
//End point method
//-----------------------------------------------------------------------------{
var coefs = array.new_float(0)
var den = 0.
if barstate.isfirst and not repaint
for i = 0 to 499
w = gauss(i, h)
coefs.push(w)
den := coefs.sum()
out = 0.
if not repaint
for i = 0 to 499
out += src * coefs.get(i)
out /= den
mae = ta.sma(math.abs(src - out), 499) * mult
upperN = out + mae
lowerN = out - mae
//-----------------------------------------------------------------------------}
//Compute and display NWE
//-----------------------------------------------------------------------------{
float y2 = na
float y1 = na
nwe = array.new(0)
if barstate.islast and repaint
sae = 0.
//Compute and set NWE point
for i = 0 to math.min(499,n - 1)
sum = 0.
sumw = 0.
//Compute weighted mean
for j = 0 to math.min(499,n - 1)
w = gauss(i - j, h)
sum += src * w
sumw += w
y2 := sum / sumw
sae += math.abs(src - y2)
nwe.push(y2)
sae := sae / math.min(499,n - 1) * mult
for i = 0 to math.min(499,n - 1)
if i%2 and showNadaray
line.new(n-i+1, y1 + sae, n-i, nwe.get(i) + sae, color = upCss)
line.new(n-i+1, y1 - sae, n-i, nwe.get(i) - sae, color = dnCss)
if src > nwe.get(i) + sae and src < nwe.get(i) + sae and showNadaray
label.new(n-i, src , '▼', color = color(na), style = label.style_label_down, textcolor = dnCss, textalign = text.align_center)
if src < nwe.get(i) - sae and src > nwe.get(i) - sae and showNadaray
label.new(n-i, src , '▲', color = color(na), style = label.style_label_up, textcolor = upCss, textalign = text.align_center)
y1 := nwe.get(i)
//-----------------------------------------------------------------------------}
//Dashboard
//-----------------------------------------------------------------------------{
var tb = table.new(position.top_right, 1, 1
, bgcolor = #1e222d
, border_color = #373a46
, border_width = 1
, frame_color = #373a46
, frame_width = 1)
if repaint
tb.cell(0, 0, 'Repainting Mode Enabled', text_color = color.white, text_size = size.small)
//-----------------------------------------------------------------------------}
//Plot
//-----------------------------------------------------------------------------}
// plot(repaint ? na : out + mae, 'Upper', upCss)
// plot(repaint ? na : out - mae, 'Lower', dnCss)
//Crossing Arrows
// plotshape(ta.crossunder(close, out - mae) ? low : na, "Crossunder", shape.labelup, location.absolute, color(na), 0 , text = '▲', textcolor = upCss, size = size.tiny)
// plotshape(ta.crossover(close, out + mae) ? high : na, "Crossover", shape.labeldown, location.absolute, color(na), 0 , text = '▼', textcolor = dnCss, size = size.tiny)
//-----------------------------------------------------------------------------}
_mr_beach Sunday Entwicklung Version 1_mr_beach Sunday Development Version 1
Short Description (for TradingView publication):
This indicator combines EMA crossovers, VWAP with standard deviation bands, gap detection, pivot-based support & resistance, and VWAP distance labels in a single overlay. Perfect for discretionary traders aiming to efficiently identify gap fills, trend reversals, and key price levels. All components can be toggled on/off via the settings menu.
Full Indicator Description:
🧠 Purpose of the Indicator:
This all-in-one tool merges several analytical features to visualize trend direction, market structure, key price levels (e.g., gaps, VWAP distance, pivot support), and entry signals at a glance.
🔧 Integrated Features:
EMA20 / EMA50: Trend detection via moving averages. Crossover signals indicate potential entries.
VWAP + Band: Volume-weighted average price with visual deviation bands.
GAP-Up / GAP-Down: Price gaps are highlighted in color (brown/yellow), optionally showing only open ones.
VWAP Distance Label: Displays the current price’s percentage deviation from the VWAP as a chart label.
Buy/Sell Signals: Triggered by EMA20 and EMA50 crossovers.
HH/LL SL-Marker: Identifies local highs/lows using pivots.
Support & Resistance: Automatically calculated pivot zones.
Customizable Visibility: All features can be toggled in the settings menu.
Dummy Plot: plot(na) ensures error-free compilation.
⚙️ Settings Menu Options:
Show VWAP: Displays VWAP and deviation bands.
Show EMA20 / EMA50: Shows the moving averages.
Show Gaps: Enables gap detection.
Show Only Open Gaps: Hides already filled gaps.
Show VWAP Distance: Activates VWAP deviation label.
Support & Resistance: Displays pivot-based zones as support/resistance.
🔔 Alerts:
‘Mads Morningstar Signal’: Buy/Sell alerts based on EMA crossover.
📈 Use Cases:
Trend-following setups using EMA crossover
Gap-fill trading strategies
VWAP reversion trades
SL/TP based on HH/LL or pivot levels
Visual chart preparation for scalping, intraday, or swing trading
🛠 Suggested Extensions:
Gap table showing open levels
Take-Profit/Stop-Loss strategy
Alerts for new gap formation
Strategy tester module with gap-based entries
VP-Period with Previous Day Levels & Historical POC# Volume Profile with Previous Day Levels & Historical POCs
## Description
Comprehensive indicator combining Volume Profile analysis, previous day levels, and historical POC (Point of Control) levels for advanced technical analysis.
## Key Features
### Volume Profile
- **Customizable period**: 3 to 500 days
- **Calculation resolution**: 400 to 700 points
- **Current VPOC**: Point of Control line for current period
- **Volume bars**: graphical display of volume profile distribution
### Historical POCs
- **POC history**: up to 20 previous days
- **Time labels**: shows how many days ago for each POC
- **Dashed lines**: easy identification of historical levels
### Previous Day Levels (last 5 days)
- **High/Low**: daily highs and lows
- **Midpoint**: 50% level (High+Low)/2
- **Open/Close**: opening and closing prices
- **Progressive thickness**: day 1 thicker, decreasing for previous days
## Customization
- Fully configurable colors for each element
- Toggle on/off switches for every component
- Different line styles (solid, dashed, dotted)
## Usage
Perfect for traders using volume analysis and support/resistance based on previous daily levels. Ideal for identifying key zones and significant breakout points.
Multi Timeframe 7 Bollinger Bands by CSPMulti Timeframe 7 Bollinger Bands by CSP IT SHOW 1MT,5MT,10MT,1HR,D, W,M BOLLINGER BAND IN ASINGLE CHART.
Whaley Thrust — ADT / UDT / SPT (2010) + EDT (EMA) + Info BoxDescription
Implements Wayne Whaley’s 2010 Dow Award breadth-thrust framework on daily data, with a practical extension:
• ADT (Advances Thrust) — 5-day ratio of advances to (adv+dec). Triggers: > 73.66% (thrust), < 19.05% (capitulation).
• UDT (Up-Volume Thrust) — 5-day ratio of up-volume to (up+down). Triggers: > 77.88%, < 16.41%. Defaults to USI:UVOL / USI:DVOL (edit if your feed differs).
• SPT (Price Thrust) — 5-day % change of a benchmark (default SPY, toggle to use chart symbol). Triggers: > +10.05%, < −13.85%.
• EDT (EMA extension) — Declines-share thrust derived from WBT logic (not in Whaley’s paper): EMA/SMA of Declines / (Adv+Decl). Triggers: > 0.8095 (declines thrust), < 0.2634 (declines abating).
• All-Clear — Prints when ADT+ and UDT+ occur within N days (default 10); marks the second event and shades brighter green.
Visuals & Controls
• Shape markers for each event; toggle text labels on/off.
• Optional background shading (green for thrusts, red for capitulations; brighter green for All-Clear).
• Compact info box showing live ADT / UDT / SPT (white by default; turns green/red at thresholds).
• Min-spacing filter to prevent duplicate prints.
Tips
• Use on Daily charts (paper uses 5 trading days). Weekly views can miss mid-week crosses.
• If UDT shows 100%, verify your Down Volume symbol; the script requires both UVOL and DVOL to be > 0.
• Best use: treat capitulations (−) as setup context; act on thrusts (+)—especially when ADT+ & UDT+ cluster (All-Clear).
Credit
Core method from Wayne Whaley (2010), Planes, Trains and Automobiles (Dow Award). EDT is an added, complementary interpretation using WBT-style smoothing.
super super123//@version=5
indicator("Supertrend", overlay=true, timeframe="", timeframe_gaps=true)
atrPeriod = input(11, "ATR Length")
factor = input.float(2.0, "Factor", step = 0.01)
= ta.supertrend(factor, atrPeriod)
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)
atr_2 = input(10, "ATR Length 2")
factor_2 = input.float(1.0, "Factor 2", step = 0.01)
= ta.supertrend(factor_2, atr_2)
bodyMiddle_2 = plot((open + close) / 2, display=display.none)
upTrend_2 = plot(direction_2 < 0 ? supertrend_2 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend_2 = plot(direction_2 < 0? na : supertrend_2, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle_2, upTrend_2, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle_2, downTrend_2, color.new(color.red, 90), fillgaps=false)
atrPeriod_3 = input(12, "ATR Length 3")
factor_3 = input.float(3.0, "Factor 3", step = 0.01)
= ta.supertrend(factor_3, atrPeriod_3)
bodyMiddle_3 = plot((open + close) / 2, display=display.none)
upTrend_3 = plot(direction_3 < 0 ? supertrend_3 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend_3 = plot(direction_3 < 0? na : supertrend_3, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle_3, upTrend_3, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle_3, downTrend_3, color.new(color.red, 90), fillgaps=false)
Chiefs sessions 4.1This indicator marks out the most recent asian session and London sessions highs and lows. It also marks off the previous days candles highs and lows in white. Asian session is blue and London is red. This indicator resets every day.
Relative Strength Buy/Sell SignalsThis Pine Script builds on the MarketSurge-style Relative Strength indicator. It calculates the RS line by comparing the stock's close to a benchmark (default: SPY). Buy signals are generated when the RS line crosses above its moving average (default 10-period SMA), indicating improving relative strength. Sell signals occur when it crosses below, suggesting weakening relative strength. Signals are labeled "BUY" (green) and "SELL" (red) on the chart, with background highlights.
It also retains the new 52-week RS highs (orange circles) and lows (purple circles), which can serve as additional confirmation for outperformance or underperformance.
Note: This approximates relative strength for trading signals but does not replicate the proprietary IBD RS Rating (a 1-99 percentile rank across all stocks). For best results, use on daily charts and combine with other analysis. Backtest thoroughly, as no strategy guarantees profits
AM - Normalized CVD DeltaHow to Use Normalized CVD
Concept:
CVD = the cumulative sum of (buy volume – sell volume) over time.
“Normalized” = CVD scaled into a percentage for easier comparison between order size groups.
Benefits:
Shows order flow by size groups (whales, retail, etc.).
Makes it easy to see which group is buying or selling more aggressively.
Enables comparison across different time periods and groups.
How to Use:
Watch each line for different order size groups → near 100% = strong buying, near 0% = strong selling.
Compare with the Order Book heatmap to confirm support/resistance zones.
Cumulative Volume DeltaCumulative Volume Delta (CVD) is a technical analysis indicator used in trading to measure the net buying or selling pressure in a market by tracking the difference between buying and selling volume over time. It’s particularly popular in futures, forex, and cryptocurrency trading, where volume data is critical for understanding market dynamics.
### How It Works:
- **Volume Delta**: For each price bar or time period, the volume delta is calculated as the difference between buying volume (trades executed at the ask price, indicating buyer aggression) and selling volume (trades executed at the bid price, indicating seller aggression).
- Formula: Volume Delta = Buying Volume - Selling Volume
- **Cumulative Volume Delta**: CVD sums up the volume delta over a specified period, creating a running total that reflects the overall trend of buying or selling pressure.
- If CVD is rising, it suggests stronger buying pressure (bullish sentiment).
- If CVD is falling, it indicates stronger selling pressure (bearish sentiment).
### Key Features:
1. **Divergence Analysis**: Traders use CVD to spot divergences between price movements and volume trends. For example, if the price is rising but CVD is declining, it may signal weakening bullish momentum (potential reversal).
2. **Support/Resistance Confirmation**: CVD can confirm breakouts or reversals at key price levels by showing whether volume supports the price movement.
3. **Trend Strength**: A steeply rising or falling CVD line indicates strong directional pressure, while a flat CVD suggests indecision or consolidation.
### Example:
- If a cryptocurrency like Bitcoin has 10,000 units bought at the ask and 7,000 units sold at the bid in a given period, the volume delta is +3,000. Over multiple periods, these deltas are added to form the CVD.
- A rising CVD alongside a price uptrend confirms bullish strength, while a falling CVD during a price uptrend may warn of a potential pullback.
### Limitations:
- **Data Dependency**: CVD relies on accurate bid/ask volume data, which may not be available or reliable on all platforms (e.g., some exchanges don’t provide detailed order book data).
- **Lagging Nature**: As a cumulative indicator, it may lag behind rapid price changes.
- **Context Matters**: CVD should be used with other indicators (e.g., price action, support/resistance) for better accuracy.
### Practical Use:
Traders often plot CVD as a line chart below the price chart on platforms like TradingView or Sierra Chart. It’s useful for:
- Identifying trend reversals or continuations.
- Confirming breakouts or breakdowns.
- Assessing market sentiment in low-liquidity or high-volatility markets.
PanelWithGrid v1.4📈 Multi-Timeframe Candle Panel + Custom Grid v1.4
🔥 Professional Trading Tool for Multi-Timeframe Analysis
This advanced indicator displays a comprehensive panel of candle data across multiple timeframes (from 1 minute to daily) while plotting a fully customizable grid based on historical price levels. Perfect for traders who use dynamic support/resistance levels!
🌟 Key Features:
✅ Smart Custom Grid:
Choose your reference timeframe (1min to weekly)
Select which previous candle to use as reference (1st, 2nd, 3rd, etc. back)
Adjust grid spacing in points
✅ Multi-Timeframe Dashboard:
Displays Open, Close, High, Low and Price Difference for:
Current timeframe
30M, 1H, 2H, 3H, 4H, 6H, 12H, 1D
✅ Smart Confluence Alerts:
Visual signals when all timeframes align (bullish/bearish)
Special 1H candle analysis after 30 minutes
✅ Clean Visualization:
Thick red line marking reference level
Blue (above) and gold (below) grid lines at regular intervals
Informative label showing reference value and candle used
⚙ How To Use:
1️⃣ Set Grid Timeframe (e.g. "D" for daily, "60" for 1H)
2️⃣ Choose Reference Candle ("1" = most recent, "2" = previous, etc.)
3️⃣ Adjust Grid Spacing (e.g. 5 points between levels)
4️⃣ Watch for Confluence across timeframes
💡 Pro Tip: Use higher timeframes (Daily/Weekly) for significant levels and lower timeframes (1H/4H) for intraday trading.
🔔 Like & Favorite to support future updates!
Optimized Code | Pine Script v5 | TradingView
🎯 Perfect For: Swing Trading, Day Trading, Multi-Timeframe Analysis
PanelWithGrid v1.4📈 Multi-Timeframe Candle Panel + Custom Grid v1.4
🔥 Professional Trading Tool for Multi-Timeframe Analysis
This advanced indicator displays a comprehensive panel of candle data across multiple timeframes (from 1 minute to daily) while plotting a fully customizable grid based on historical price levels. Perfect for traders who use dynamic support/resistance levels!
🌟 Key Features:
✅ Smart Custom Grid:
Choose your reference timeframe (1min to weekly)
Select which previous candle to use as reference (1st, 2nd, 3rd, etc. back)
Adjust grid spacing in points
✅ Multi-Timeframe Dashboard:
Displays Open, Close, High, Low and Price Difference for:
Current timeframe
30M, 1H, 2H, 3H, 4H, 6H, 12H, 1D
✅ Smart Confluence Alerts:
Visual signals when all timeframes align (bullish/bearish)
Special 1H candle analysis after 30 minutes
✅ Clean Visualization:
Thick red line marking reference level
Blue (above) and gold (below) grid lines at regular intervals
Informative label showing reference value and candle used
⚙ How To Use:
1️⃣ Set Grid Timeframe (e.g. "D" for daily, "60" for 1H)
2️⃣ Choose Reference Candle ("1" = most recent, "2" = previous, etc.)
3️⃣ Adjust Grid Spacing (e.g. 5 points between levels)
4️⃣ Watch for Confluence across timeframes
💡 Pro Tip: Use higher timeframes (Daily/Weekly) for significant levels and lower timeframes (1H/4H) for intraday trading.
🔔 Like & Favorite to support future updates!
Optimized Code | Pine Script v5 | TradingView
🎯 Perfect For: Swing Trading, Day Trading, Multi-Timeframe Analysis
ICT/SMC Liquidity Map V3 KyroowThe indicator is designed to map liquidity on the chart following the ICT/SMC logic, with the added feature of precise tracking of the Asian session.
It shows you:
PDH / PDL → Previous Day High & Low, automatically removed once taken out.
EQH / EQL → Equal Highs & Equal Lows (double tops/bottoms), with pip tolerance and a check to ensure no candle has already "cleared" the range.
ASH / ASL → Asian Session High & Low (the highs/lows of each closed Asian session).
Asian Session → Displayed as a box or shaded area, with visual history.
Dynamic tolerance management → EQH/EQL can have different tolerances depending on the timeframe.
Automatic removal → Levels are removed once the market takes them (via wick or body, configurable).
💡 In practice:
It helps you quickly identify likely liquidity grab zones, whether they come from the previous day, the Asian session, or equal highs/lows. This allows you to anticipate market reactions around these levels.
Josh SMCAn advanced Smart Money Concepts (SMC) indicator that automatically detects and visualizes:
✅ Market Structure: BOS (Break of Structure) & CHoCH (Change of Character) for both Swing and Internal structures
✅ Order Blocks: Bullish & Bearish (Swing & Internal) with breaker block detection and mitigation logic
✅ Fair Value Gaps (FVG): Automatic bullish/bearish FVG detection with extension options
✅ Liquidity Levels: Equal Highs/Lows with strong/weak level identification
✅ Premium/Discount Zones: Dynamic zones based on real-time price extremes
✅ Multi-Timeframe Levels: Daily, Weekly, Monthly high/low levels with customizable styles
🔹 Designed for traders who follow ICT / Smart Money principles
🔹 Perfect for identifying high-probability setups in Forex, Indices, Gold, and Crypto markets
🔹 Protected Access: Requires owner approval before use – for VIP members and authorized users only
📈 How to Use:
Wait for structure shift confirmation (BOS/CHoCH)
Identify confluence with Order Block + FVG + Liquidity levels
Enter trades in line with the higher-timeframe bias for maximum accuracy
Day Range EU/Rome 00:00-22:30 Final Version# Day Range EU/Rome 00:00–22:30 — live + historical (colors)
**What it does**
Draws, for each day (timezone **Europe/Rome**), a rectangle that contains the **high** and **low** recorded between **00:00** and **22:30**.
* During the day it creates a **live box** that updates bar by bar (it extends to the latest candle).
* At the end of the session (after 22:30) it saves a **fixed historical box** for that day.
* The rectangle is **split horizontally**: half **top** and half **bottom** (customizable colors).
* Boxes are **anchored in time** (*xloc = bar\_time*): they don’t “slide” when you zoom or pan the chart.
* Works on **intraday** timeframes (recommended **15m**; also fine on 5m, 30m, 1h).
* Includes **all days**, **Friday included**.
---
## How it works
* The code detects the **00:00 → 22:30 (Europe/Rome)** session with `time("0000-2230","Europe/Rome")`.
* Within that window it continuously updates the day’s **High/Low**.
* When the **session closes** it creates two historical boxes (upper and lower halves) using the **H/L** of the day that just ended.
* The current day’s box remains **live** and follows the chart until 22:30.
Day Range EU/Rome 00:00-22:30 - live + storico (colori)# Day Range EU/Rome 00:00–22:30 — live + historical (colors)
**What it does**
Draws, for each day (timezone **Europe/Rome**), a rectangle that contains the **high** and **low** recorded between **00:00** and **22:30**.
* During the day it creates a **live box** that updates bar by bar (it extends to the latest candle).
* At the end of the session (after 22:30) it saves a **fixed historical box** for that day.
* The rectangle is **split horizontally**: half **top** and half **bottom** (customizable colors).
* Boxes are **anchored in time** (*xloc = bar\_time*): they don’t “slide” when you zoom or pan the chart.
* Works on **intraday** timeframes (recommended **15m**; also fine on 5m, 30m, 1h).
* Includes **all days**, **Friday included**.
---
## How it works
* The code detects the **00:00 → 22:30 (Europe/Rome)** session with `time("0000-2230","Europe/Rome")`.
* Within that window it continuously updates the day’s **High/Low**.
* When the **session closes** it creates two historical boxes (upper and lower halves) using the **H/L** of the day that just ended.
* The current day’s box remains **live** and follows the chart until 22:30.
V1 — CVD with sessions scaled + divergence stackCVD with session: the three different session colors (fuchsia, purple, and blue).
There are two areas — green and red — which represent divergences with the price.
Be careful: both divergence and confirmation require a valid structure change.
The bubble is a visual aid to help validate or reject the divergence.
A bubble is calculated based on the previous session. You can adjust the volatility using lookbackCloseLL and lookbackHighBR.
Enhanced CPR with Historical Levelsit shows the previous days high,low 2 daysa and 3 days back high low
STOCH MTF【15M/1H/4H】 EMOJI And Chart TableStochastic Oscillator (MT4/MT5 Function) Numerical Value with Chart Table , Emoji Overlay with Chart OverLay , You Can Find Best way to Trade with New Trend Line Start , i Suggest using with this indicator 【STOCH RSI AND RSI BUY/SELL Signals with MACD】
=================================================
Find Signal with 4H and 1H and looking for Entry Point In 5 Min / 15 Min。
Before Trend Start Tell you to Notify
POC - Dudix(6h auto)The range of constant live volume from the last 6 hours allows us to see whose side the buyers or sellers are on, we try to trade in the direction when the POC is behind us
Multi-Indicator Early Trend SignalMulti-Indicator Early Trend Signal — Your Head Start in the Market!
Tired of reacting late to big moves? This tool combines the power of RSI Divergence, MACD Momentum, EMA Trend Filters, and Automatic Fibonacci Levels to detect trend shifts before they explode.
What it does:
Early Entry Signals: Pinpoints potential reversals before the crowd catches on.
Multi-Confirmation System: Only triggers when multiple indicators agree — filtering out noise.
Automatic Fibonacci: Instantly maps out key retracement and extension levels for targets and stops.
Trend Strength Meter: Quickly see if the move has momentum or is likely to fade.
Who it’s for:
Perfect for traders who want clean, reliable, and early market insights — whether you scalp, swing, or position trade.
Pro Tip: Combine signals with volume analysis or higher-timeframe confirmation for maximum accuracy.
Stop guessing. Start anticipating.
Add the Multi-Indicator Early Trend Signal to your chart and get ahead of the move!
PBR Strategy Assistant Gold.D FingerGold.D Finger Strategy. This indicator gives an overview of my first strategies with several confluences. I just wanted to test what it would look like in this format, but it does not exactly match the one I actually use.