Equinivesh : TR, ATR, DATR Combined BY ANUPAM ANAND Equinivesh: TR, ATR, DATR Combined BY ANUPAM ANAND
Indicadores e estratégias
SM OTC style Supply/Demand Zones Lite+//@version=6
indicator("OTC SD MTF Lite+", "OTCSDmtf+", overlay=true, max_boxes_count=200, max_labels_count=200)
// ================= Inputs =================
useH4 = input.bool(true, "Show 4H zones")
useD1 = input.bool(true, "Show 1D zones")
useW1 = input.bool(true, "Show 1W zones")
useM1 = input.bool(false, "Show 1M zones")
baseLen = input.int(2, "Base length (HTF bars)", 1, 5)
wickPctMax = input.float(35.0, "Max wick % in base", 0, 100)
impulseX = input.float(1.5, "Departure body vs ATR (x)", 0.5, 5.0)
atrLen = input.int(14, "ATR length (HTF)")
extendBars = input.int(2000, "Extend bars on chart", 200, 10000)
maxPerTF = input.int(12, "Max zones per TF", 3, 30)
showLegend = input.bool(true, "Show tiny legend (4H/1D/1W/1M)")
onlyNearest = input.bool(false, "Show ONLY nearest zone above/below")
hideOverlapTF = input.bool(true, "Hide overlapping zones within each TF (keep newest)")
showNearestLabels = input.bool(false, "Show distance labels to nearest above/below")
// --- Hard cap for future drawing with xloc.bar_index ---
FUTURE_CAP = 500
// Colors (Demand hues per TF). Supply uses red for contrast.
colH4 = color.new(color.teal, 78)
colD1 = color.new(color.blue, 78)
colW1 = color.new(color.orange, 78)
colM1 = color.new(color.purple, 78)
colSup= color.new(color.red, 78)
// ================= Helpers =================
wickiness(h, l, o, c) =>
rng = math.max(h - l, syminfo.mintick)
topW = h - math.max(o, c)
botW = math.min(o, c) - l
100.0 * (topW + botW) / rng
// Returns: (dTrig, dProx, dDist, sTrig, sProx, sDist)
f_htfSignals(baseBars, wickMax, xImpulse, aLen) =>
float _o = open
float _h = high
float _l = low
float _c = close
float _atr = ta.atr(aLen)
bool ok = true
for i = 1 to baseBars
ok := ok and (wickiness(_h , _l , _o , _c ) <= wickMax)
bool bullDepart = _c > _o and (_c - _o) > xImpulse * _atr
bool bearDepart = _c < _o and (_o - _c) > xImpulse * _atr
float dTrig = 0.0
float dProx = na
float dDist = na
float sTrig = 0.0
float sProx = na
float sDist = na
if ok and bullDepart
float hi = ta.highest(_h, baseBars)
float lo = ta.lowest(_l, baseBars)
dTrig := 1.0
dProx := lo
dDist := hi
if ok and bearDepart
float hi2 = ta.highest(_h, baseBars)
float lo2 = ta.lowest(_l, baseBars)
sTrig := 1.0
sProx := hi2
sDist := lo2
// ================= Pull HTF signals =================
= request.security(syminfo.tickerid, "240", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
= request.security(syminfo.tickerid, "D", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
= request.security(syminfo.tickerid, "W", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
= request.security(syminfo.tickerid, "M", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
// ================= Storage per TF =================
var zH4 = array.new_box()
var aH4 = array.new_bool()
var lH4 = array.new_label()
var sH4 = array.new_int() // 1 = Demand, -1 = Supply
var zD1 = array.new_box()
var aD1 = array.new_bool()
var lD1 = array.new_label()
var sD1 = array.new_int()
var zW1 = array.new_box()
var aW1 = array.new_bool()
var lW1 = array.new_label()
var sW1 = array.new_int()
var zM1 = array.new_box()
var aM1 = array.new_bool()
var lM1 = array.new_label()
var sM1 = array.new_int()
// ================= Overlap utils =================
overlap(topA, botA, topB, botB) =>
not (topA < botB or botA > topB)
purgeOverlaps(arrB, arrA, arrL, newTop, newBot) =>
if hideOverlapTF and array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box bOld = array.get(arrB, i)
float t = box.get_top(bOld)
float btm = box.get_bottom(bOld)
if overlap(newTop, newBot, t, btm)
box.delete(bOld)
label.delete(array.get(arrL, i))
array.set(arrA, i, false)
// ================= Add zone =================
addZone(arrB, arrA, arrL, arrS, topV, botV, baseColor, isDemand) =>
purgeOverlaps(arrB, arrA, arrL, topV, botV)
int leftX = bar_index - 1
int rightX = bar_index + math.min(extendBars, FUTURE_CAP) // respect +500 cap
box b = box.new(leftX, topV, rightX, botV, xloc=xloc.bar_index, bgcolor=baseColor, border_color=color.new(color.black, 0))
float ly = isDemand == 1 ? topV : botV
st = isDemand == 1 ? label.style_label_down : label.style_label_up
string tagTxt = isDemand == 1 ? "Demand" : "Supply"
label l = label.new(leftX, ly, tagTxt, xloc=xloc.bar_index, style=st, textcolor=color.white, color=color.new(color.black, 0), size=size.tiny)
array.push(arrB, b)
array.push(arrA, true)
array.push(arrL, l)
array.push(arrS, isDemand)
if array.size(arrB) > maxPerTF
box.delete(array.shift(arrB))
array.shift(arrA)
label.delete(array.shift(arrL))
array.shift(arrS)
// ================= Maintain / Invalidate =================
extendAll(arrB, arrA) =>
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box.set_right(array.get(arrB, i), bar_index + math.min(extendBars, FUTURE_CAP)) // respect +500 cap
invalidate(arrB, arrA, arrL) =>
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box b = array.get(arrB, i)
float t = box.get_top(b)
float btm = box.get_bottom(b)
// Close outside band → remove
if close > t or close < btm
box.delete(b)
label.delete(array.get(arrL, i))
array.set(arrA, i, false)
// ================= New HTF bar flags (strict booleans) =================
int chH4 = ta.change(time("240"))
int chD1 = ta.change(time("D"))
int chW1 = ta.change(time("W"))
int chM1 = ta.change(time("M"))
bool newBarH4 = useH4 and (not na(chH4)) and (chH4 != 0)
bool newBarD1 = useD1 and (not na(chD1)) and (chD1 != 0)
bool newBarW1 = useW1 and (not na(chW1)) and (chW1 != 0)
bool newBarM1 = useM1 and (not na(chM1)) and (chM1 != 0)
// ================= Create zones on new HTF bar =================
if newBarH4
if d4t > 0 and not na(d4p) and not na(d4d)
addZone(zH4, aH4, lH4, sH4, d4d, d4p, colH4, 1)
if s4t > 0 and not na(s4p) and not na(s4d)
addZone(zH4, aH4, lH4, sH4, s4p, s4d, colSup, -1)
if newBarD1
if d1t > 0 and not na(d1p) and not na(d1d)
addZone(zD1, aD1, lD1, sD1, d1d, d1p, colD1, 1)
if s1t > 0 and not na(s1p) and not na(s1d)
addZone(zD1, aD1, lD1, sD1, s1p, s1d, colSup, -1)
if newBarW1
if w1t > 0 and not na(w1p) and not na(w1d)
addZone(zW1, aW1, lW1, sW1, w1d, w1p, colW1, 1)
if swt > 0 and not na(swp) and not na(swd)
addZone(zW1, aW1, lW1, sW1, swp, swd, colSup, -1)
if newBarM1
if m1t > 0 and not na(m1p) and not na(m1d)
addZone(zM1, aM1, lM1, sM1, m1d, m1p, colM1, 1)
if smt > 0 and not na(smp) and not na(smd)
addZone(zM1, aM1, lM1, sM1, smp, smd, colSup, -1)
// ================= Maintain & Invalidate (every bar) =================
extendAll(zH4, aH4)
extendAll(zD1, aD1)
extendAll(zW1, aW1)
extendAll(zM1, aM1)
invalidate(zH4, aH4, lH4)
invalidate(zD1, aD1, lD1)
invalidate(zW1, aW1, lW1)
invalidate(zM1, aM1, lM1)
// ================= Nearest across all TFs =================
tfNearest(arrB, arrA) =>
int upIdx = -1
int dnIdx = -1
float upDist = 1e10
float dnDist = 1e10
float upBtm = na
float dnTop = na
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box b = array.get(arrB, i)
float t = box.get_top(b)
float btm = box.get_bottom(b)
if btm >= close
float d = btm - close
if d < upDist
upDist := d
upIdx := i
upBtm := btm
if t <= close
float d2 = close - t
if d2 < dnDist
dnDist := d2
dnIdx := i
dnTop := t
= tfNearest(zH4, aH4)
= tfNearest(zD1, aD1)
= tfNearest(zW1, aW1)
= tfNearest(zM1, aM1)
float upBest = 1e10, dnBest = 1e10
int upArr = -1, upIdxSel = -1, dnArr = -1, dnIdxSel = -1
color upColor = color.new(color.white, 100), dnColor = color.new(color.white, 100)
if (not na(uh4y)) and uh4d < upBest
upBest := uh4d, upArr := 0, upIdxSel := uh4i, upColor := colH4
if (not na(ud1y)) and ud1d < upBest
upBest := ud1d, upArr := 1, upIdxSel := ud1i, upColor := colD1
if (not na(uw1y)) and uw1d < upBest
upBest := uw1d, upArr := 2, upIdxSel := uw1i, upColor := colW1
if (not na(um1y)) and um1d < upBest
upBest := um1d, upArr := 3, upIdxSel := um1i, upColor := colM1
if (not na(dh4y)) and dh4d < dnBest
dnBest := dh4d, dnArr := 0, dnIdxSel := dh4i, dnColor := colH4
if (not na(dd1y)) and dd1d < dnBest
dnBest := dd1d, dnArr := 1, dnIdxSel := dd1i, dnColor := colD1
if (not na(dw1y)) and dw1d < dnBest
dnBest := dw1d, dnArr := 2, dnIdxSel := dw1i, dnColor := colW1
if (not na(dm1y)) and dm1d < dnBest
dnBest := dm1d, dnArr := 3, dnIdxSel := dm1i, dnColor := colM1
// ================= Nearest-only visibility (optional) =================
hideAll(arrB, arrA) =>
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box.set_bgcolor(array.get(arrB, i), color.new(color.white, 100))
box.set_border_color(array.get(arrB, i), color.new(color.white, 100))
showOne(arrB, arrA, arrS, idx, demColor) =>
if idx >= 0 and idx < array.size(arrB)
if array.get(arrA, idx)
bool isDemand = array.get(arrS, idx) == 1
color c = isDemand ? demColor : colSup
box.set_bgcolor(array.get(arrB, idx), c)
box.set_border_color(array.get(arrB, idx), color.new(color.black, 0))
if onlyNearest
hideAll(zH4, aH4), hideAll(zD1, aD1), hideAll(zW1, aW1), hideAll(zM1, aM1)
if upArr == 0
showOne(zH4, aH4, sH4, upIdxSel, upColor)
if upArr == 1
showOne(zD1, aD1, sD1, upIdxSel, upColor)
if upArr == 2
showOne(zW1, aW1, sW1, upIdxSel, upColor)
if upArr == 3
showOne(zM1, aM1, sM1, upIdxSel, upColor)
if dnArr == 0
showOne(zH4, aH4, sH4, dnIdxSel, dnColor)
if dnArr == 1
showOne(zD1, aD1, sD1, dnIdxSel, dnColor)
if dnArr == 2
showOne(zW1, aW1, sW1, dnIdxSel, dnColor)
if dnArr == 3
showOne(zM1, aM1, sM1, dnIdxSel, dnColor)
// ================= Nearest distance labels (optional) =================
var label nearUp = na
var label nearDn = na
makeNearLabel(y, txt) =>
label.new(bar_index, y, txt, xloc=xloc.bar_index, style=label.style_label_left, color=color.new(color.black, 0), textcolor=color.white, size=size.tiny)
if showNearestLabels
if not na(nearUp)
label.delete(nearUp)
if not na(nearDn)
label.delete(nearDn)
if upArr != -1
box bUp = upArr == 0 ? array.get(zH4, upIdxSel) : upArr == 1 ? array.get(zD1, upIdxSel) : upArr == 2 ? array.get(zW1, upIdxSel) : array.get(zM1, upIdxSel)
float upBtm = box.get_bottom(bUp)
float pctUp = math.round(10000.0 * (upBtm - close) / close) / 100.0
nearUp := makeNearLabel(upBtm, "Nearest Above ~ " + str.tostring(pctUp) + "%")
if dnArr != -1
box bDn = dnArr == 0 ? array.get(zH4, dnIdxSel) : dnArr == 1 ? array.get(zD1, dnIdxSel) : dnArr == 2 ? array.get(zW1, dnIdxSel) : array.get(zM1, dnIdxSel)
float dnTop = box.get_top(bDn)
float pctDn = math.round(10000.0 * (close - dnTop) / close) / 100.0
nearDn := makeNearLabel(dnTop, "Nearest Below ~ " + str.tostring(pctDn) + "%")
// ================= Tiny legend (dots) =================
var table legend = na
if showLegend and na(legend)
legend := table.new(position.top_left, 4, 1)
if showLegend and not na(legend)
table.cell(legend, 0, 0, "● 4H", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(legend, 1, 0, "● 1D", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(legend, 2, 0, "● 1W", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(legend, 3, 0, "● 1M", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell_set_bgcolor(legend, 0, 0, color.new(color.teal, 70))
table.cell_set_bgcolor(legend, 1, 0, color.new(color.blue, 70))
table.cell_set_bgcolor(legend, 2, 0, color.new(color.orange, 70))
table.cell_set_bgcolor(legend, 3, 0, color.new(color.purple, 70))
3 Red Heikin Ashi with Higher Lows3 Red Heikin Ashi with Higher Lows will give Buy signal when 3 Red Heikin Ashi with Higher Lows is formed
3SMA (1H only) by tophengzkyThis script plots three Simple Moving Averages (SMA 10, 20, 50), but they are only visible when the chart timeframe is set to 1 hour (1H).
It helps traders focus on higher timeframe trend direction without cluttering charts on other timeframes.
SMA1 = 10 (white)
SMA2 = 20 (yellow)
SMA3 = 200 (red)
Works only on 1H timeframe
Useful for swing traders and intraday traders who rely on hourly trend confirmation.
why 1 hr only? the only purpose of this is just to know the bias of the market weather it will reverse or it will continue the trend. As long as the price action did not cross this 3 SMA's the trend will continue.
as a trend trader it is very useful this strategy.. make it simple!
MARA / mNAV=1 (x)What it does
This script overlays two signals on the MARA chart:
mNAV=1 fair-value line — the MARA price implied by Bitcoin NAV:
mNAV1 = (BTC price × BTC holdings) / MARA shares
Premium/Discount ratio — how far MARA trades vs. its NAV fair value:
Ratio = Close / mNAV1 (1.00 = fair; >1 = premium; <1 = discount)
Inputs
Shares outstanding (default: 370,460,000)
BTC holdings (official or estimated; you can roll forward +25 BTC/day if you want)
BTC symbol used for pricing (e.g., BTCUSD, BTCUSDT, BTCUSDTPERP)
How to use
When Price < mNAV=1 and Ratio < 1.00 → MARA trades at a discount to BTC NAV (potential mean-reversion if BTC is stable).
When Price > mNAV=1 and Ratio > 1.00 → premium (premium often compresses during BTC chop/weakness).
Rule of thumb (with ~53k BTC and 370.46M shares): +$1,000 BTC ≈ +$0.14 on the mNAV=1 line.
Visuals
Blue line = mNAV=1 (fair value) plotted directly on the MARA chart.
Purple line = Ratio (×) on a separate right-hand scale centered around 1.00.
Optional shading: green when Ratio > 1.05 (+5% premium), red when Ratio < 0.95 (−5% discount).
Alerts (suggested)
Premium > +5%: Ratio > 1.05
Discount < −5%: Ratio < 0.95
Notes
This is a proxy for NAV parity; it assumes your BTC holdings input is correct (official last report or your estimate).
Choice of BTC symbol matters; use the feed that best matches your workflow (spot, perp, or index).
The ratio is most informative when BTC is range-bound; during fast BTC moves MARA can overshoot temporarily.
Total Points Range by exp3rtsThis indicator measures and displays the true intraday movement of a market by approximating tick-level activity using 1-second data aggregation. Instead of only looking at net candle movement, it sums every price change during a session, giving traders a more accurate picture of market effort and volatility.
Total Points Moved (TPM) – Captures the full distance traveled by price, not just the net gain/loss.
Bullish vs. Bearish Movement – Separates upward and downward moves so you can see who dominated the session.
Custom Sessions – Define your own session start/end times and time zone for precise tracking.
End-of-Session Summary – Automatically plots a label at session completion with totals for TPM, bullish, and bearish movement.
Visual Session Highlighting – Background shading makes it easy to see when the chosen session is active.
This tool is useful for:
Understanding the true effort vs. result of price movement
Comparing volatility across sessions
Identifying whether bulls or bears contributed more to market swings
Supporting order flow and tick-based trading strategies
MTF Trend Dashboard LITE (Daily & 4H)Overview
The MTF Trend Dashboard LITE by G.C provides instant directional clarity between the Daily and 4-Hour timeframes using refined EMA (9 / 21) logic.
It’s built for traders who want simple, accurate trend confirmation without switching between multiple charts.
Why It Matters
One of the biggest causes of trading errors is timeframe conflict — seeing a bullish setup on one chart and a bearish signal on another.
This tool solves that problem by showing both the Daily and 4H structure side-by-side, using objective EMA-based logic.
When both agree, bias is strong. When they conflict, it’s a signal to wait.
Core Features
• Two-timeframe dashboard ( Daily + 4H )
• Non-repainting EMA (9 / 21) logic
• Color-coded states ( Bullish / Bearish / Neutral )
• Lightweight and easy to read
• Adjustable panel position: Top Right / Top Left / Bottom Right / Bottom Left
How to Use
Add the indicator to any chart.
Wait for both timeframes to align before entering trades.
Mixed signals often indicate sideways or transitional markets.
Combine with your existing trading strategy for confirmation.
Trend Condition Glossary
▲ STRONG BULLISH – EMA(9) well above EMA(21) and both sloping upward. Strong upward momentum with price above both EMAs.
BULLISH – EMA(9) above EMA(21) but weaker slope or price confirmation. Moderate uptrend or early recovery.
NEUTRAL – EMAs crossing or flat. Market lacks structure — consolidation or indecision.
▼ BEARISH – EMA(9) below EMA(21) with limited slope. Mild correction or early reversal.
▼ STRONG BEARISH – EMA(9) below EMA(21), both sloping down, price below both. Strong downtrend, clear seller control.
Who It’s For
Traders who want a clean, no-noise confirmation tool to simplify directional bias decisions in swing and intraday setups.
Disclaimer
This indicator is for analytical and educational purposes only. Always trade with discipline, patience, and sound risk management.
Ngo Gia Minh Quy 30Indicator xin vai ca lon a. Dung indicator nay trade thua nua thi nghi me no di. hahahahaha
Daily High/Low/Mid (Prev Day Extended Split)Very usefull indicator to understand yesterday"s high low middle and next day"s high low middle in every chart, even in renko chart. try it...
Trend Direction Indicator//This indicator simply tells the trend direction and created for listing achieves which simplifies the shares those have an UP direction.
Ngo Gia Minh Quy 50Indicator xin vai ca lon a. Dung indicator nay trade thua nua thi nghi me no di. hahahahaha
The Real Dynamic Lookback Asaf BitonThe Real Dynamic Lookback – Asaf Biton
This indicator dynamically tracks historical candles at predefined lookback intervals (in hours) and visually highlights them on the chart.
Dynamic Lookback Arrows: Marks candles from the chosen lookback groups (3h, 6h, 12h, … up to 336h) with arrows. Colors indicate whether the candle falls on the same New York trading day or not.
HUD Panel: Displays real-time information about the closest candle that overlaps with the current price range, including its price, date, day, and time.
Also Touching: If multiple candles overlap with the current bar, the closest one in time is prioritized, and the rest are listed as "Also touching".
Nearest Candle: If no overlap occurs, the HUD shows the nearest candle in terms of price proximity.
Timeframe Restriction: Works only on 15m, 30m, and 1h charts to maintain accuracy.
Customization: Users can enable or disable different lookback groups and toggle HUD/arrows.
This tool is useful for identifying recurring price reactions, time-based cycles, and historical reference points in a structured, visual way.
📌 תיאור בעברית
The Real Dynamic Lookback – אסף ביטון
האינדיקטור מזהה ומציג נרות היסטוריים לפי מחזורי זמן מוגדרים מראש (בשעות), ומסמן אותם באופן ויזואלי על הגרף.
חצים דינמיים: סימון נרות במחזורי זמן נבחרים (3h, 6h, 12h ועד 336h). הצבע משתנה בהתאם אם הנר נמצא באותו יום מסחר בניו יורק או לא.
תצוגת HUD: מציגה בזמן אמת את הנר הקרוב ביותר שנוגע בטווח המחירים של הנר הנוכחי, כולל המחיר, התאריך, היום והשעה.
Also Touching: כאשר יותר מנר אחד נוגע בטווח הנר הנוכחי, האינדיקטור נותן עדיפות לנר הקרוב ביותר בזמן ואת השאר מציג ברשימה.
Nearest Candle: אם אין נרות שנוגעים במחיר הנוכחי, מוצג הנר הקרוב ביותר מבחינת מרחק מחיר.
מגבלת טיים פריים: עובד אך ורק על גרפים של 15 דקות, 30 דקות או שעה, לשמירה על דיוק.
התאמה אישית: ניתן לבחור אילו קבוצות מחזורי זמן להפעיל ולהחליט האם להציג חצים ו-HUD.
האינדיקטור מיועד לניתוח חזרות מחירים, מחזורי זמן והשוואה לנקודות היסטוריות בצורה ברורה ונוחה.
StochRSI + MACD with Fixed TP ExitAutor WickDipper
Liquidity Finder: The liquidity zones are heuristic and based on volume and swing points. You may need to tweak the volumeThreshold and lookback to match the asset's volatility and timeframe.
Timeframe: This script works on any timeframe, but signals may vary in reliability (e.g., higher timeframes like 4H or 1D may reduce noise).
Customization: You can modify signal conditions (e.g., require only RSI or MACD) or add filters like trend direction using moving averages.
Backtesting: Use TradingView's strategy tester to evaluate performance by converting the indicator to a strategy (replace plotshape with strategy.entry/strategy.close).
No Supply (Low-Volume Down Bars) — IdoThis indicator flags classic Wyckoff/VSA “No Supply (NS)” events—down bars that print on unusually low volume, suggesting a lack of sellers rather than strong selling pressure. NS often appears near support, LPS, or within re-accumulation ranges as a test before continuation higher.
Signal definition (configurable):
Down bar: choose Close < PrevClose or Close < Open.
Low volume: Volume < SMA(Volume, len) × threshold (e.g., 0.7).
Optional volume lower than the prior two bars (reduces noise).
Optional narrow spread: range (H–L) below its average.
Optional close position: close in the upper half of the bar.
Optional trend filter: only mark NS above or below an EMA (or any).
Optional wide-bar exclusion: skip unusually wide bars.
Visuals & outputs
Blue dot below each NS bar (optional bar tint).
Separate pane showing Relative Volume (vol / volSMA) to gauge effort.
Built-in alertcondition to trigger notifications when NS prints.
Inputs (high level)
lenVol: Volume SMA length.
ratioVol: Volume threshold vs. average (e.g., 0.7 = 70%).
usePrev2: Require volume below each of the prior two bars.
useNarrow + lenRange + ratioRange: Narrow-bar filter.
useClosePos + minClosePos: Close in upper portion of the bar.
downBarMode: Define “down bar” logic.
trendFiltOn, trendLen, trendSide: EMA trend filter.
useWideFilter, lenRangeWide, wideThreshold: Skip wide bars.
How to use (Wyckoff/VSA context)
Treat NS as a test of supply: price dips, but volume is light and close holds up.
Stronger when it prints near support/LPS within a re-accumulation structure.
Confirmation (recommended): within 1–3 bars, see demand—e.g., break above the NS high with expanding volume (above average or above the prior two bars). Many traders place a buy-stop just above the NS high; common stops are below the NS low or the most recent swing low.
Scanning tip
TradingView’s stock screener can’t consume Pine directly.
Use a Watchlist Custom Column that reports “bars since NS” to sort symbols (0 = NS on the latest bar). A companion column script is provided separately.
Notes & limitations
Works on any timeframe (intraday/daily/weekly), but context matters.
Expect false positives around news, gaps, or illiquid symbols—combine with structure (trend, S/R, phases) and risk management.
© moshel — Educational use only; not financial advice.
BSP Aggressive - JarassTitle / Short Description:
BSP Aggressive – Early Trend & Smart Money Detector
Description:
Unlock the power of market insight with BSP Aggressive, the enhanced Buy/Sell Pressure indicator designed for proactive traders. Spot early trend shifts and identify where the “real money” enters the market—before price reacts!
Why BSP Aggressive?
• ⚡ Early Trend Detection: Delta line and pressure columns highlight potential trend reversals ahead of price.
• 💰 Smart Money Visibility: Green columns = strong buying, red columns = strong selling. Know where big players are active.
• 🎯 Noise Reduction: Filters out insignificant trades using volume thresholds, keeping your signals clear.
• ⏱ Intraday Friendly: Perfect for 1-min, 5-min, and 15-min charts, but adaptable to higher timeframes.
• 🛠 Trend Context: Hull MA-based coloring ensures signals align with the current market trend.
How to Use:
1. Look for green columns + rising delta → potential early uptrend.
2. Look for red columns + falling delta → potential early downtrend.
3. Ignore small, filtered columns → reduce false signals.
4. Combine with support/resistance or other trend tools for maximum accuracy.
Disclaimer:
For educational and analytical purposes only. Not a guaranteed predictor of price movements. Always use proper risk management
f.aYou can use it for Dow Jones as well. For gold at the 4:30 timeframe, you can occasionally enter with confirmation from liquidity and numeric signals—just follow the bars until you reach the target.
Engulfing Patterns with Confirmation & Confluencean advanced upgrade with confluences with STOCH and RSI confluence option in conjunction with Engulfing candles and multiple candle confirmation
Euro Area vs US10YThe Euro Area GDP-Weighted Yield vs US10Y Spread is a macroeconomic indicator designed for forex traders and institutional investors who want to monitor the fundamental interest rate differential between the Eurozone and the United States. This tool aggregates sovereign bond yields from the major Eurozone member states using a weighted methodology based on outstanding government debt, providing a comprehensive view of the Euro Area’s fixed income market dynamics.
This indicator calculates a composite 10-year government bond yield for the Eurozone by combining data from seven major member countries: Germany, France, Italy, Spain, Netherlands, Belgium, and Austria. The weights are based on the proportion of government debt outstanding in each country, reflecting the actual composition of the European sovereign bond market rather than just GDP size.
The indicator then compares this Euro Area weighted yield against the US 10-Year Treasury yield (US10Y), producing a yield spread that serves as a powerful leading indicator for EUR/USD price movements.
Multi-Timeframe MA - TCMasterThis indicator displays up to four moving averages from different timeframes on a single chart.
It’s designed for traders who want to track higher-timeframe trends while analyzing price action on lower timeframes — a key technique in multi-timeframe confluence trading.
You can freely customize the type, length, timeframe, and color for each moving average line.
⚙️ Features
4 configurable Moving Averages (each with its own type, length, and timeframe).
Supported types:
SMA, EMA, WMA, RMA, HMA, VWMA, DEMA, TEMA.
Real-time values are fetched from higher timeframes using request.security() (no repaint).
Individual visibility toggle and line width for each MA.
Dynamic info label shows current distance between price and each MA.
Built with Pine Script v6, ensuring optimal performance and flexibility.
📊 Typical Use Cases
Identify trend direction across multiple timeframes.
Confirm entries/exits using higher timeframe trend alignment.
Spot potential reversal or continuation zones when short-term price interacts with long-term MAs.
Build confluence setups for swing, scalp, or intraday strategies.
🧠 Example Setup
MA Type Length Timeframe Purpose
MA #1 SMA 200 1m Micro trend
MA #2 EMA 200 5m Short-term trend
MA #3 EMA 200 15m Medium trend
MA #4 SMA 200 30m Macro trend
🔔 Tips
Combine with oscillators (e.g., RSI, Stoch, MACD) for stronger confluence.
Use color coding to distinguish short vs long timeframe trends.
Consider adding alerts when price crosses any MA (can be extended easily in code).
⚠️ Notes
All higher-timeframe data is handled safely using lookahead=barmerge.lookahead_off to prevent repainting.
Label updates only on the latest bar for efficiency.
VWMA, DEMA, TEMA, and HMA are computed via internal formulas for compatibility with Pine Script v6.
🏁 Summary
Multi-Timeframe MA is a powerful tool for traders who want to merge the clarity of moving averages with the precision of multi-timeframe analysis.
It helps you see the bigger picture without switching charts — perfect for intraday, swing, and trend-following strategies.
Multi-Timeframe MA - TCMaster🧩 Overview
This indicator displays up to four moving averages from different timeframes on a single chart.
It’s designed for traders who want to track higher-timeframe trends while analyzing price action on lower timeframes — a key technique in multi-timeframe confluence trading.
You can freely customize the type, length, timeframe, and color for each moving average line.
⚙️ Features
4 configurable Moving Averages (each with its own type, length, and timeframe).
Supported types:
SMA, EMA, WMA, RMA, HMA, VWMA, DEMA, TEMA.
Real-time values are fetched from higher timeframes using request.security() (no repaint).
Individual visibility toggle and line width for each MA.
Dynamic info label shows current distance between price and each MA.
Built with Pine Script v6, ensuring optimal performance and flexibility.
📊 Typical Use Cases
Identify trend direction across multiple timeframes.
Confirm entries/exits using higher timeframe trend alignment.
Spot potential reversal or continuation zones when short-term price interacts with long-term MAs.
Build confluence setups for swing, scalp, or intraday strategies.
🧠 Example Setup
MA Type Length Timeframe Purpose
MA #1 SMA 200 1m Micro trend
MA #2 EMA 200 5m Short-term trend
MA #3 EMA 200 15m Medium trend
MA #4 SMA 200 30m Macro trend
🔔 Tips
Combine with oscillators (e.g., RSI, Stoch, MACD) for stronger confluence.
Use color coding to distinguish short vs long timeframe trends.
Consider adding alerts when price crosses any MA (can be extended easily in code).
⚠️ Notes
All higher-timeframe data is handled safely using lookahead=barmerge.lookahead_off to prevent repainting.
Label updates only on the latest bar for efficiency.
VWMA, DEMA, TEMA, and HMA are computed via internal formulas for compatibility with Pine Script v6.
🏁 Summary
Multi-Timeframe MA is a powerful tool for traders who want to merge the clarity of moving averages with the precision of multi-timeframe analysis.
It helps you see the bigger picture without switching charts — perfect for intraday, swing, and trend-following strategies.
Mitigation Blocks — Lite (ICT) + Stats + Entry75Mitigation Blocks — Lite (ICT) + Stats + Entry75
What it does
This indicator finds recent Mitigation Blocks (ICT-style) and draws a single active bullish and bearish block on the chart.
It also plots the 75% entry level for each active block and shows a compact performance HUD (“Отработано / Worked”) so you can quickly judge how well blocks have been reacting on the current symbol and timeframe.
Logic (brief)
Structure impulse
A new block is created when price breaks the last swing (pivot-based) with an optional ATR body filter.
After an upswing break → search the most recent bearish candle within a lookback window → its body defines the bullish block (top/bottom = max/min of that candle’s open/close).
After a downswing break → search the most recent bullish candle → defines the bearish block.
Touch & mitigation
First time price touches a block, the block is marked mitigated (border becomes dashed).
Entry line for that block is removed (no history clutter to the left).
75% entry levels
Long (bullish block): entry = top − 0.75 × (top − bottom) (deeper inside from the top).
Short (bearish block): entry = bottom + 0.75 × (top − bottom) (deeper inside from the bottom).
Lines are drawn only to the right (history on the left is hidden).
Stats (HUD)
The HUD shows Worked% per side: percentage of first touches that reached a simple target in the check window.
Current version uses a conservative proxy: success if, within the next bars, price moved away from the block by at least ~1×ATR (internally calculated) without first invalidating the block’s opposite boundary.
Values are accumulated while the script runs on the loaded chart range.
Inputs
Structure
Swing length (pivot) — pivot size to detect last swing.
Require minimum impulse / Min body × ATR / ATR length — filter for strong displacement bars.
Search last opposite candle (bars back) — lookback to find the candle that defines the block.
Style
Fill & border colors for bullish/bearish blocks.
Mitigated border color (dashed on first touch).
Entry 75% lines
Show 75% entry lines (on/off)
Colors and line width.
Autoscale
Optional hidden anchor plots for better autoscaling.
On-chart elements
Active bullish/bearish block (rectangle, extended right).
Dashed border once the block is mitigated (first touch).
75% entry line for each non-mitigated block (drawn only to the right; removed on mitigation).
HUD (top-right):
LONG | Worked: XX.X% |
SHORT | Worked: XX.X% |
If there is no active (non-mitigated) block on a side, the entry cell shows “ожидаем” (“waiting”).
How to read it
Trade from block to block: use the 75% line as a reference entry inside the zone; stops are commonly placed beyond the opposite side of the block.
Worked% helps compare symbols/timeframes: higher with a decent sample typically means more reliable reactions.
The indicator shows only the latest valid block per side to keep the chart clean.
Notes & tips
This is a discretionary tool intended to support ICT-style execution; it is not a strategy and does not place trades.
Try different timeframes. Many users prefer M5–H1 for entries and H4–D1 for context.
You can turn off entry lines if you only want the zones.
Because stats are computed on the visible history while the script runs, switching symbols/TFs will reset the counters.
Inputs (defaults)
Pivot length: 5
ATR length: 14
Min body × ATR: 1.0 (enable/disable filter)
Opposite candle lookback: 5
Entry 75% lines: ON
Bollinger ALTswap Alert v1.0 (MA28 Rotation ALT↔BTC)Inspired by: Bollinger Awesome Alert R1 by JustUncleL
What is it?
BBALTSWAP overlays Bollinger Bands (20, 2), a 3-EMA, and a Rotation MA (default 28), then gives state-change alerts to rotate between ALT ↔ BTC on any ALT/BTC chart.
Core rotation rule
• Rotate → ALT when close > Bollinger middle and close > MA28.
• Rotate → BTC when close < Bollinger middle and close < MA28.
• Otherwise: Wait (no rotation).
Labels only print when the state changes (to avoid spam). You can also compute the rotation on a higher timeframe (default 4h) while viewing a lower one (e.g., 1h).
Optional extras
• Breakout arrows (scalping-style) when 3-EMA crosses the Bollinger middle with an Awesome Oscillator direction filter.
• Bollinger Squeeze coloring (relative width) to highlight expansion/contraction.
• Min bars between labels to throttle how often rotation labels appear.
Inputs (highlights)
• Use EMA for Bollinger / Rotation MA
• Bollinger length & multiplier
• AO fast/slow lengths
• Higher-timeframe selector for rotation (default 240 = 4h)
• Show breakout arrows / show “Wait” / min bars between labels
How to use (simple playbook)
1. Chart: open your ALT/BTC pair (e.g., ETHBTC).
2. Direction: leave rotation HTF at 4h for steadier signals.
3. Execution: take rotations on bar close; manage entries on your lower TF (1h/15m) if desired.
4. Override check (optional): when BTCUSDT is in a fresh breakout, prefer BTC even if ALT flashes briefly.
Alerts
Add two alerts, Once per bar close:
• “Rotate to ALT (state change)”
• “Rotate to BTC (state change)”
Notes
• Works on any ALT/BTC pair.
• The breakout arrows are optional and independent from the rotation signals.
• This tool is educational; not financial advice.