SMC — Liquidity • Strong FVG • OB Levels • VWAP • POI Score📌 Indicator Overview
This script is an advanced market structure and liquidity mapping tool built for traders who want clarity on when momentum is shifting and where the most impactful trade opportunities may emerge. It combines institutional concepts of supply/demand with price efficiency and volume dynamics to highlight areas where smart money is most active.
🎯 What It Does
Identifies liquidity grabs and inducement moves that often precede reversals.
Maps high-impact price imbalance zones (fair value gaps) and automatically manages them once price interacts.
Marks institutional order blocks with optional precision levels and customizable visuals for clean charting.
Auto-anchors VWAP with deviation bands to fresh impulsive moves to capture mean reversion opportunities.
Provides a priority scoring system to weigh confluences and highlight the most actionable areas of interest.
Session heatmap overlays reveal Asia / London / New York influence on intraday direction.
⚡ Best Use Cases
Works across Forex, Indices, Commodities, and Crypto.
Especially effective on instruments with high liquidity and volatility such as XAUUSD (Gold), BTCUSD, ETHUSD, US30, and major FX pairs.
Performs best when aligned with HTF bias (daily / 4H) while executing on intraday timeframes (5m–15m).
Kill-zone filtering (Asia / London / New York sessions) helps refine entries for higher reward trades.
🔧 Key Features
Customizable visuals: change colors, opacity, and line sizes for order blocks and levels.
Mitigation handling: choose whether imbalances fade out or disappear once filled.
Strong zone filter: option to display only the most meaningful fair value gaps with proven impact.
Multi-factor scoring HUD: at a glance see where liquidity, imbalance, OB, VWAP, and session confluence align.
Alerts ready: receive notifications on liquidity sweeps, OB taps, or FVG entries that match your trading bias.
✅ Why Traders Use It
This tool acts as a market map, removing noise and drawing attention only to the most relevant price events and zones. Instead of chasing every break of structure, it helps traders wait for the smart money footprints that often precede large directional moves.
指標和策略
RTW Moving AveragesA clean and focused moving averages indicator displaying 5 pairs of EMAs and SMAs (10 total lines) with standard periods: 10, 20, 50, 100, and 200. All moving averages are enabled by default with a carefully designed color scheme and opacity levels for optimal chart readability.
Features:
5 EMAs and 5 SMAs with popular trading periods
Multi-timeframe support for each moving average
Color-coded with varying opacities (EMAs more prominent, SMAs subtler)
Clean interface with hidden settings for distraction-free trading
Overlay indicator compatible with all chart types
Default Colors:
10 Period: Light gray
20 Period: White (most prominent)
50 Period: Orange
100 Period: Dark orange
200 Period: Red
Perfect for trend analysis, support/resistance identification, and multi-timeframe confluence trading strategies.
High Low + BOS/Sweep aaa//@version=5
indicator("High Low + BOS/Sweep", overlay=true, max_lines_count=500, max_labels_count=500)
// Inputs (giữ nguyên các tuỳ chọn của bạn, chỉ bỏ input màu)
offTop = input.int(2, "Offset đỉnh", minval=0)
offBot = input.int(2, "Offset đáy", minval=0)
w = input.int(2, "Độ dày line", minval=1)
styleBosStr = input.string("Solid", "Kiểu line BOS", options= )
styleSweepStr = input.string("Dashed", "Kiểu line Sweep", options= )
showBosLabel = input.bool(true, "Hiện label BOS")
showSweepLabel = input.bool(true, "Hiện label Sweep")
bosLabelText = input.string("BOS", "Text BOS")
sweepLabelText = input.string("SWEEP", "Text Sweep")
labelSizeStr = input.string("tiny", "Kích thước label", options= )
// NEW: display toggles
showPivot = input.bool(true, "Hiện Pivot")
showBosSweep = input.bool(true, "Hiện BOS / Sweep")
// Convert styles / sizes
bosStyle = styleBosStr == "Dashed" ? line.style_dashed : styleBosStr == "Dotted" ? line.style_dotted : line.style_solid
sweepStyle = styleSweepStr == "Dashed" ? line.style_dashed : styleSweepStr == "Dotted" ? line.style_dotted : line.style_solid
lblSize = labelSizeStr == "small" ? size.small : labelSizeStr == "normal" ? size.normal : labelSizeStr == "large" ? size.large : size.tiny
// State vars
c = close
var int lastSignal = 0
var float sHigh = na
var int sHighBar = na
var float sLow = na
var int sLowBar = na
var float confHigh = na
var int confHighBar = na
var float confLow = na
var int confLowBar = na
var line highLine = na
var line lowLine = na
var label highLabel = na
var label lowLabel = na
// === Đánh dấu loại line: 0 = chưa có, 1 = Sweep, 2 = BOS ===
var int highLineType = 0
var int lowLineType = 0
// === Sweep tracking / pending ===
var bool pendingSweepUp = false
var bool pendingSweepDown = false
var int sweepDetectedBarUp = na
var float sweepTargetHighPrice = na
var int sweepTargetHighBar = na
var int sweepDetectedBarDown = na
var float sweepTargetLowPrice = na
var int sweepTargetLowBar = na
// === Track BOS pivots ===
var int lastBOSHighBar = na
var int lastBOSLowBar = na
// Track swing
if (lastSignal == -1) or (lastSignal == 0)
if na(sHigh) or high > sHigh
sHigh := high
sHighBar := bar_index
if (lastSignal == 1) or (lastSignal == 0)
if na(sLow) or low < sLow
sLow := low
sLowBar := bar_index
// Confirm pivot
condTop = c < low
condBot = c > high
isTop = condTop and (lastSignal != 1)
isBot = condBot and (lastSignal != -1)
// On pivot confirm
if isTop
confHigh := sHigh
confHighBar := sHighBar
highLine := na
highLabel := na
highLineType := 0
if showPivot
label.new(confHighBar, confHigh + syminfo.mintick * offTop, "●", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_none, textcolor=color.red, size=size.small)
lastSignal := 1
sHigh := na
sHighBar := na
sLow := low
sLowBar := bar_index
if isBot
confLow := sLow
confLowBar := sLowBar
lowLine := na
lowLabel := na
lowLineType := 0
if showPivot
label.new(confLowBar, confLow - syminfo.mintick * offBot, "●", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_none, textcolor=color.lime, size=size.small)
lastSignal := -1
sLow := na
sLowBar := na
sHigh := high
sHighBar := bar_index
// Raw sweep detection
rawSweepUp = not na(confHigh) and (na(lastBOSHighBar) or confHighBar != lastBOSHighBar) and high > confHigh and close <= confHigh
rawSweepDown = not na(confLow) and (na(lastBOSLowBar) or confLowBar != lastBOSLowBar) and low < confLow and close >= confLow
if rawSweepUp
pendingSweepUp := true
sweepDetectedBarUp := bar_index
sweepTargetHighPrice := confHigh
sweepTargetHighBar := confHighBar
if rawSweepDown
pendingSweepDown := true
sweepDetectedBarDown := bar_index
sweepTargetLowPrice := confLow
sweepTargetLowBar := confLowBar
// Check sweep validity
checkSweepValidUp() =>
isValid = true
if pendingSweepUp and not na(sweepDetectedBarUp)
maxOffset = bar_index - sweepDetectedBarUp
if maxOffset >= 0
for i = 0 to maxOffset
if close > sweepTargetHighPrice
isValid := false
isValid
checkSweepValidDown() =>
isValid = true
if pendingSweepDown and not na(sweepDetectedBarDown)
maxOffset = bar_index - sweepDetectedBarDown
if maxOffset >= 0
for i = 0 to maxOffset
if close < sweepTargetLowPrice
isValid := false
isValid
// BOS logic
bosUp = not na(confHigh) and c > confHigh
bosDown = not na(confLow) and c < confLow
if bosUp
pendingSweepUp := false
sweepDetectedBarUp := na
sweepTargetHighPrice := na
sweepTargetHighBar := na
lastBOSHighBar := confHighBar
if not na(highLine)
line.delete(highLine)
if not na(highLabel)
label.delete(highLabel)
highLineType := 2
if showBosSweep
highLine := line.new(confHighBar, confHigh, bar_index, confHigh, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=bosStyle)
if showBosLabel
midBar = math.floor((confHighBar + bar_index) / 2)
highLabel := label.new(midBar, confHigh, bosLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
if bosDown
pendingSweepDown := false
sweepDetectedBarDown := na
sweepTargetLowPrice := na
sweepTargetLowBar := na
lastBOSLowBar := confLowBar
if not na(lowLine)
line.delete(lowLine)
if not na(lowLabel)
label.delete(lowLabel)
lowLineType := 2
if showBosSweep
lowLine := line.new(confLowBar, confLow, bar_index, confLow, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=bosStyle)
if showBosLabel
midBar = math.floor((confLowBar + bar_index) / 2)
lowLabel := label.new(midBar, confLow, bosLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
// Sweep draw (pivot-in-between check)
sweepUpTriggered = false
sweepDownTriggered = false
if (isTop or isBot) and pendingSweepUp and not na(sweepTargetHighBar)
hasLowBetween = false
for i = sweepTargetHighBar to bar_index
if not na(confLowBar) and confLowBar == i
hasLowBetween := true
if checkSweepValidUp() and highLineType != 2 and hasLowBetween
if not na(highLine)
line.delete(highLine)
if not na(highLabel)
label.delete(highLabel)
highLineType := 1
if showBosSweep
highLine := line.new(sweepTargetHighBar, sweepTargetHighPrice, bar_index, sweepTargetHighPrice, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=sweepStyle)
if showSweepLabel
midBar = math.floor((sweepTargetHighBar + bar_index) / 2)
highLabel := label.new(midBar, sweepTargetHighPrice, sweepLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
pendingSweepUp := false
sweepDetectedBarUp := na
sweepTargetHighPrice := na
sweepTargetHighBar := na
sweepUpTriggered := true
if (isTop or isBot) and pendingSweepDown and not na(sweepTargetLowBar)
hasHighBetween = false
for i = sweepTargetLowBar to bar_index
if not na(confHighBar) and confHighBar == i
hasHighBetween := true
if checkSweepValidDown() and lowLineType != 2 and hasHighBetween
if not na(lowLine)
line.delete(lowLine)
if not na(lowLabel)
label.delete(lowLabel)
lowLineType := 1
if showBosSweep
lowLine := line.new(sweepTargetLowBar, sweepTargetLowPrice, bar_index, sweepTargetLowPrice, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=sweepStyle)
if showSweepLabel
midBar = math.floor((sweepTargetLowBar + bar_index) / 2)
lowLabel := label.new(midBar, sweepTargetLowPrice, sweepLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
pendingSweepDown := false
sweepDetectedBarDown := na
sweepTargetLowPrice := na
sweepTargetLowBar := na
sweepDownTriggered := true
// Alerts
alertcondition(isTop, "Top", "Top confirmed")
alertcondition(isBot, "Bot", "Bottom confirmed")
alertcondition(bosUp, "BOS Up", "Break of structure up")
alertcondition(bosDown, "BOS Down", "Break of structure down")
alertcondition(sweepUpTriggered, "Sweep Up", "Sweep đỉnh xuất hiện")
alertcondition(sweepDownTriggered, "Sweep Down", "Sweep đáy xuất hiện")
plot(na) // tránh lỗi
High Low + BOS/Sweep//@version=5
indicator("High Low + BOS/Sweep", overlay=true, max_lines_count=500, max_labels_count=500)
// Inputs (giữ nguyên các tuỳ chọn của bạn, chỉ bỏ input màu)
offTop = input.int(2, "Offset đỉnh", minval=0)
offBot = input.int(2, "Offset đáy", minval=0)
w = input.int(2, "Độ dày line", minval=1)
styleBosStr = input.string("Solid", "Kiểu line BOS", options= )
styleSweepStr = input.string("Dashed", "Kiểu line Sweep", options= )
showBosLabel = input.bool(true, "Hiện label BOS")
showSweepLabel = input.bool(true, "Hiện label Sweep")
bosLabelText = input.string("BOS", "Text BOS")
sweepLabelText = input.string("SWEEP", "Text Sweep")
labelSizeStr = input.string("tiny", "Kích thước label", options= )
// NEW: display toggles (giữ nguyên logic, bạn yêu cầu)
showPivot = input.bool(true, "Hiện Pivot")
showBosSweep = input.bool(true, "Hiện BOS / Sweep")
// Convert styles / sizes
bosStyle = styleBosStr == "Dashed" ? line.style_dashed : styleBosStr == "Dotted" ? line.style_dotted : line.style_solid
sweepStyle = styleSweepStr == "Dashed" ? line.style_dashed : styleSweepStr == "Dotted" ? line.style_dotted : line.style_solid
lblSize = labelSizeStr == "small" ? size.small : labelSizeStr == "normal" ? size.normal : labelSizeStr == "large" ? size.large : size.tiny
// State vars (khai báo riêng để tránh lỗi kiểu)
c = close
var int lastSignal = 0
var float sHigh = na
var int sHighBar = na
var float sLow = na
var int sLowBar = na
var float confHigh = na
var int confHighBar = na
var float confLow = na
var int confLowBar = na
var line highLine = na
var line lowLine = na
var label highLabel = na
var label lowLabel = na
// === Đánh dấu loại line: 0 = chưa có, 1 = Sweep, 2 = BOS ===
var int highLineType = 0
var int lowLineType = 0
// === Sweep tracking / pending ===
var bool pendingSweepUp = false
var bool pendingSweepDown = false
var int sweepDetectedBarUp = na
var float sweepTargetHighPrice = na
var int sweepTargetHighBar = na
var int sweepDetectedBarDown = na
var float sweepTargetLowPrice = na
var int sweepTargetLowBar = na
// === Track BOS pivots (pivot bar indexes that became BOS) ===
var int lastBOSHighBar = na
var int lastBOSLowBar = na
// Track swing while searching
if (lastSignal == -1) or (lastSignal == 0)
if na(sHigh) or high > sHigh
sHigh := high
sHighBar := bar_index
if (lastSignal == 1) or (lastSignal == 0)
if na(sLow) or low < sLow
sLow := low
sLowBar := bar_index
// Confirm pivot
condTop = c < low
condBot = c > high
isTop = condTop and (lastSignal != 1)
isBot = condBot and (lastSignal != -1)
// On pivot confirm (KHÔNG reset pendingSweep ở đây)
if isTop
confHigh := sHigh
confHighBar := sHighBar
highLine := na
highLabel := na
highLineType := 0
if showPivot
label.new(confHighBar, confHigh + syminfo.mintick * offTop, "●", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_none, textcolor=color.red, size=size.small)
lastSignal := 1
sHigh := na
sHighBar := na
sLow := low
sLowBar := bar_index
if isBot
confLow := sLow
confLowBar := sLowBar
lowLine := na
lowLabel := na
lowLineType := 0
if showPivot
label.new(confLowBar, confLow - syminfo.mintick * offBot, "●", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_none, textcolor=color.lime, size=size.small)
lastSignal := -1
sLow := na
sLowBar := na
sHigh := high
sHighBar := bar_index
// Raw sweep detection: nếu có râu quét pivot cũ (và đóng lại không vượt) -> đánh dấu pending và lưu pivot cũ
// loại trừ pivot đã từng là BOS (lastBOSHighBar / lastBOSLowBar)
rawSweepUp = not na(confHigh) and (na(lastBOSHighBar) or confHighBar != lastBOSHighBar) and high > confHigh and close <= confHigh
rawSweepDown = not na(confLow) and (na(lastBOSLowBar) or confLowBar != lastBOSLowBar) and low < confLow and close >= confLow
if rawSweepUp
pendingSweepUp := true
sweepDetectedBarUp := bar_index
sweepTargetHighPrice := confHigh
sweepTargetHighBar := confHighBar
if rawSweepDown
pendingSweepDown := true
sweepDetectedBarDown := bar_index
sweepTargetLowPrice := confLow
sweepTargetLowBar := confLowBar
// Functions: check sweep valid (no close crossing pivot from detection to now)
checkSweepValidUp() =>
isValid = true
if pendingSweepUp and not na(sweepDetectedBarUp) and not na(sweepTargetHighPrice)
maxOffset = bar_index - sweepDetectedBarUp
if maxOffset >= 0
for i = 0 to maxOffset
if close > sweepTargetHighPrice
isValid := false
isValid
checkSweepValidDown() =>
isValid = true
if pendingSweepDown and not na(sweepDetectedBarDown) and not na(sweepTargetLowPrice)
maxOffset = bar_index - sweepDetectedBarDown
if maxOffset >= 0
for i = 0 to maxOffset
if close < sweepTargetLowPrice
isValid := false
isValid
// BOS logic (như cũ) — nếu BOS xảy ra thì hủy pending sweep liên quan
bosUp = not na(confHigh) and c > confHigh
bosDown = not na(confLow) and c < confLow
if bosUp
// cancel pending sweep
pendingSweepUp := false
sweepDetectedBarUp := na
sweepTargetHighPrice := na
sweepTargetHighBar := na
// mark pivot as BOS (do not allow future sweep using same pivot)
lastBOSHighBar := confHighBar
// delete existing sweep display if present
if not na(highLine)
line.delete(highLine)
if not na(highLabel)
label.delete(highLabel)
// draw BOS (only if display enabled) — dùng màu mặc định: black
highLineType := 2
if showBosSweep
highLine := line.new(confHighBar, confHigh, bar_index, confHigh, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=bosStyle)
if showBosLabel
midBar = math.floor((confHighBar + bar_index) / 2)
highLabel := label.new(midBar, confHigh, bosLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
if bosDown
pendingSweepDown := false
sweepDetectedBarDown := na
sweepTargetLowPrice := na
sweepTargetLowBar := na
lastBOSLowBar := confLowBar
if not na(lowLine)
line.delete(lowLine)
if not na(lowLabel)
label.delete(lowLabel)
lowLineType := 2
if showBosSweep
lowLine := line.new(confLowBar, confLow, bar_index, confLow, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=bosStyle)
if showBosLabel
midBar = math.floor((confLowBar + bar_index) / 2)
lowLabel := label.new(midBar, confLow, bosLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
// === Sweep draw (with pivot-in-between check) ===
if (isTop or isBot) and pendingSweepUp and not na(sweepTargetHighBar)
hasLowBetween = false
// scan bars between sweepTargetHighBar and current bar to find ANY confirmed low pivot (confLowBar)
for i = sweepTargetHighBar to bar_index
if not na(confLowBar) and confLowBar == i
hasLowBetween := true
if checkSweepValidUp() and highLineType != 2 and hasLowBetween
// delete existing line if any
if not na(highLine)
line.delete(highLine)
if not na(highLabel)
label.delete(highLabel)
// mark as sweep
highLineType := 1
// draw sweep only if display enabled (màu mặc định: black)
if showBosSweep
highLine := line.new(sweepTargetHighBar, sweepTargetHighPrice, bar_index, sweepTargetHighPrice, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=sweepStyle)
if showSweepLabel
midBar = math.floor((sweepTargetHighBar + bar_index) / 2)
highLabel := label.new(midBar, sweepTargetHighPrice, sweepLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
// clear pending
pendingSweepUp := false
sweepDetectedBarUp := na
sweepTargetHighPrice := na
sweepTargetHighBar := na
if (isTop or isBot) and pendingSweepDown and not na(sweepTargetLowBar)
hasHighBetween = false
for i = sweepTargetLowBar to bar_index
if not na(confHighBar) and confHighBar == i
hasHighBetween := true
if checkSweepValidDown() and lowLineType != 2 and hasHighBetween
if not na(lowLine)
line.delete(lowLine)
if not na(lowLabel)
label.delete(lowLabel)
lowLineType := 1
if showBosSweep
lowLine := line.new(sweepTargetLowBar, sweepTargetLowPrice, bar_index, sweepTargetLowPrice, xloc=xloc.bar_index, extend=extend.none, color=color.black, width=w, style=sweepStyle)
if showSweepLabel
midBar = math.floor((sweepTargetLowBar + bar_index) / 2)
lowLabel := label.new(midBar, sweepTargetLowPrice, sweepLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=color.black, style=label.style_none, size=lblSize)
pendingSweepDown := false
sweepDetectedBarDown := na
sweepTargetLowPrice := na
sweepTargetLowBar := na
// Alerts
alertcondition(isTop, "Top", "Top confirmed")
alertcondition(isBot, "Bot", "Bottom confirmed")
alertcondition(bosUp, "BOS Up", "Break of structure up")
alertcondition(bosDown, "BOS Down", "Break of structure down")
plot(na) // tránh lỗi
Rolling VWAPRolling VWAP with aggregated option. Very precise. uaqdhuauadhuahuduhauhdhuauhduhauhduhahuduhauhdhuad
VB Bots Watchlist 2025 — RangesOf course. Here is a complete Pine Script v6 indicator for TradingView that displays the On-Balance Volume (OBV) for a selectable list of the top 50 Binance coins by market capitalization.
You can copy and paste this code directly into your Pine Editor in TradingView.
Key Features:
Pine Script Version 6: Written in the latest version of Pine Script.
Dropdown Menu: Easily select which of the top 50 coins you want to see the OBV for from the indicator's settings.
Independent Data: The OBV is calculated for the selected coin, regardless of the chart you are currently viewing.
Clear Plot: Displays the OBV in a separate pane for easy analysis.
Aggregated VWAP by Vibieaggregated vwap with lines and bands option. Autoslect option added. Very precise.
High volume bar by Vibiehigh volume bar - calculation based on Z-score. Very precise. Aggregated data. Adding autoselect soon.
High Low + BOS/Sweep 2//@version=5
indicator("High Low + BOS/Sweep (fixed pivot check)", overlay=true, max_lines_count=500, max_labels_count=500)
// Inputs
offTop = input.int(2, "Offset đỉnh", minval=0)
offBot = input.int(2, "Offset đáy", minval=0)
w = input.int(2, "Độ dày line", minval=1)
c_bos_up = input.color(color.red, "Màu BOS phá đỉnh")
c_bos_down = input.color(color.lime, "Màu BOS phá đáy")
c_sweep_up = input.color(color.orange, "Màu Sweep đỉnh")
c_sweep_down = input.color(color.aqua, "Màu Sweep đáy")
styleBosStr = input.string("Solid", "Kiểu line BOS", options= )
styleSweepStr = input.string("Dashed", "Kiểu line Sweep", options= )
showBosLabel = input.bool(true, "Hiện label BOS")
showSweepLabel = input.bool(true, "Hiện label Sweep")
bosLabelText = input.string("BOS", "Text BOS")
sweepLabelText = input.string("SWEEP", "Text Sweep")
labelSizeStr = input.string("tiny", "Kích thước label", options= )
// Convert styles / sizes
bosStyle = styleBosStr == "Dashed" ? line.style_dashed : styleBosStr == "Dotted" ? line.style_dotted : line.style_solid
sweepStyle = styleSweepStr == "Dashed" ? line.style_dashed : styleSweepStr == "Dotted" ? line.style_dotted : line.style_solid
lblSize = labelSizeStr == "small" ? size.small : labelSizeStr == "normal" ? size.normal : labelSizeStr == "large" ? size.large : size.tiny
// State vars
c = close
var int lastSignal = 0
var float sHigh = na
var int sHighBar = na
var float sLow = na
var int sLowBar = na
var float confHigh = na
var int confHighBar = na
var float confLow = na
var int confLowBar = na
var line highLine = na
var line lowLine = na
var label highLabel = na
var label lowLabel = na
// === Đánh dấu loại line: 0 = chưa có, 1 = Sweep, 2 = BOS ===
var int highLineType = 0
var int lowLineType = 0
// === Sweep tracking / pending ===
var bool pendingSweepUp = false
var bool pendingSweepDown = false
var int sweepDetectedBarUp = na
var float sweepTargetHighPrice = na
var int sweepTargetHighBar = na
var int sweepDetectedBarDown = na
var float sweepTargetLowPrice = na
var int sweepTargetLowBar = na
// === NEW: track BOS pivots ===
var int lastBOSHighBar = na
var int lastBOSLowBar = na
// Track swing
if (lastSignal == -1) or (lastSignal == 0)
if na(sHigh) or high > sHigh
sHigh := high
sHighBar := bar_index
if (lastSignal == 1) or (lastSignal == 0)
if na(sLow) or low < sLow
sLow := low
sLowBar := bar_index
// Confirm pivot
condTop = c < low
condBot = c > high
isTop = condTop and (lastSignal != 1)
isBot = condBot and (lastSignal != -1)
// On pivot confirm
if isTop
confHigh := sHigh
confHighBar := sHighBar
highLine := na
highLabel := na
highLineType := 0
label.new(confHighBar, confHigh + syminfo.mintick * offTop, "●", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_none, textcolor=color.red, size=size.small)
lastSignal := 1
sHigh := na
sHighBar := na
sLow := low
sLowBar := bar_index
if isBot
confLow := sLow
confLowBar := sLowBar
lowLine := na
lowLabel := na
lowLineType := 0
label.new(confLowBar, confLow - syminfo.mintick * offBot, "●", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_none, textcolor=color.lime, size=size.small)
lastSignal := -1
sLow := na
sLowBar := na
sHigh := high
sHighBar := bar_index
// Raw sweep detection
rawSweepUp = not na(confHigh) and (na(lastBOSHighBar) or confHighBar != lastBOSHighBar) and high > confHigh and close <= confHigh
rawSweepDown = not na(confLow) and (na(lastBOSLowBar) or confLowBar != lastBOSLowBar) and low < confLow and close >= confLow
if rawSweepUp
pendingSweepUp := true
sweepDetectedBarUp := bar_index
sweepTargetHighPrice := confHigh
sweepTargetHighBar := confHighBar
if rawSweepDown
pendingSweepDown := true
sweepDetectedBarDown := bar_index
sweepTargetLowPrice := confLow
sweepTargetLowBar := confLowBar
// Check sweep validity
checkSweepValidUp() =>
isValid = true
if pendingSweepUp and not na(sweepDetectedBarUp)
maxOffset = bar_index - sweepDetectedBarUp
if maxOffset >= 0
for i = 0 to maxOffset
if close > sweepTargetHighPrice
isValid := false
isValid
checkSweepValidDown() =>
isValid = true
if pendingSweepDown and not na(sweepDetectedBarDown)
maxOffset = bar_index - sweepDetectedBarDown
if maxOffset >= 0
for i = 0 to maxOffset
if close < sweepTargetLowPrice
isValid := false
isValid
// BOS logic
bosUp = not na(confHigh) and c > confHigh
bosDown = not na(confLow) and c < confLow
if bosUp
pendingSweepUp := false
sweepDetectedBarUp := na
sweepTargetHighPrice := na
sweepTargetHighBar := na
lastBOSHighBar := confHighBar
if not na(highLine)
line.delete(highLine)
if not na(highLabel)
label.delete(highLabel)
highLine := line.new(confHighBar, confHigh, bar_index, confHigh, xloc=xloc.bar_index, extend=extend.none, color=c_bos_up, width=w, style=bosStyle)
highLineType := 2
if showBosLabel
midBar = math.floor((confHighBar + bar_index) / 2)
highLabel := label.new(midBar, confHigh, bosLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=c_bos_up, style=label.style_none, size=lblSize)
if bosDown
pendingSweepDown := false
sweepDetectedBarDown := na
sweepTargetLowPrice := na
sweepTargetLowBar := na
lastBOSLowBar := confLowBar
if not na(lowLine)
line.delete(lowLine)
if not na(lowLabel)
label.delete(lowLabel)
lowLine := line.new(confLowBar, confLow, bar_index, confLow, xloc=xloc.bar_index, extend=extend.none, color=c_bos_down, width=w, style=bosStyle)
lowLineType := 2
if showBosLabel
midBar = math.floor((confLowBar + bar_index) / 2)
lowLabel := label.new(midBar, confLow, bosLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=c_bos_down, style=label.style_none, size=lblSize)
// === Sweep draw (with pivot-in-between check) ===
if (isTop or isBot) and pendingSweepUp and not na(sweepTargetHighBar)
hasLowBetween = false
for i = sweepTargetHighBar to bar_index
if not na(confLowBar) and confLowBar == i
hasLowBetween := true
if checkSweepValidUp() and highLineType != 2 and hasLowBetween
if not na(highLine)
line.delete(highLine)
if not na(highLabel)
label.delete(highLabel)
highLine := line.new(sweepTargetHighBar, sweepTargetHighPrice, bar_index, sweepTargetHighPrice, xloc=xloc.bar_index, extend=extend.none, color=c_sweep_up, width=w, style=sweepStyle)
if showSweepLabel
midBar = math.floor((sweepTargetHighBar + bar_index) / 2)
highLabel := label.new(midBar, sweepTargetHighPrice, sweepLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=c_sweep_up, style=label.style_none, size=lblSize)
highLineType := 1
pendingSweepUp := false
sweepDetectedBarUp := na
sweepTargetHighPrice := na
sweepTargetHighBar := na
if (isTop or isBot) and pendingSweepDown and not na(sweepTargetLowBar)
hasHighBetween = false
for i = sweepTargetLowBar to bar_index
if not na(confHighBar) and confHighBar == i
hasHighBetween := true
if checkSweepValidDown() and lowLineType != 2 and hasHighBetween
if not na(lowLine)
line.delete(lowLine)
if not na(lowLabel)
label.delete(lowLabel)
lowLine := line.new(sweepTargetLowBar, sweepTargetLowPrice, bar_index, sweepTargetLowPrice, xloc=xloc.bar_index, extend=extend.none, color=c_sweep_down, width=w, style=sweepStyle)
if showSweepLabel
midBar = math.floor((sweepTargetLowBar + bar_index) / 2)
lowLabel := label.new(midBar, sweepTargetLowPrice, sweepLabelText, xloc=xloc.bar_index, yloc=yloc.price, textcolor=c_sweep_down, style=label.style_none, size=lblSize)
lowLineType := 1
pendingSweepDown := false
sweepDetectedBarDown := na
sweepTargetLowPrice := na
sweepTargetLowBar := na
// Alerts
alertcondition(isTop, "Top", "Top confirmed")
alertcondition(isBot, "Bot", "Bottom confirmed")
alertcondition(bosUp, "BOS Up", "Break of structure up")
alertcondition(bosDown, "BOS Down", "Break of structure down")
plot(na) // tránh lỗi
Srujan Naidu Strict EMA Exaggerated Touch-Free SignalGives a turn points in the market, combine with other indicators to increase win ratio
Momentum ScannerThe scripts find the candles where high momentum is expected and a breakout trade can be executed
Cumulative Outperformance | viResearchCumulative Outperformance | viResearch
📈 Compare. Measure. Dominate.
Cumulative Outperformance | viResearch is a performance benchmarking tool designed for traders who want a deeper understanding of how their asset stacks up against a selected benchmark—such as BTC, SPX, or any TradingView-supported symbol—over time.
Built for high-level comparative analysis, this indicator plots the rolling relative performance of the asset vs. a benchmark, showing whether the asset is outperforming or underperforming in a clean, data-rich format.
🧠 Core Logic & Analytics
✔️ Rolling Returns → Tracks cumulative return over a custom period (default: 35 bars)
✔️ Benchmark Flexibility → Choose any ticker (e.g., INDEX:BTCUSD) as your benchmark
✔️ Custom Start Date → Isolate performance from a meaningful date (e.g., macro events)
✔️ Dynamic Outperformance Plot → See how much stronger or weaker your asset is
📊 Advanced Visualization
🎯 Outperformance Line → Color-coded performance differential between asset and benchmark
🎯 Zero Line Reference → Histogram-style centerline for clarity
🎯 Info Panel (Table) → Shows benchmark symbol, exact outperformance %, and status (Outperforming / Underperforming / Even)
🎯 Real-Time Labeling → Inline data label shows current performance gap directly on chart
🔔 Built-In Alert Engine
🔹 Fires alerts when your asset starts outperforming or underperforming
🔹 Uses once_per_bar_close logic to avoid intrabar noise
🔹 Ideal for monitoring passive investments or pair trading setups
👤 Ideal For:
📈 Macro analysts comparing assets post-event
⚖️ Relative strength traders or long/short pair strategists
💼 Fund managers evaluating performance attribution
🔍 Traders analyzing sector rotation or asset flows
✅ Summary
Cumulative Outperformance | viResearch is a precision benchmarking tool that enables traders to visually and quantitatively assess how an asset performs relative to another. Use it to track momentum divergence, build pair strategies, or confirm asset rotation dynamics.
Safety TradeOverview
Safety Trade plots a deterministic set of adaptive support levels anchored to 4H data and overlays them on any chart timeframe. The script does not use lookahead or future data. Line styles (color/width/type) are user-editable in the Style tab; logic parameters are fixed to keep results uniform across users.
What makes it different
All computations are centralized on 4H, then the finished values are displayed on lower or higher timeframes. This reduces parameter drift, simplifies cross-user comparisons, and avoids ambiguous “moving targets.”
Method (high level)
On 4H, a smoothed baseline is built from recent lowest lows using a moving average. From that baseline, LL2/LL3/LL4 are derived and smoothed on 4H as well. A deterministic mid-line between LL2 and LL3 is used internally (no bar-index tricks or animations). Five empirical extra levels are then computed between LL4 and LL3 using fixed multipliers: 5.33, 4.37, 3.52, 2.95, 2.30. These are not classic Fibonacci; they serve as research/visual guideposts only.
How to use (practical playbook)
Timeframe and confirmation: Values finalize on the 4H close. Confirm setups on 4H candles; use lower TFs only to fine-tune entries once a 4H condition is met.
Reading the levels: The LL4→LL3 corridor is an adaptive 4H support envelope. Level 1…Level 5 are non-linear subdivisions inside this corridor for staging partial exits, re-entries, and trailing stops. Basic bias: above LL3 with rising slope = bullish context; persistent 4H closes below LL4 with retests from below = bearish context.
Long setups:
• Rebound from LL4 (mean-reversion long): Wick through LL4, then a 4H close back above LL4. Entry next bar or on a small pullback; stop = LL4 − 0.5–1.0 × ATR(14, 4H). Targets: L5 → L4 → L3 (e.g., 30/30/40). After first take-profit move stop to breakeven, then trail under the next lower level.
• Retest of LL3 from above (trend-continuation long): Confirmed 4H close above LL3, then pullback holding LL3. Stop slightly below LL3 or below the retest swing low. Targets: structure highs or ladder via L3→L2→L1.
Short setup (mirror): 4H close below LL4, retest fails from below; stop above LL4; manage via structure/ATR and trail above swing highs or above the nearest level.
When to stand aside: High-impact news spikes; mid-corridor chop with no tests of LL4/LL3; before a decisive 4H close.
Confluence: Higher-TF market structure (D/1W), volume/OBV/MFI, and candle behavior right at LL4/LL3.
Risk: Keep per-trade risk small (e.g., 0.5–1%). Prefer partial take-profits over all-or-nothing. If volatility expands, widen stops slightly (ATR-based) and reduce size to keep risk constant.
Common mistakes: Treating lines as guaranteed reversal points; entering off a lower-TF touch without 4H confirmation; claiming performance on synthetic charts; fighting a strong down-slope below LL4.
Multi-timeframe behavior
On lower chart timeframes, values can shift intrabar until the current 4H candle closes. After the 4H close, values are fixed for that 4H segment. Lookahead is off.
What this is not
Not a strategy and not a signal generator. No claims about accuracy or ROI. Past performance does not guarantee future results.
Compatibility and scope
Pine v5, overlay, user-editable line styles. Works on any symbol/timeframe; all computations are centralized on 4H.
Changelog
v1.0 — Initial public release: 4H-anchored processing, no lookahead, user-editable styles, five empirical extra levels.
Disclaimer
For informational and educational purposes only. Not financial advice. Use at your own risk.
Double-Numbered Hexagon Price and Time Chart ⬢️ Double-Numbered Hexagon Price and Time Chart ⬢️
Overview
The Double-Numbered Hexagon Price and Time Chart is an advanced overlay indicator for TradingView that fuses William D. Gann’s geometric principles with modern charting tools. Inspired by the work of Patrick Mikula in Gann’s Scientific Methods Unveiled (Volumes 1 & 2), this tool reimagines Gann’s hexagonal number spirals—where market price and time unfold within a structured 360° framework.
This indicator constructs a dynamic, double-numbered hexagonal grid expanding from a central seed. Users can anchor from a price high or low , or override with a manual seed to start the chart from any desired value. As prices progress or regress from this origin, the chart plots swing pivots directly onto the hexagonal grid , allowing users to assess whether historical highs and lows align with key angles. The grid displays 12 angular spokes (0° to 330° in 30° steps) by default, and users can highlight any single angle , which applies a color-coded emphasis to both the spoke and its corresponding horizontal levels—helping reveal potential support, resistance, and geometric symmetry .
It supports automatic detection of pivots, live tracking of current price within the grid, and detailed display customizations—making it ideal for Gann-style geometric analysis, pivot-based strategies, and time/price harmonic research.
---
Key Features
* Hexagonal Spiral Structure: Constructs a grid of expanding rings from a central price seed, with each cell aligned to a 360° angular framework (in 30° increments).
* Anchor Customization: Seed from a bar's high/low using a selected timestamp, or override with a manual starting value.
* Increment/Decrement Control: Define step size for upward progression (positive) or downward regression (negative).
* Angle Highlighting and Lines: Select from 12 angles (0° to 330°) to highlight hexagon spokes and project price lines from the anchor.
* Swing Pivot Detection: Automatically identifies post-anchor highs/lows using `ta.pivothigh/low` logic with user-defined left/right bars.
* Real-Time Close Highlight: Dynamically marks the cell closest to the current close (unconfirmed bars).
* Display Customization: Control cell size, text size, table position, colors, and label visibility.
* Pivot Label Options: Show/hide labels for swing highs/lows with full color control.
* Rounding Precision: Set decimal places for all displayed values.
---
How to Use
1. Add to Chart: Apply the indicator as an overlay on your preferred symbol and timeframe.
2. Set the Anchor:
* Select anchor date/time using the calendar icon.
* Choose price source (High or Low).
* Set rounding to match instrument precision.
3. Configure Hexagon:
* Set number of rings to expand the grid.
* Define increment (positive or negative).
* Enable time index values for time-based sequencing.
4. Manual Override (Optional):
* Enable manual mode and input custom seed value.
5. Customize Display:
* Adjust cell and text sizes, table position, and color themes.
6. Angle Settings:
* Choose any angle (e.g., 90°) to highlight spokes and draw horizontal lines from anchor price.
7. Swing Pivots:
* Configure pivot detection using left/right bar settings.
* Toggle pivot label visibility.
8. Interpretation:
* Center cell = anchor price.
* Rings = stepped price levels.
* Spokes = geometric angles for support/resistance.
* Highlighted pivots = potential alignment zones.
* Real-time cell = current price’s position in the grid.
---
Methodology
The indicator uses hexagonal math to plot a spiral of price levels outward from a seed, calculated with degree-based geometry and coordinates. Pivots are identified using built-in TradingView functions and color-coded based on user settings. Angle highlights represent key 30° divisions for price projection.
This tool reinterprets Gann’s spiral and double-numbered techniques without astrological overlays, offering a modern and interactive way to explore time/price relationships geometrically.
---
Limitations and Notes
* Real-Time Behavior: Close highlight updates on unconfirmed bars; locks on candle close.
* Not a Signal Generator: This is a Gann research and visualization tool. Past confluences do not guarantee future outcomes. Use with proper strategy and risk management.
* Future Updates: More features may be added pending feedback and TradingView approval.
Srujan Naidu Triple Multi-Timeframe ADXTriple Multi-Timeframe ADX Indicator
This indicator displays three separate ADX (Average Directional Index) lines from different user-selected timeframes on a single pane, each with independently configurable length and smoothing. It enables traders to compare short-term, medium-term, and long-term market trend strengths visually and quickly.
Intraday Options Signals (CE / PE) – CleanIntraday Options Buy/Sell Indicator – Simple Explanation
This script is designed to help options traders (NIFTY / BANKNIFTY CE & PE) quickly see when big players might be entering or exiting intraday.
It uses concepts like displacement candles, liquidity sweeps, and Fair Value Gaps (FVGs), but keeps the output very simple: clear BUY / SELL signals.
✅ What it Shows
BUY CE (Call Option)
→ Green arrow/flag below the bar when conditions suggest bullish momentum + liquidity trap + gap.
BUY PE (Put Option)
→ Red arrow/flag above the bar when conditions suggest bearish momentum + liquidity trap + gap.
EXIT CE / EXIT PE
→ Small gray "X" appears when conditions say the current trade should be closed.
EOD EXIT
→ If intraday session ends (e.g., 3:30 PM), any open trade is auto-closed.
Background Tint
→ Green shading while in CE mode, Red shading while in PE mode. Makes it child-easy to see the current bias.
VWAP Line (Optional)
→ Silver line shows intraday volume-weighted average price. Exits may trigger if price crosses VWAP.
⚡ How It Works (Logic in simple words)
Detects strong bullish or bearish candles (big displacement).
Checks for Fair Value Gaps (imbalances), often used by institutions.
Looks for liquidity sweeps (traps) near swing highs/lows → signals big players’ stop hunts.
Combines these into BUY CE / BUY PE triggers with cooldown (to avoid over-trading).
Manages exits via VWAP, opposite signals, or end of day.
🎯 How to Use
Copy the code → paste into TradingView Pine Editor → click Add to chart.
Apply it on NIFTY / BANKNIFTY options charts (e.g., BANKNIFTY24SEP48000CE).
Works best on 1m to 15m intraday charts.
Watch for:
🚀 Green “BUY CE” arrow → buy CALL
🚀 Red “BUY PE” arrow → buy PUT
❌ Gray EXIT → close trade
🔔 Alerts
You can set TradingView alerts for:
BUY CE, BUY PE
EXIT CE, EXIT PE
End of Day exit
That way, you’ll get push notifications the moment a signal appears.
⚠️ Important Notes
This is NOT 100% accurate. No indicator is. It gives a framework to spot big player footprints (liquidity sweeps + FVGs).
Always backtest on Strategy Tester before using with real money.
Use it with good risk management (stop loss & position sizing).
Option Chain with DiscountOption Chain used to find the premiums available at a discount. Option Chain used to find the premiums available at a discount. Option Chain used to find the premiums available at a discount.
MACD Split (Top/Bottom)MACD Split Indicator Explanation
This script separates the MACD into two clean panels:
Top Panel (Mode = Top)
Plots the MACD line and the Signal line.
Used to analyze crossovers and trend direction.
Bottom Panel (Mode = Bottom)
Plots the Histogram (MACD – Signal) and its EMA smoothing.
Used to analyze momentum strength and early shifts.
You can load the same indicator twice:
Set one to Top mode → shows only MACD & Signal lines.
Set the other to Bottom mode → shows only Histogram & EMA.
This way, you get a clear split view without overlapping everything in one chart.
MMAMMA (Midpoint Moving Average)
Similar to SMA but calculated using (High + Low) / 2 instead of Close.
Helps reduce noise by smoothing out candlestick wicks.
Useful for identifying trend direction, support/resistance, and combining with other indicators.
Moving averages applied: 5, 10, 20, 50, 100, 200
Short-term: 5, 10, 20 → captures quick price action
Mid-term: 50, 100 → identifies medium trend
Long-term: 200 → widely used global trend benchmark
Color Scheme (Red → Orange → Yellow → Green → Blue → Navy)
Red: 5 / Orange: 10 / Yellow: 20 / Green: 50 / Blue: 100 / Navy: 200
Transparency: 50% → keeps chart clean when lines overlap
Line Thickness: 1 → minimal, non-intrusive visual
Minervini Breakout Volume ConfirmationThis indicator helps identify breakouts in stocks where the price closes above the highest high of a recent lookback period, confirmed by a strong volume spike. It is inspired by Mark Minervini’s breakout and volume confirmation criteria, enabling traders to spot momentum moves with higher conviction.
Pattern Scanner — RealTime By joshทำอะไรบ้าง
Double Top / Double Bottom — ตรวจ “ยอด/ฐานคู่” + เงื่อนไข “เบรกคอ” และ เลือกบังคับให้มีรีเทสท์ ได้
Head & Shoulders / Inverse — ตรวจหัว-ไหล่พร้อมวาด neckline แบบ dynamic
Wedge / Symmetrical Triangle — ใช้ pivot ล่าสุด 2 จุดบน/ล่าง สร้างเส้นลู่เข้าปัจจุบัน
Flag (Channel) — ตรวจกรอบ平行 (bull/bear) จากสโลปบน-ล่างที่ เกือบขนาน
Range (Consolidation) — เส้น High/Low ช่วงสะสมล่าสุด
โหมด Overlay: ทุกอย่างวาดบนราคาโดยตรง, ไม่สร้างข้อความ/สัญญาณลูกศรให้รกตา
What it does
Double Top / Double Bottom — Detects twin peaks/bases with a neckline-break condition, with an option to require a retest.
Head & Shoulders / Inverse — Detects H&S (and inverse) and draws a dynamic neckline.
Wedge / Symmetrical Triangle — Uses the two most recent high/low pivots to draw converging lines to the current bar.
Flag (Channel) — Detects bull/bear parallel channels from nearly parallel top/bottom slopes.
Range (Consolidation) — Plots recent consolidation High/Low levels.
Overlay mode — Everything is drawn directly on price; no text/arrows, keeping the chart clean.
Bedo osaimi "Pivot Pro"📎 Connect with me and explore my tools:
👉 linkfly.to/60812USKGpf
overview
Pivot Pro v3.1.1 is a production‑ready pivot system that plots multi‑timeframe pivots, generates entry signals on pivot crossovers, draws ATR‑based TP1/TP2/TP3 and SL boxes/lines, and maintains an advanced performance table updated on the last bar only.
Signals support Scale‑Out with Sequential or All‑At‑Once target priorities, plus full close after 100 bars to cap holding time for statistics consistency.
Core features
Multi‑type pivots: Traditional, Fibonacci, Woodie, Classic, DM, and Camarilla, anchored to Auto/1H/4H/D/W/M/Q/Y using request.security with lookahead off and previous HTF values to reduce repainting.
Entry logic: Buy on close crossover above P and Sell on crossunder below P with in‑position gating and all filter checks combined into allFiltersBuy/sell.
Risk model: ATR length input with per‑target multipliers and SL multiplier; visual trade boxes with lines and labels for Entry, TP1/TP2/TP3, and SL.
Scale‑Out engine: Portion exits at TP1/TP2/TP3 with remainingSize tracking, counters for hits per side, and forced archival/cleanup of objects; full close once size ≤ 0.01.
Performance table: Win rate from completed trades only, Profit/Loss totals, Profit Factor, Sharpe, Sortino, Max Drawdown %, Recovery Factor, Expectancy, Kelly, streaks, and average bars held; shows current trade snapshot with RR and TP/SL status.
Signal alerts
Provided conditions: Buy Signal, Sell Signal, TP1/TP2/TP3 Hit (Scale‑Out), SL Hit Long, SL Hit Short; create alerts from TradingView UI and customize message text if desired.
Filters (toggleable)
Moving averages: SMA/EMA/WMA/HMA/RMA/VWMA/TEMA/DEMA with optional MA cross filter and three lengths (20/50/200 by default).
Volume/VWAP: Volume vs SMA×multiplier, VWAP with upper/lower bands via standard deviation, and optional VWAP presence filter.
RSI: Level filter (buy below, sell above), optional divergence heuristic, and RSI MA reference.
MACD: Line relation, crossover filter, and histogram sign filter.
Stochastic: %K/%D with smoothing and overbought/oversold thresholds using ta.stoch(high, low, close, len) ordering.
Bollinger Bands: Length/StdDev with optional squeeze filter via band width vs MA(width).
ADX: Minimum trend strength threshold.
Candles: Engulfing, Hammer/Shooting Star, Doji, Pin Bar, Inside Bar; each is optional and combined logically with other filters.
Support/Resistance: Swing‑based detection with strength, lookback, and proximity buffer; buy near support and sell near resistance when enabled.
Market Structure: HH/HL uptrend, LH/LL downtrend, and breakout checks; all optional.
Time window: Hour‑of‑day and day‑of‑week gates for session control.
Drawing and performance safeguards
Manages separate limits and arrays for historical boxes, lines, and labels; archival and cleanup prevent object overflows while preserving recent context.
Pivots are drawn as timed lines with labels positioned left/right per input and rows managed in a matrix for efficient lifecycle updates.
Backtest window shown in tables
Statistics run over the full chart history loaded by TradingView for the symbol/timeframe, while each open position is force‑closed after 100 bars to standardize holding time metrics.
نظرة عامة
Pivot Pro v3.1.1 نظام بيفوت جاهز للإنتاج يرسم بيفوتات متعددة الأطر الزمنية، ويولد إشارات دخول عند تقاطع السعر مع P، ويرسم صناديق/خطوط TP1/TP2/TP3 وSL المبنية على ATR، ويعرض جدول أداء احترافي محدث على آخر شمعة فقط.
يدعم الخروج الجزئي Scale‑Out بخيارين للأولوية (تتابعي أو جميع الأهداف معاً) مع إغلاق إجباري للمركز بعد 100 شمعة لتوحيد حسابات الإحصائيات.
المميزات الأساسية
أنواع البيفوت: تقليدي، فيبوناتشي، وودي، كلاسيك، DM، وكاماريلا مع تثبيت زمني Auto/ساعة/4س/يومي/أسبوعي/شهري/ربع سنوي/سنوي باستخدام request.security بدون نظر للأمام واعتماد قيم HTF السابقة لتقليل إعادة الرسم.
منطق الدخول: شراء عند اختراق الإغلاق فوق P وبيع عند كسر الإغلاق أسفل P مع منع التكرار أثناء وجود مركز وتطبيق جميع الفلاتر ضمن allFiltersBuy/sell.
إدارة المخاطر: مدخل فترة ATR ومضاعفات TP/SL؛ رسم صناديق وخطوط وملصقات للدخول والأهداف ووقف الخسارة.
محرّك الخروج الجزئي: إغلاقات نسبية عند TP1/TP2/TP3 مع تتبع الحجم المتبقي وعدادات الإصابات لكل اتجاه، ثم إغلاق كامل عند بقاء حجم لا يُذكر.
جدول الأداء: نسبة النجاح من الصفقات المكتملة فقط، إجمالي الربح/الخسارة، PF، شارپ، سورتينو، أقصى تراجع %، Recovery، التوقعية، كيلي، السلاسل، ومتوسط مدة الاحتفاظ، مع بطاقة آنية للصفقة الحالية.
التنبيهات
شروط جاهزة: Buy/Sell وTP1/TP2/TP3 (في وضع Scale‑Out) وSL للونغ والشورت؛ يُنشأ التنبيه من واجهة TradingView مع إمكانية تخصيص النص.
الفلاتر
متوسطات متحركة (SMA/EMA/WMA/HMA/RMA/VWMA/TEMA/DEMA) مع فلتر تقاطع اختياري وثلاث فترات 20/50/200.
الحجم وVWAP: مقارنة الحجم بمتوسط×معامل، وفلتر VWAP مع نطاقات علوية/سفلية بالانحراف المعياري.
RSI: مستويات شراء/بيع مع خيار انحراف، ومتوسط RSI مرجعي.
MACD: علاقة الخطوط، تقاطعات، وإشارة الهيستوجرام.
Stochastic: %K/%D مع تنعيم وحدود تشبع شراء/بيع بالترتيب الصحيح للمدخلات.
بولنجر: طول/انحراف معياري مع فلتر الضغط عبر عرض الباند مقابل متوسط العرض.
ADX: حد أدنى لقوة الترند.
الشموع: ابتلاع، مطرقة/شوتنج ستار، دوجي، بين بار، وInside Bar قابلة للتفعيل الانتقائي.
دعم/مقاومة: اكتشاف تأرجحي بقوة/بحث/هامش قرب، شراء قرب الدعم وبيع قرب المقاومة عند التفعيل.
هيكل السوق: HH/HL للاتجاه الصاعد وLH/LL للهابط مع اختراقات اختيارية.
فلترة الوقت: ساعات العمل وأيام الأسبوع لتقييد الجلسات.
الرسم والحماية
إدارة حدود منفصلة للأصناف المرسومة (صناديق/خطوط/ملصقات) مع أرشفة وتنظيف يحافظان على الأداء والوضوح.
رسم خطوط البيفوت مؤقتة بملصقات يسار/يمين وإدارة عبر matrix لأسطر رسومية فعّالة.
نافذة الباك تست المعروضة بالجدول
تُحسب الإحصائيات على كامل تاريخ الشموع المحمّل للشارت، مع إغلاق إجباري لأي صفقة تتجاوز 100 شمعة لضبط متوسطات المدة.
©
CISD SDICT CISD SD – Manipulation Swing Standard Deviations for Change in State of Delivery
Overview:
The ICT CISD SD indicator is a professional ICT tool designed to define the Manipulation Swing and automatically plot its Standard Deviation levels. Focused on intraday ICT analysis, this script dynamically updates toward the current bar, giving traders precise visual guidance on key swing levels and projected targets.
Key Features:
Define ICT Manipulation Swing:
Set the start and end time to define the Manipulation Swing.
Choose your timezone for accurate ICT intraday tracking.
Automatically calculates the High, Low, and optional Equilibrium (EQ) level of the Manipulation Swing.
Dynamic ICT Manipulation Lines:
Plots High, Low, and optional EQ lines of the Manipulation Swing.
Lines update dynamically with each new bar.
Fully customizable line color, style (solid, dashed, dotted), and width.
Labels feature configurable text color, background color, transparency, size, and placement.
Optional left-side trimming keeps charts clean and readable.
Manipulation Swing Standard Deviation Levels:
Automatically plots Standard Deviation levels as multipliers of the Manipulation Swing range (0.5x to 4.5x by default).
Levels can be plotted up from the swing low or down from the swing high, giving probabilistic target areas or key support/resistance zones.
Customizable line and label styling for all Standard Deviation levels, including color, transparency, width, style, and size.
Optional Shading for Visual Clarity:
Shade areas between the Manipulation Swing and a chosen Standard Deviation level for easy visualization.
Customizable shading color and opacity.
Professional ICT Usability:
Designed for clarity and minimal chart clutter.
Stick labels to the right of the current bar for maximum readability.
Dynamically adjusts with new bars, keeping all Manipulation Swing lines and Standard Deviation levels up-to-date.
Ideal For:
ICT intraday traders analyzing Manipulation Swings for Change in State of Delivery.
Traders seeking visual Standard Deviation levels for breakout, reversal, or continuation strategies.
Analysts who want clean, professional charts with full control over Manipulation Swing and Standard Deviation visualization.
How It Works:
User defines the ICT Manipulation Swing time to identify the swing.
The script calculates the High, Low, and optional EQ of the swing.
Swing lines are drawn and dynamically updated.
Standard Deviation levels are plotted based on user-defined multipliers.
Optional shading can highlight areas from the Manipulation Swing to selected Standard Deviation levels.
Customization Options Include:
ICT Manipulation Swing time and timezone.
Line and label styling for Manipulation Swing and Standard Deviation levels.
Left-side trimming to reduce chart clutter.
Enable/disable EQ line, Standard Deviation levels, and shading.
Direction of Standard Deviation levels (up from low or down from high).
Multipliers and shading transparency for professional ICT charting.
Conclusion:
The ICT CISD StdDev indicator offers a complete, professional solution for ICT intraday analysis, allowing traders to define the Manipulation Swing and visualize its Standard Deviation levels dynamically, enhancing precision and clarity in real-time trading.