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))
Indikator dan strategi
IDX Utility Set [zidaniee]Purpose
This indicator is not a technical analysis tool. It’s a companion overlay designed to guide your analysis of the uniquely structured Indonesia Stock Exchange (IDX).
Core Features
Centered Ticker Display – Clean, readable ticker shown at the center of the chart.
Company Name – Displays the listed company’s full name.
Active Timeframe – Shows the currently selected timeframe.
Additional Features
ATH & ATL Markers – Labels the All-Time High (ATH) and All-Time Low (ATL) and shows the percentage distance from the latest price to each level, so you can quickly gauge upside/downside room.
IDX Fraction (Tick) Levels – Visualizes Indonesia’s price-fraction (tick) brackets. This matters because tick size changes by price range—very useful for scalpers and fast traders.
ARA/ARB Levels (Realtime) – Plots Auto-Reject Upper (ARA) and Auto-Reject Lower (ARB) levels in real time. Levels refresh in line with IDX trading hours 09:00–16:00 WIB (UTC+7), so your view stays consistent both during and outside market hours. This feature already complies with the latest rules and adjustments set by the Indonesia Stock Exchange (IDX).
Suspension Status – Shows SUSPENDED if the stock is halted/suspended, helping you avoid unnecessary analysis. The suspension check compares today’s date with the last available candle date and accounts for weekends.
Note: WIB = Western Indonesia Time (UTC+7).
Trend Discovery by Alex Trend States (Up / Reversal / Down)Author: © Alex Neighbors
Version: v6
The Call/Put Arrow Indicator is a complete market direction tool that identifies high-probability CALL (bullish) and PUT (bearish) opportunities using a combination of:
Simple Moving Averages (SMA)
RSI Momentum
MACD confirmation
VWAP trend filtering
Real-time trend classification (Trending Up, Trending Down, or Reversal)
It provides visual buy/sell arrows, trend labels, and alerts, helping traders quickly recognize optimal option entry points and directional momentum changes.
*** How It Works
✅ CALL Arrow (Green, Up Arrow Below Candle):
Triggered when:
Fast SMA > Slow SMA (uptrend)
RSI > Threshold (default 55)
MACD Line > Signal Line
(Optional) Price > VWAP
🔻 PUT Arrow (Red, Down Arrow Above Candle):
Triggered when:
Fast SMA < Slow SMA (downtrend)
RSI < Threshold (default 45)
MACD Line < Signal Line
(Optional) Price < VWAP
**Trend Detection System:
Trending Up: Both SMAs rising with bullish alignment
Trending Down: Both SMAs falling with bearish alignment
Trend Reversal: Detected instantly when Fast SMA crosses the Slow SMA (marked by a diamond)
Visuals
🟩 Green arrows below candles for CALL entries
🟥 Red arrows above candles for PUT entries
🟢/🔴 Diamonds mark trend reversals
Trend status panel in the top-right corner
Optional background or bar coloring for quick visual confirmation
Alerts
You can create alerts for:
CALL Buy Signal
PUT Buy Signal
Trend Reversal Up
Trend Reversal Down
All alerts trigger exactly when arrows or reversals appear on the chart.
--Best Use
Works on any symbol or timeframe (scalping, swing, or trend trading)
Optimized for SPX, QQQ, TSLA, and high-volume tickers
Ideal for traders combining options flow or price action confirmation
Customization
You can adjust:
SMA lengths
RSI thresholds
MACD parameters
VWAP filter toggle
Background/bar coloring and panel display
Why Traders Love It
Simple, clean chart visuals
Non-repainting, confirmed-bar signals
Multi-filter logic for high accuracy
Trend panel for instant context
Use this indicator to stay on the right side of the market.
Identify reversals early, trade the momentum confidently, and never miss your next CALL or PUT setup again.
JNGO - Moving Average Convergence DivergenceMACD Script Im testing out among friends for Moving Average Convergence Divergence
Alt buy signal 1H Entry + 4H Confirm (MACD + Stoch RSI + HMA)This indicator is a multi-timeframe (MTF) analysis tool designed for the ALT trading , capturing entry signals on the 1-hour (1H) timeframe and confirming trends on the 4-hour (4H) timeframe. It combines MACD, Stoch RSI, and Hull Moving Average (HMA) to identify precise buy opportunities, particularly at reversal points after a downtrend or during trend shifts. It visually marks both past and current BUY signals for easy reference.
Key Features:
1H Entry Signal (Early Ping): Triggers on a MACD golden cross (below 0) combined with a Stoch RSI oversold cross (below 20), offering an initial buy opportunity.
4H Trend Confirmation (Entry Ready): Validates the trend with a 4H MACD histogram rising (in negative territory) or a golden cross, plus a Stoch RSI turn-up (above 30).
Past BUY Display: Labels past data points where these conditions were met as "1H BUY" or "FULL BUY," facilitating backtesting.
HMA Filter: Optional HMA(16) to confirm price breakouts, enhancing trend validation.
Purpose: Ideal for short-term scalping and swing trading. Supports a two-step strategy: initial partial entry on 1H signals, followed by additional entry on 4H confirmation.
Usage Instructions
Installation: Add the indicator to an IMX/USDT 1H chart on TradingView.
Signal Interpretation:
lime "1H BUY": 1H conditions met, consider initial entry (stop-loss: 3-5% below recent low).
green "FULL BUY": 1H+4H conditions met, confirm trend for additional entry (take-profit: 10% below recent swing high).
Customization: Adjust TF (1H/4H), MACD/Stoch RSI parameters, and HMA usage via the input settings.
Alert Setup: Enable alerts for "ENTRY READY" (1H+4H) or "EARLY PING" (1H only) conditions.
Advantages
Accuracy: Reduces false signals by combining MACD golden cross below 0 with Stoch RSI oversold conditions.
Dual Confirmation: 1H for quick timing and 4H for trend validation, improving risk management.
Visualization: Past BUY points enable easy backtesting and pattern recognition.
Flexibility: 4H confirmation mode adjustable (histogram rise or golden cross).
Limitations
Timeframe Dependency: Optimized for 1H charts; may not work on other timeframes.
Market Conditions: Potential whipsaws in sideways markets; additional filters (e.g., RSI > 50) recommended.
Manual Management: Stop-loss and take-profit require user discretion.
TTM Squeeze Range Lines (with Forward Extension) By Gautam KumarThis TTM Squeeze Range Lines script helps visualize breakout levels by marking the recent squeeze’s high and low, making it easier to identify potential trade setups. Each signal line is extended for visibility, showing possible entry levels after a squeeze.
Interpreting the LinesLight blue background marks periods when the TTM squeeze is active (tight volatility).
Green line is drawn at the highest price during the squeeze, extended forward—this is commonly used as the breakout level for long entries.
Red line shows the lowest price during the squeeze, indicating the bottom of the range—potential stop loss positioning or an invalidation level.
When the squeeze background disappears, the horizontal lines will have just appeared and extended forward for several bars after the squeeze ends.
If the price breaks above the green line (the squeeze high), it signals a possible momentum breakout, which traders often use as a long entry.
The red line can be used for placing stop losses or monitoring failed breakouts if price falls below this level.
Best Practices
Combine these levels with volume and momentum confirmation for strong entries.
Adjust the extension length (number of bars forward) from the settings menu to fit your preference.
For systematic trading, use these breakout signals alongside chart pattern or histogram confirmation.
This makes it easy to visualize strong entry zones based on the end of squeeze compression, supporting both discretionary and automated swing trading approaches
EMA 20+50 + MACD Strateji ( omerprıme)EASY BUY-SELL basitçe al -sat yapabileceğiniz macd indikatörü ve ema kullanılmış bir indikatördür unutmayın ki ne kadar basit o kadar verimli.
Moving Averages) to generate trading signals and trend confirmation.
Trend Identification with EMA
Two EMAs are used to determine the overall market trend (commonly a short-term EMA and a long-term EMA).
When the short EMA crosses above the long EMA, it indicates an uptrend.
When the short EMA crosses below the long EMA, it signals a downtrend.
Signal Confirmation with MACD
The MACD line and Signal line are analyzed to detect momentum shifts.
A bullish signal occurs when the MACD line crosses above the Signal line, especially if the EMAs confirm an uptrend.
A bearish signal occurs when the MACD line crosses below the Signal line, especially if the EMAs confirm a downtrend.
Trading Logic
Buy signals appear only when both the EMA trend is bullish and the MACD confirms momentum to the upside.
Sell signals appear only when both the EMA trend is bearish and the MACD confirms momentum to the downside.
Trend RiderTrend Rider is an all-in-one trading tool that helps you catch reversals, confirm trends, and spot key market levels with precision. It blends EMA clouds, volume filters, Bollinger Bands, swing levels, and session ranges into one streamlined system.
What makes Trend Rider powerful
• Dual EMA Clouds – clearly show short-term vs. long-term trend direction.
• Buy/Sell Signals – triggered on EMA crossovers, confirmed by volume strength.
• BB Reversal Mode – filters trades with Bollinger volatility and proximity to band extremes.
• Swing Levels – auto-plot important Highs/Lows as dynamic support and resistance.
• Session Ranges – highlight U.S. session and weekend boxes to track liquidity and gaps.
• Timeframe Guard – optimized exclusively for the 15-minute chart for higher accuracy.
• Alerts – every signal can fire TradingView notifications on bar close for higher reliability.
Core Value
Instead of stacking multiple tools, Trend Rider merges everything into one: trend confirmation, volume analysis, volatility filters, and key levels. The result is cleaner charts, sharper signals, and faster decisions.
Сreated with vibecoding using ChatGPT and Claude.
MACD cu RSI 7 Fibonacci color levelsMACD with RSI info
The RSI is display as value with changing color as Fibonacci levels.
Round Number Analyzer v3Round Number Analyzer v3 is an indicator designed to analyze how price interacts with round number levels (levels spaced at fixed intervals in points or pips).
The indicator does not generate entry/exit signals, but provides detailed statistics to better understand market dynamics around these key levels.
✨ Key Features
Cross Counting: detects every time the price crosses a round number level (up = Long, down = Short).
Continuations & Reversals: classifies each cross as:
Continuation: the move continues in the same direction as the previous sequence.
Reversal: the move changes direction compared to the previous sequence.
Sequence Classification (L1…L5+): each level is labelled based on its position within the consecutive cross sequence:
L1 = first level of the sequence,
L2 = second consecutive,
…
L5+ = fifth or higher.
Comprehensive Stats Table (top right corner):
Total crosses (Long, Short, Totals).
Total continuations + breakdown by L1…L5+.
Total reversals + breakdown by L1…L5+.
Percentages calculated against the proper denominator, displayed directly inside the cells next to the absolute values.
Date range of analysis (user-defined).
Customizable Step: Works in both points and pips, making the indicator suitable for indices and forex.
⚙️ Main Inputs
Start date / End date → sets the analysis period.
Step mode → Points or Pips.
Step value → distance between round levels.
Pip size → pip size (default = 0.0001, typical for forex).
📈 How to Interpret
A high continuation percentage after L1–L2 suggests the market tends to extend multiple times beyond the first breakout levels.
Higher reversal percentages at advanced levels (L4–L5+) may signal trend exhaustion.
The analysis helps estimate the probability of continuation or reversal depending on how many consecutive levels have already been crossed.
🔎 Practical Applications
Support for breakout or mean-reversion strategies.
Comparative analysis across different markets (e.g. indices vs forex) or different time periods.
📝 Notes
The indicator is timeframe-robust, as it accounts for multiple steps within the same candle, ensuring results do not depend on the selected timeframe (except for TradingView’s historical data limits).
It does not provide automatic trading signals, but serves as a quantitative analysis tool to refine your strategies.
---
Round Number Analyzer v3 è un indicatore pensato per analizzare come il prezzo interagisce con i livelli di round number (livelli a distanza fissa in punti o pips).
L’indicatore non genera segnali di ingresso/uscita, ma fornisce statistiche dettagliate utili per comprendere la dinamica del mercato attorno a questi livelli.
✨ Funzionalità principali
Conteggio dei Cross: rileva ogni volta che il prezzo attraversa un livello round (verso l’alto = Long, verso il basso = Short).
Continuations & Reversals: classifica ogni attraversamento come:
Continuation: il movimento prosegue nella stessa direzione della sequenza precedente.
Reversal: il movimento inverte la direzione rispetto alla sequenza precedente.
Classificazione per sequenza (L1…L5+): ogni livello è etichettato in base alla sua posizione nella sequenza di cross consecutivi:
L1 = primo livello della sequenza,
L2 = secondo consecutivo,
…
L5+ = quinto o superiore.
Statistiche complete in tabella (in alto a destra):
Cross totali (Long, Short, Totals).
Continuations totali + breakdown per L1…L5+.
Reversals totali + breakdown per L1…L5+.
Percentuali calcolate sul denominatore corretto, mostrate direttamente dentro le celle accanto ai valori assoluti.
Date range di analisi (impostabile dall’utente).
Step personalizzabile: puoi lavorare sia in punti che in pips, così l’indicatore è adatto sia per indici che per forex.
⚙️ Input principali
Start date / End date → imposta l’intervallo temporale di analisi.
Step mode → punti o pips.
Step value → ampiezza tra i livelli round.
Pip size → dimensione del pip (default = 0.0001, tipico per il forex).
📈 Come interpretarlo
Una percentuale di continuation molto alta dopo L1–L2 indica che il mercato tende a proseguire più volte oltre i primi livelli di breakout.
Percentuali di reversal più elevate nei livelli avanzati (L4–L5+) possono suggerire esaurimento della spinta.
L’analisi permette di stimare la probabilità che un movimento in corso continui o si inverta in base a quanti livelli sono già stati attraversati consecutivamente.
🔎 Applicazioni pratiche
Supporto per strategie di breakout o mean reversion.
Analisi comparativa tra mercati (es. indici vs forex) o tra periodi temporali diversi.
📝 Note
L’indicatore è timeframe-robust: il conteggio tiene conto di multipli step dentro la stessa candela, così i risultati non dipendono dal timeframe scelto (salvo i limiti di caricamento storico di TradingView).
Non fornisce segnali operativi automatici, ma è un tool di analisi quantitativa per affinare le proprie strategie.
3/4-Bar GRG / RGR Pattern (Conditional 4th Candle)This indicator can be used to identify the Green-Red-Green or Red-Green-Red pattern.
It is a price action indicator where a price action which identifies the defeat of buyers and sellers.
If the buyers comprehensively defeat the sellers then the price moves up and if the sellers defeat the buyers then the price moves down.
In my trading experience this is what defines the price movement.
It is a 3 or 4 candle pattern, beyond that i.e, 5 or more candles could mean a very sideways market and unnecessary signal generation.
How does it work?
Upside/Green signal
Say candle 1 is Green, which means buyers stepped in, then candle 2 is Red or a Doji, that means sellers brought the price down. Then if candle 3 is forming to be Green and breaks the closing of the 1st candle and opening of the 2nd candle, then a green arrow will appear and that is the place where you want to take your trade.
Here the buyers defeated the sellers.
Sometimes candle 3 falls short but candle 4 breaks candle 1's closing and candle 2's opening price. We can enter on candle 4.
Important - We need to enter the trade as soon as the price moves above the candle 1 and 2's body and should not wait for the 3rd or 4th candle to close. Ignore wicks.
I have restricted it to 4 candles and that is all that is needed. More than that is a longer sideways market.
I call it the +-+ or GRG pattern.
Stop loss can be candle 2's mid for safe traders (that includes me) or candle 2's body low for risky traders.
Back testing suggests that body low will be useless and result in more points in loss because for the bigger move this point will not be touched, so why not get out faster.
Downside/Red signal
Say candle 1 is Red, which means sellers stepped in, then candle 2 is Green or a Doji, that means buyers took the price up. Then if candle 3 is forming to be Red and breaks the closing of the 1st candle and opening of the 2nd candle then a Red arrow will appear and that is the place where you want to take your trade.
Sometimes candle 3 falls short but candle 4 breaks candle 1's closing and candle 2's opening price. We can enter on candle 4.
We need to enter the trade as soon as the price moves below the candle 1 and 2's body and should not wait for the 3rd or 4th candle to close.
I have restricted it to 4 candles and that is all that is needed. More than that is a longer sideways market.
I call it the -+- or RGR pattern.
Stop loss can be candle 2's mid for safe traders ( that includes me) or candle 2's body high for risky traders.
Back testing suggests that body high will be useless and result in more points in loss because for the bigger move this point will not be touched, so why not get out faster.
Important Settings
You can enable or disable the 4th candle signal to avoid the noise, but at times I have noticed that the 4th candle gives a very strong signal or I can say that the strong signal falls on the 4th candle. This is mostly a coincidence.
You can also configure how many previous bars should the signal be generated for. 10 to 30 is good enough. To backtest increase it to 2000 or 5000 for example.
Rest are self explanatory.
Pointers
If after taking the trade, the next candle moves in your direction and closes strong bullish or bearish, then move SL to break even and after that you can trail it.
If a upside trade hits SL and immediately a down side trade signal is generated on the next candle then take it. Vice versa is true.
Trades need to be taken on previous 2 candle's body high or low combined and not the wicks.
The most losses a trader takes is on a sideways day and because in our strategy the stop loss is so small that even on a sideways day we'll get out with a little profit or worst break even.
Hold targets for longer targets and don't panic.
If last 3-4 days have been sideways then there is a good probability that day will be trending so we can hold our trade for longer targets. Target to hold the trade for whole day and not exit till the day closes.
In general avoid trading in the middle of the day for index and stocks. Divide the day into 3 parts and avoid the middle.
Use Support/Resistance, 10, 20, 50, 200 EMA/SMA, Gaps, Whole/Round numbers(very imp) for identifying targets.
Trail your SL.
For indexes I would use 5 min and 15 min timeframe.
For commodities and crypto we can use higher timeframe as well. Look for signals during volatile time durations and avoid trading the whole day. Signal usually gives good targets on those times.
If a GRG or RGR pattern appears on a daily timeframe then this is our time to go big.
Minimum Risk to Reward should be 1:2 and for longer targets can be 1:4 to 1:10.
Trade with small lot size. Money management will happen automatically.
With small lot size and correct Risk-Re ward we can be very profitable. Don't trade with big lot size.
Stay in the market for longer and collect points not money.
Very imp - Watch market and learn to generate a market view.
Very imp - Only 4 candles are needed in trading - strong bullish, strong bearish, hammer, inverse hammer and doji.
Go big on bearish days for option traders. Puts are better bought and Calls are better sold.
Cluster of green signals can lead to bigger move on the upside and vice versa for red signals.
Most of this is what I learned from successful traders (from the top 2%) only the indicator is mine.
ADX Colored by AO + DI DifferenceADX Colored by AO + DI Difference pepito
he Average Directional Index (ADX) is a technical analysis indicator used in trading to measure the strength of a trend in an asset's price, such as stocks, forex, or cryptocurrencies. Developed by J. Welles Wilder Jr. in 1978, it’s part of the Directional Movement Index (DMI) system.
DAMMU Buy vs Sell Liquidity + DifferenceIndicator Name:
Buy vs Sell Liquidity + Difference
Purpose:
This indicator helps traders analyze market liquidity by comparing the cumulative buy and sell volumes within a specified timeframe. It shows which side (buyers or sellers) is dominating and the magnitude of the imbalance.
Key Features:
Aggregation Timeframe:
Users can select the timeframe (1, 2, 3, 5, 15, 30 minutes) for which volume is analyzed.
Buy & Sell Volume Calculation:
Buy Volume: Total volume of candles where close > open.
Sell Volume: Total volume of candles where close < open.
Daily Reset:
Totals reset at the start of each new day, ensuring intra-day liquidity analysis.
Difference Calculation:
Shows the absolute difference between buy and sell volumes.
Also calculates the difference as a percentage of total volume.
Percentages:
Displays buy %, sell %, and diff % to 4 decimal places, giving precise insights.
Table Display:
A two-row table in the top-right corner of the chart:
Row 1: Absolute totals for BUY, SELL, and DIFF (full numbers with commas).
Row 2: Percentages for BUY, SELL, and DIFF (4 decimals).
Uses color coding: Green for BUY, Red for SELL, Dynamic for DIFF (based on dominance).
How to Use:
High Buy Volume: Indicates strong buying pressure; bullish sentiment.
High Sell Volume: Indicates strong selling pressure; bearish sentiment.
Large DIFF %: Signals dominant market side; useful for short-term scalping or spotting liquidity imbalance.
Comparing BUY vs SELL %: Helps identify when the market may reverse or continue the trend.
If you want, I can also make a 1-paragraph “trader-friendly” explanation that you could directly include in your Pine Script as a comment or in a strategy guide.
Triple VWAP [JopAlgo]Triple VWAP — three volume-weighted rails for trend, pullback, and reversion
Core idea
This is three rolling VWAPs (VWMA-style) with user-set lengths. Together they show:
Trend structure → stack & slope of the three lines
Pullback zones → dynamic VWAP supports/resistances
Reversion risk → distance from the fastest VWAP
Use the stack (fast/medium/slow) for bias, slope for momentum, and distance to avoid chasing.
What you’ll see
VWAP 1 (fast), VWAP 2 (medium), VWAP 3 (slow)
Colors match inputs; each line can be toggled on/off
No bands or extras—just three clean volume-weighted rails
Read it fast → Which line is on top? Are they fanning out or braiding? How far is price from the fast VWAP?
How to use it (simple playbook)
Direction filter
Bullish bias → fast above medium above slow and slopes ↗
Bearish bias → fast below medium below slow and slopes ↘
Entry timing
Trend pullback (with level): In a bullish stack, wait for price to retest fast/medium VWAP at a real level → look for the first higher-low and continuation.
Reclaim / reject: Long when price reclaims fast → medium with holds (mirror for shorts on rejects).
Don’t chase: If price is far above the fast VWAP, wait for a revert toward fast before engaging.
Location first (always)
Act at real references → Volume Profile v3.2 (VAH/VAL/POC/LVNs) and Anchored VWAP
No level → no trade
Quality check (optional)
CVDv1 → prefer Alignment OK, avoid entries when Absorption reads against your side
Entries, exits, risk
Continuation long: Bullish stack ↗, pullback into fast/medium at VAL / AVWAP / LVN, hold → enter
Stop → below structure/last swing • Targets → POC/HVNs or prior swing
Break + retest: Price crosses medium and holds above it, lines begin to fan out ↗ → enter on the retest
Fade to value (advanced): Extended move into VAH with price stretched far from fast VWAP → look for reject and revert toward POC/fast
Trim/Avoid: Into HVNs with lines flattening or braiding → take profits / stand down
Settings that matter (and how to tune)
VWAP Length 1 / 2 / 3 → choose a fast / medium / slow ladder
Shorter = more reactive, more noise
Longer = steadier bias, more lag
Visibility toggles → hide one line if cluttered; many traders keep fast & slow only
Starter presets
Scalp (1–5m) → 20 / 50 / 100
Intraday (15m–1H) → 50 / 100 / 200
Swing (2H–4H) → 50 / 150 / 300
High-vol pairs → 30 / 60 / 120
Pattern cheat sheet
Stack flip: Fast crosses medium, then slow, and all slopes turn ↗ / ↘ → regime change
Triple pinch → expansion: Lines braid tight, then fan out with price holding a level → expansion leg
Kiss & go: Pullback tags fast VWAP in trend and bounces → add/enter with structure
Mean-revert tag: Stretch away from fast into VP edge → revert toward fast/POC
Best combos (kept simple)
Volume Profile v3.2 → entries at VAH/VAL/LVNs, targets at POC/HVNs
Anchored VWAP → session/weekly/event anchors for major reclaims/rejections; use Triple VWAP for day-to-day timing
CVDv1 (optional) → take VWAP-aligned setups with flow; skip when Absorption is against you
Common mistakes this helps you avoid
Trading against the VWAP stack
Chasing far from the fast VWAP
Acting mid-range while lines braid (do less; wait for expansion or edges)
Disclaimer
This indicator and write-up are for education only, not financial advice. Trading involves risk; results vary by market, venue, and settings. Test first, trade at defined levels, and manage risk. No guarantees or warranties are provided.
WaveTrend Oscillator v3 [JopAlgo]WaveTrend Oscillator v3 — reversal focus with confirmation, not guesswork
Core idea
WaveTrend (WT) gives you a smoothed oscillator pair (WT1 and WT2) with overbought/oversold rails and a momentum histogram. This v3 adds two filters so reversals are earned, not guessed:
Heikin-Ashi trend check → only take crosses with candle bias
Reversal Confidence Score (RCS) → only fire when momentum vs ATR is strong enough
Add an optional divergence check so you only act when price and oscillator disagree into extremes.
What you’ll see
WT1 (green) and WT2 (red)
Histogram = WT1 − WT2 (gray columns)
Rails: Overbought = +60, Oversold = −60, and the Zero line
Labels when all conditions align → Smart Buy (below) or Smart Sell (above)
Read it fast → Are we near +60/−60? Did WT1 cross WT2? Is the histogram expanding in that direction? Did a Smart label print?
How the signals are built
A signal prints only if all are true:
Cross → Bull: WT1 crosses up WT2; Bear: WT1 crosses down WT2
Extreme → Bull: WT1 below −60; Bear: WT1 above +60
RCS filter → |WT1 − WT2| scaled by ATR must be > threshold (default 80)
Heikin-Ashi agreement → HA close vs open points the same way as the cross
Divergence (lookback N) → Bull: oscillator makes lower low while price doesn’t; Bear: oscillator higher high while price doesn’t
Result → a reversal-grade setup, not a continuation ping.
How to use it (simple playbook)
Direction filter
If you want a pure reversal tool, keep the default rails (+60/−60) → you’ll wait for true extremes.
If you want more frequency, relax the rails (e.g., +50/−50) or lower RCS (e.g., 70 → 65). More signals → more noise.
Entry logic
Long reversal template
→ Price drives down into a value area edge (VAL/LVN)
→ WT1 < −60, WT1 ↗ WT2, RCS > threshold, HA bias up, bullish divergence
→ Enter on reclaim of the level or on the first higher-low after the cross
Short reversal template
→ Price pushes into VAH/HVN
→ WT1 > +60, WT1 ↘ WT2, RCS > threshold, HA bias down, bearish divergence
→ Enter on rejection and lower-high after the cross
Location first (always)
Use Volume Profile v3.2 (VAH/VAL/POC/LVNs) for where to act
Use Anchored VWAP (session/weekly/event) for who has control
No level → no trade. A WT flip into a level is better than one mid-range.
Risk & targets
Stops → beyond the sweep extreme or beyond the reclaimed level
Targets → ladder to next Fib/VP nodes (POC/HVNs, VA mid), then trail behind swings or the WT zero-line reclaim
Settings that matter (and how to tune)
WT Length (default 10) → core smoothing of the channel
→ Lower = faster turns; higher = calmer oscillator
WT EMA Smoothing (default 21) and Signal Smoothing (default 3)
→ Increase to reduce chop; decrease to react earlier
Overbought / Oversold (default +60/−60)
→ Tighten to +50/−50 for more frequent reversals; widen to +70/−70 for only the strongest
RCS Threshold (default 80)
→ Down to 70 for earlier triggers; up to 90 for only the punchiest turns
Divergence Lookback (default 5)
→ Shorter finds more local divs; longer finds bigger swings
Starter presets
Intraday (15m–1H) → WT 10/21, signal 3, rails ±60, RCS 80, div 5
Swing (2H–4H) → WT 14/28, signal 3–5, rails ±60/±70, RCS 85–90, div 7–9
Pattern cheat sheet
Double-dip divergence → oscillator prints a lower low near −60 while price holds a higher low → high-quality long if RCS/HA agree
Zero-line reclaim after a smart long → momentum shift; use it to trail stops or add on retest
Failure signal → cross fires but RCS < threshold or histogram shrinks back toward 0 into a level → stand down or cut quick
Overbought drift → WT pinned near +60/+70 without cross down → trend grind; don’t fade blindly
Best combos (kept simple)
Volume Profile v3.2 → take WT reversals at VAH/VAL/LVNs; target POC/HVNs
Anchored VWAP → WT cross with an AVWAP reclaim/reject is higher quality
CVDv1 (optional) → prefer flows that align with the reversal; avoid if absorption is fighting you
Common mistakes this helps you avoid
Fading every spike without RCS/HA confirmation
Taking reversals mid-range, far from levels
Treating divergence as timing (it’s context; you still need the cross + filter)
Ignoring the zero-line behavior after entry (weak follow-through)
Disclaimer
This indicator and write-up are for education only, not financial advice. Trading involves risk; results vary by market, venue, and settings. Test first, act at defined levels, and manage risk. No guarantees or warranties are provided.
Live Position SizerThis position calculator locks onto the live price in real time and calculates your lot and quantity size for you. Best for scalping if you don't want to open a limit order. You input all the necessary data (Account size, risk, SL placement, LONG/SHORT position, etc...) It also has a nifty feature of allowing you the ability to see TP brackets (+1R, +2R, +3R).
The best way I have used it is seeing where my potential SL will go before I consider opening a position and inputting that. Then when I'm ready to open a position, I already have it calculated for me.
Current Price (Customizable) by DRtradeCurrent Price Line & Dynamic Label (Fully Customizable)
The ultimate tool for clear, real-time price visualization.
This powerful, lightweight indicator draws a clean horizontal line at the current market price, updating instantly with every price tick. Unlike other current price line scripts, this tool ensures you always see where the price is right now and provides full control over every visual element.
Key Features:
- Real-Time Tracking: The line moves dynamically with price ticks within the current candle, eliminating lag and providing true current market price awareness.
- Line Extension Control: Choose to extend: Left, Right, or Both. Helpful for scalpers and options traders
- Visual Customizations: Color, Style, Size, Width, etc.
- Label Positioning: Left of Candle, Above Candle, or Right of Candle
All customization options are available in the indicator's settings menu.
Ping me with feature reqeusts.
Ultra Clean Support / Resistance LevelsThis Provides a very clean Support and Resistance level on any timeframe
Intraday Key OpensIntraday Key Opens plots the key session and cycle opening prices: 90-minute cycles opens, New York open, Asia open, and 9:30 US market open. Each line is labeled, color-coded, and can be toggled on/off independently. Designed for intraday traders to quickly identify important price levels and session pivots.
CCI + MACD Signal MTF (2nd-cross)This custom indicator combines the Commodity Channel Index (CCI) and the MACD to generate trading signals.
Basic signals (dots):
A green dot is plotted when CCI is above +100 and MACD is positive.
A red dot is plotted when CCI is below –100 and MACD is negative.
These dots help visualize momentum alignment between the two indicators.
Second-cross signals (text + alert):
The indicator also tracks cycles of the CCI.
When CCI first moves above +100 and later falls back below +100, this is counted as one completed cycle.
The next time CCI crosses back above +100 (the second cross), if MACD is still positive, a “BUY” label is plotted and a buy alert is triggered.
Conversely, when CCI first moves below –100 and later rises back above –100, that is one completed cycle.
The next time CCI crosses back below –100 (the second cross), if MACD is negative, a “SELL” label is plotted and a sell alert is triggered.
Alerts:
Alerts are only fired on the second-cross events (BUY or SELL), making them rarer but potentially more reliable than the basic dot conditions.
Timeframe flexibility:
Both the CCI and the MACD can be calculated on custom timeframes independently of the chart’s timeframe.
Chart-prepFxxDanny Chart-Prep
A practical multi-tool script for clean and structured chart preparation.
✨ Features
Weekly Close Levels
Automatically plots the previous week’s close and the week before that, with clear styling to distinguish current and past levels.
Trading Sessions
Colored session boxes for the three key market sessions:
Asia (20:00–23:00 UTC-4)
Europe (02:00–05:00 UTC-4)
New York (08:00–11:00 UTC-4)
Each session box automatically adapts to the session’s high/low range and only keeps the last 5 visible to avoid clutter.
Previous Day’s High & Low
Plots the prior day’s high and low with lines that extend into the current session. Up to 10 days are kept on the chart.
Daily & Weekly Separators
Vertical lines to visually separate days (dotted) and weeks (solid, colored).
Anchored to a rolling price window so the Y-axis scaling stays clean and unaffected.
✅ Benefits
Stay focused with key price levels and session ranges marked automatically.
No need for manual drawing or constant adjustments.
Optimized performance – old objects are automatically removed.
No axis distortion from “infinite” lines or boxes.