Indikatoren und Strategien
🔍 Phat hien Spring Wyckoff (hien thi sau 1 nen)//@version=5
indicator("🔍 Phat hien Spring Wyckoff (hien thi sau 1 nen)", overlay=true)
// === Tham so nguoi dung ===
lookbackSupport = input.int(50, "Tim ho tro trong X nen", minval=5)
volumeLookback = input.int(20, "So nen tinh volume trung binh", minval=1)
volMultiplier = input.float(1.5, "Nguong volume cao bat thuong", step=0.1)
showSupportLine = input.bool(true, "Hien thi duong ho tro")
// === Tim day gan nhat lam ho tro ===
lowestLow = ta.lowest(low, lookbackSupport)
// === Tinh volume trung binh ===
avgVol = ta.sma(volume, volumeLookback)
// === Dieu kien Spring (o cay nen hien tai) ===
isSpringNow = low < lowestLow and close > lowestLow and volume > avgVol * volMultiplier
// === Tri hoan tin hieu 1 nen de hien thi chu o cay ke tiep ===
isSpringPrev = isSpringNow
// === Hien thi chu "Spring" o cay nen ke tiep ===
plotshape(isSpringPrev, style=shape.labelup, location=location.belowbar, color=color.green, size=size.small, text="Spring", textcolor=color.white)
// === Ve duong ho tro mau tim, dam ===
plot(showSupportLine ? lowestLow : na, title="Ho tro", color=color.purple, linewidth=2, style=plot.style_line)
Shark Invest Vip//@version=6
indicator("Shark Invest Vip", "Shark Invest Vip ", overlay=true, max_bars_back=500)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Moving Averages ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
ma_set = "Moving Averages"
// EMA Settings
show_ema = input.bool(false, "Show EMA", inline="ema_set", group=ma_set)
ema_len = input.int(21, "", inline="ema_set", group=ma_set)
ema_color = input.color(#2962FF, "", inline="ema_set", group=ma_set)
ema_width = input.int(1, "", inline="ema_set", group=ma_set, minval=1, maxval=4)
// WMA Settings
show_wma = input.bool(false, "Show WMA", inline="wma_set", group=ma_set)
wma_len = input.int(55, "", inline="wma_set", group=ma_set)
wma_color = input.color(#FF1744, "", inline="wma_set", group=ma_set)
wma_width = input.int(1, "", inline="wma_set", group=ma_set, minval=1, maxval=4)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Bollinger Bands ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
bb_set = "Bollinger Bands"
// BB 14-2 Settings
show_bb2 = input.bool(true, "Show BB(14,2)", inline="bb2_set", group=bb_set)
bb2_color_upper = input.color(#2962FF, "", inline="bb2_set", group=bb_set)
bb2_color_middle = input.color(#787B86, "", inline="bb2_set", group=bb_set)
bb2_color_lower = input.color(#2962FF, "", inline="bb2_set", group=bb_set)
bb2_width = input.int(1, "", inline="bb2_set", group=bb_set, minval=1, maxval=4)
// BB 14-3 Settings
show_bb3 = input.bool(true, "Show BB(14,3)", inline="bb3_set", group=bb_set)
bb3_color_upper = input.color(#ebb00efc, "", inline="bb3_set", group=bb_set)
bb3_color_middle = input.color(#787B86, "", inline="bb3_set", group=bb_set)
bb3_color_lower = input.color(#ebb00efc, "", inline="bb3_set", group=bb_set)
bb3_width = input.int(1, "", inline="bb3_set", group=bb_set, minval=1, maxval=4)
// BB 14-4 Settings
show_bb4 = input.bool(true, "Show BB(14,4)", inline="bb4_set", group=bb_set)
bb4_color_upper = input.color(#171a18, "", inline="bb4_set", group=bb_set)
bb4_color_middle = input.color(#787B86, "", inline="bb4_set", group=bb_set)
bb4_color_lower = input.color(#171a18, "", inline="bb4_set", group=bb_set)
bb4_width = input.int(1, "", inline="bb4_set", group=bb_set, minval=1, maxval=4)
// Calculate BBs
= ta.bb(close, 14, 2)
= ta.bb(close, 14, 3)
= ta.bb(close, 14, 4)
// Plot BBs
// BB 14-2
plot(show_bb2 ? bb2_upper : na, "BB(14,2) Upper", color=bb2_color_upper, linewidth=bb2_width)
plot(show_bb2 ? bb2_middle : na, "BB(14,2) Middle", color=bb2_color_middle, linewidth=bb2_width)
plot(show_bb2 ? bb2_lower : na, "BB(14,2) Lower", color=bb2_color_lower, linewidth=bb2_width)
// BB 14-3
plot(show_bb3 ? bb3_upper : na, "BB(14,3) Upper", color=bb3_color_upper, linewidth=bb3_width)
plot(show_bb3 ? bb3_middle : na, "BB(14,3) Middle", color=bb3_color_middle, linewidth=bb3_width)
plot(show_bb3 ? bb3_lower : na, "BB(14,3) Lower", color=bb3_color_lower, linewidth=bb3_width)
// BB 14-4
plot(show_bb4 ? bb4_upper : na, "BB(14,4) Upper", color=bb4_color_upper, linewidth=bb4_width)
plot(show_bb4 ? bb4_middle : na, "BB(14,4) Middle", color=bb4_color_middle, linewidth=bb4_width)
plot(show_bb4 ? bb4_lower : na, "BB(14,4) Lower", color=bb4_color_lower, linewidth=bb4_width)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Ichimoku Base ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
ich_set = "Ichimoku Settings"
// Base Line Settings
show_baseline = input.bool(true, "Show Base Line", inline="base_set", group=ich_set)
base_len = input.int(257, "", inline="base_set", group=ich_set)
base_color = input.color(#242221, "", inline="base_set", group=ich_set)
base_width = input.int(2, "", inline="base_set", group=ich_set, minval=1, maxval=4)
// Calculate Base Line (Kijun-sen)
base_high = ta.highest(high, base_len)
base_low = ta.lowest(low, base_len)
base_line = math.avg(base_high, base_low)
// Plot Base Line
plot(show_baseline ? base_line : na, "Base Line", color=base_color, linewidth=base_width)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Volume Profile Settings ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
vol_set = "Volume Profile"
i_vol_length = input.int(20, "MA Length", group=vol_set)
// Volume Thresholds
i_vol_ultra = input.float(2.2, "Ultra High Volume ×", inline="vol_thresh1", group=vol_set)
i_vol_high = input.float(1.8, "High Volume ×", inline="vol_thresh1", group=vol_set)
i_vol_mid = input.float(1.2, "Mid Volume ×", inline="vol_thresh2", group=vol_set)
i_vol_low = input.float(0.8, "Low Volume ×", inline="vol_thresh2", group=vol_set)
i_vol_vlow = input.float(0.4, "Ultra Low Volume ×", inline="vol_thresh2", group=vol_set)
// Volume Colors
vol_color = "Volume Colors"
c_vol_ultra = input.color(#9B59B6, "Ultra High", inline="vol_c1", group=vol_color)
c_vol_high = input.color(#E74C3C, "High", inline="vol_c1", group=vol_color)
c_vol_mid = input.color(#95A5A6, "Mid", inline="vol_c2", group=vol_color)
c_vol_low = input.color(#7F8C8D, "Low", inline="vol_c2", group=vol_color)
c_vol_vlow = input.color(#666666, "Ultra Low", inline="vol_c2", group=vol_color)
i_vol_transp = input.int(0, "Transparency", inline="vol_c3", group=vol_color, minval=0, maxval=100)
// Ultra Volume Box Settings
box_set = "Ultra Volume Box"
show_ultra_box = input.bool(true, "Show Ultra Volume Box", group=box_set)
box_extend = input.int(5, "Box Extension (bars)", minval=1, maxval=20, group=box_set)
box_border_color = input.color(#9B59B6, "Box Border", group=box_set)
box_fill_color = input.color(color.new(#9B59B6, 90), "Box Fill", group=box_set)
box_border_width = input.int(1, "Border Width", minval=1, maxval=4, group=box_set)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ VSA: UT, Spring, Stopping Volume ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
volMA = ta.wma(volume, i_vol_length)
// UT: Đỉnh mới, đóng cửa thấp, volume cao
isUT = high > high and close < close and volume > volMA
plotshape(isUT, title="UT", location=location.abovebar, style=shape.labeldown, text="UT", textcolor=color.white, size=size.small, color=color.red)
// Spring: Đáy mới, đóng cửa cao, volume cao
isSpring = low < low and close > close and volume > volMA
plotshape(isSpring, title="Spring", location=location.belowbar, style=shape.labelup, text="Spring", textcolor=color.white, size=size.small, color=color.green)
// Stopping Volume: Nến giảm mạnh, volume cực cao
isStopping = close < open and volume > i_vol_ultra * volMA
plotshape(isStopping, title="Stop", location=location.belowbar, style=shape.labelup, text="Stop", textcolor=color.black, size=size.small, color=color.yellow)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Trading Range Settings ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
tr_set = "Trading Range"
// Display Control
show_tr = input.bool(false, "Show Trading Range", inline="tr_display", group=tr_set)
max_tr_display = input.int(10, "Max TR to Display", inline="tr_display", group=tr_set, minval=1)
// Core Parameters
i_dxi = input.int(25, "DXI Length", inline="tr_core", group=tr_set)
i_atr = input.int(14, "ATR Length", inline="tr_core", group=tr_set)
i_adx = input.int(20, "ADX Limit", inline="tr_core", group=tr_set)
// Range Parameters
i_atr_ma = input.int(20, "ATR MA Length", inline="tr_range", group=tr_set)
i_atr_rate = input.float(1.1, "ATR Rate", inline="tr_range", group=tr_set)
// Bar Requirements
i_min_bars = input.int(25, "Min Bars", inline="tr_bars", group=tr_set)
i_max_bars = input.int(100, "Max Bars", inline="tr_bars", group=tr_set)
// Visual Settings
vis_set = "TR Appearance"
c_tr_border = input.color(#2980B9, "Border", inline="tr_style", group=vis_set)
c_tr_fill = input.color(#ECF0F1, "Fill", inline="tr_style", group=vis_set)
i_tr_width = input.int(2, "Width", inline="tr_style", group=vis_set, minval=1, maxval=4)
i_tr_transp = input.int(90, "Transp", inline="tr_style", group=vis_set, minval=0, maxval=100)
// Arrays for tracking
var tr_lines = array.new_line(0) // Array for upper lines
var tr_lines2 = array.new_line(0) // Array for lower lines
var tr_fills = array.new_linefill(0) // Array for line fills
var ultra_boxes = array.new_box(0) // Array for ultra volume boxes
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ VSA Analysis ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
volumeMA = ta.wma(volume, i_vol_length)
ultraVol = volumeMA * i_vol_ultra
highVol = volumeMA * i_vol_high
midVol = volumeMA * i_vol_mid
lowVol = volumeMA * i_vol_low
veryLowVol = volumeMA * i_vol_vlow
isUltraVol = volume >= ultraVol
isHighVol = volume >= highVol and volume < ultraVol
isMidVol = volume >= midVol and volume < highVol
isLowVol = volume >= lowVol and volume < midVol
isVeryLowVol = volume < lowVol
candleColor = isUltraVol ? color.new(c_vol_ultra, i_vol_transp) :
isHighVol ? color.new(c_vol_high, i_vol_transp) :
isMidVol ? color.new(c_vol_mid, i_vol_transp) :
isLowVol ? color.new(c_vol_low, i_vol_transp) :
color.new(c_vol_vlow, i_vol_transp)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Trading Range Logic ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
var float SmoothedTR = 0.0
var float SmoothedDMPlus = 0.0
var float SmoothedDMMinus = 0.0
TrueRange = math.max(math.max(high-low, math.abs(high-nz(close ))), math.abs(low-nz(close )))
DMPlus = high-nz(high ) > nz(low )-low ? math.max(high-nz(high ), 0): 0
DMMinus = nz(low )-low > high-nz(high ) ? math.max(nz(low )-low, 0): 0
SmoothedTR := nz(SmoothedTR ) - (nz(SmoothedTR )/i_dxi) + TrueRange
SmoothedDMPlus := nz(SmoothedDMPlus ) - (nz(SmoothedDMPlus )/i_dxi) + DMPlus
SmoothedDMMinus := nz(SmoothedDMMinus ) - (nz(SmoothedDMMinus )/i_dxi) + DMMinus
DIPlus = SmoothedDMPlus / SmoothedTR * 100
DIMinus = SmoothedDMMinus / SmoothedTR * 100
DX = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = ta.sma(DX, i_dxi)
atr = ta.atr(i_atr)
atrMA = ta.ema(atr, i_atr_ma) * i_atr_rate
ADXma = ta.sma(ADX, 10)
isSideway = (ADX < i_adx or ADX < ADXma) and atr < atrMA
// TR Detection Functions
foundStartTR(lookback) =>
int count = 0
bool onRange = true
int maxBars = math.min(lookback, i_max_bars)
for i = 1 to maxBars
if not isSideway
onRange := false
if onRange
count := count + 1
count
foundHighest(lookback, startCount) =>
float temp = high
int maxBars = math.min(lookback, i_max_bars)
for i = startCount to maxBars
if temp < high
temp := high
temp
foundLowest(lookback, startCount) =>
float temp = low
int maxBars = math.min(lookback, i_max_bars)
for i = startCount to maxBars
if i == startCount or temp > low
temp := low
temp
get_swings(len) =>
float ph = ta.highestbars(high, len) == 0 ? high : na
float pl = ta.lowestbars(low, len) == 0 ? low : na
isLastSideway = not isSideway and isSideway
startTR = foundStartTR(i_max_bars)
highValue = foundHighest(startTR, 2)
lowValue = foundLowest(startTR, 2)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Fair Value Gap Settings ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
fvg_set = "Fair Value Gap"
// Display Controls
show_fvg = input.bool(true, "Show Fair Value Gap", group=fvg_set)
show_fvg_lines = input.bool(false, "Show FVG Lines", group=fvg_set)
// Basic Settings
threshold_per = input.float(0, "Percentage", minval=0, group=fvg_set)
auto = input(false, "Auto Threshold", group=fvg_set)
discard_len = input(5, "Show Last Unfilled Gaps", group=fvg_set)
show_all = input(false, "Show All Unfilled Gaps", group=fvg_set)
tf = input.timeframe('', "Timeframe", group=fvg_set)
// FVG Style
bull_css = input.color(color.new(#0cb51a, 90), "Bullish FVG", group=fvg_set)
bear_css = input.color(color.new(#ff1100, 90), "Bearish FVG", group=fvg_set)
bull_line_css = input.color(color.new(#0cb51a, 90), "Bullish FVG Line", group=fvg_set)
bear_line_css = input.color(color.new(#ff1100, 90), "Bearish FVG Line", group=fvg_set)
show_dash = input.bool(false, "Show Dashboard", group=fvg_set)
// Arrays for FVG
var bull_fvg_lines = array.new_line(0)
var discarded_bull_fvg_lines = array.new_line(0)
var bear_fvg_lines = array.new_line(0)
var discarded_bear_fvg_lines = array.new_line(0)
// FVG Logic
n = bar_index
change_tf = timeframe.change(tf)
get_ohlc()=> [close , open , high, low, high , low ]
= request.security(syminfo.tickerid, tf, get_ohlc())
delta_per = (src_c1 - src_o1) / src_o1 * 100
threshold = auto ? ta.cum(math.abs(change_tf ? delta_per : 0)) / n * 2 : threshold_per
// FVG Detection Function
detect_display_fvg(fvg_condition, fvg_type, fvg_lines, discarded_fvg_lines, css)=>
var float fvg_max = na
var float fvg_min = na
var int filled = 0
var int total = 0
var int fill_x1 = 0
var int duration = 0
if show_fvg_lines
idx = 0
for l in fvg_lines
line.set_x2(l, n)
turn_filled_cnd = fvg_type == "bullish"
? src_l <= line.get_y2(l)
: src_h >= line.get_y2(l)
if turn_filled_cnd
array.remove(fvg_lines, idx)
filled += 1
duration += n - line.get_x1(l)
idx += 1
idx := 0
for l in discarded_fvg_lines
turn_filled_cnd = fvg_type == "bullish"
? src_l <= line.get_y2(l)
: src_h >= line.get_y2(l)
if turn_filled_cnd
array.remove(discarded_fvg_lines, idx)
filled += 1
duration += n - line.get_x1(l)
idx += 1
if fvg_condition and show_fvg
if fvg_max != fvg_min
level = fvg_type == "bullish" ? fvg_min : fvg_max
if show_fvg_lines
array.unshift(fvg_lines, line.new(n - 1, level, n, level,
color = css,
style = line.style_dashed))
if not show_all
if array.size(fvg_lines) > discard_len
pop_l = array.pop(fvg_lines)
array.push(discarded_fvg_lines, pop_l)
else
filled += 1
duration += n - fill_x1
fvg_max := fvg_type == "bullish" ? src_l : src_l2
fvg_min := fvg_type == "bullish" ? src_h2 : src_h
total += 1
fill_x1 := n
fvg_max := fvg_type == "bullish"
? math.max(math.min(fvg_max, src_l), fvg_min)
: fvg_max
fvg_min := fvg_type == "bearish"
? math.min(math.max(fvg_min, src_h), fvg_max)
: fvg_min
filled_cnd = fvg_max == fvg_min and fvg_max != fvg_min
fill_x1 := filled_cnd ? n : fill_x1
// FVG Conditions
bullish_fvg_cnd = src_l > src_h2 and src_c1 > src_h2 and delta_per > threshold and change_tf
bearish_fvg_cnd = src_h < src_l2 and src_c1 < src_l2 and -delta_per > threshold and change_tf
=
detect_display_fvg(bullish_fvg_cnd, "bullish", bull_fvg_lines, discarded_bull_fvg_lines, bull_line_css)
=
detect_display_fvg(bearish_fvg_cnd, "bearish", bear_fvg_lines, discarded_bear_fvg_lines, bear_line_css)
// FVG Plots
bull_max_plot = plot(show_fvg ? bull_fvg_max : na, "Bullish FVG Maximum", na)
bull_min_plot = plot(show_fvg ? bull_fvg_min : na, "Bullish FVG Minimum", na)
fill(bull_max_plot, bull_min_plot, (show_fvg and not bullish_fvg_cnd) ? bull_css : na, "Bullish FVG")
bear_max_plot = plot(show_fvg ? bear_fvg_max : na, "Bearish FVG Maximum", na)
bear_min_plot = plot(show_fvg ? bear_fvg_min : na, "Bearish FVG Minimum", na)
fill(bear_max_plot, bear_min_plot, (show_fvg and not bearish_fvg_cnd) ? bear_css : na, "Bearish FVG")
// FVG Dashboard
if show_fvg and show_dash
var tb = table.new(position.bottom_right, 3, 3)
if barstate.isfirst
table.cell(tb, 0, 1, "Filled %", text_color=chart.fg_color, text_halign=text.align_right)
table.cell(tb, 0, 2, "Avg Duration", text_color=chart.fg_color, text_halign=text.align_right)
table.cell(tb, 1, 0, "Bullish", text_color=chart.fg_color)
table.cell(tb, 2, 0, "Bearish", text_color=chart.fg_color)
if barstate.islast
table.cell(tb, 1, 1, str.format("{0, number, percent}", bull_filled / bull_total),
text_color=chart.fg_color)
table.cell(tb, 2, 1, str.format("{0, number, percent}", bear_filled / bear_total),
text_color=chart.fg_color)
table.cell(tb, 1, 2, str.format("{0,number,integer}", bull_duration / bull_filled),
text_color=chart.fg_color)
table.cell(tb, 2, 2, str.format("{0,number,integer}", bear_duration / bear_filled),
text_color=chart.fg_color)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Moving Average Calculations ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
ema_line = ta.ema(close, ema_len)
wma_line = ta.wma(close, wma_len)
// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║ Drawing ║
// ╚══════════════════════════════════════════════════════════════════════════════╝
// Plot Moving Averages
plot(show_ema ? ema_line : na, "EMA", color=ema_color, linewidth=ema_width)
plot(show_wma ? wma_line : na, "WMA", color=wma_color, linewidth=wma_width)
// Volume Based Candle Colors
barcolor(candleColor)
// Ultra Volume Box Drawing - Chỉ vẽ box khi có nến tím
if show_ultra_box and isUltraVol
box.new(
left=bar_index,
top=high,
right=bar_index + box_extend,
bottom=low,
border_color=box_border_color,
bgcolor=box_fill_color,
border_width=box_border_width)
// Trading Range Drawing
if show_tr and isLastSideway and startTR >= i_min_bars and startTR <= i_max_bars
// Create new lines
line upperLine = line.new(bar_index , highValue, bar_index, highValue,
color=color.new(c_tr_border, 0), width=i_tr_width)
line lowerLine = line.new(bar_index , lowValue, bar_index, lowValue,
color=color.new(c_tr_border, 0), width=i_tr_width)
linefill newFill = linefill.new(upperLine, lowerLine, color=color.new(c_tr_fill, i_tr_transp))
// Add to arrays
array.unshift(tr_lines, upperLine)
array.unshift(tr_lines2, lowerLine)
array.unshift(tr_fills, newFill)
// Remove old TR if exceeding max display limit
if array.size(tr_lines) > max_tr_display
line.delete(array.pop(tr_lines))
line.delete(array.pop(tr_lines2))
linefill.delete(array.pop(tr_fills))
// Clean up when indicator is removed
if barstate.islast
if not show_tr
while array.size(tr_lines) > 0
line.delete(array.pop(tr_lines))
line.delete(array.pop(tr_lines2))
linefill.delete(array.pop(tr_fills))
if not show_ultra_box
while array.size(ultra_boxes) > 0
box.delete(array.pop(ultra_boxes))
Custom RSI + MACD DivergenceBreakdown of the Script:
RSI Calculation: The RSI is calculated using the rsi function, and the value is plotted on the main chart below the price.
MACD Calculation: The MACD line, signal line, and histogram are plotted. These are key components of the MACD oscillator, which is useful for momentum analysis.
Divergence Logic: The script looks for bullish and bearish divergences between the price action and the RSI. A bullish divergence occurs when the price makes a lower low, but the RSI makes a higher low, signaling potential upward movement. A bearish divergence occurs when the price makes a higher high, but the RSI makes a lower high, signaling potential downward movement.
Signal Plotting: When a divergence is detected, the script marks it on the chart using shapes (either a "BUY" label for bullish or "SELL" label for bearish divergences).
Background Color: The background color is altered based on the detected divergence. If a bullish divergence is found, the background turns green, and for bearish divergences, it turns red.
Alerts: Alerts are set up to notify when a bullish or bearish divergence occurs, based on the conditions.
How to Use:
The RSI and MACD will provide additional momentum context.
Divergences (both bullish and bearish) are marked visually on the chart with labels and background colors.
You can set alerts to be notified whenever a divergence occurs, giving you automated trading signals.
Largest Candles with Price DifferenceThis script shows the largest move on a candle on a particular time frame. So if you are looking at the 10-minute chart, it will tell you what the largest 10-minute candle has been in the past.
Renko Compression Index (RCI)Renko Compression Index
The Renko Compression Index (RCI) is a unique market structure indicator designed to detect price compression zones on Renko-based charts. It measures the frequency of directional changes in Renko bricks over a specific period, identifying moments of trend indecision or consolidation that may precede major breakouts.
Nifty in USD//@version=5
indicator("Nifty in USD", overlay=true)
plot(close / request.security("FX_IDC:USDINR", timeframe.period, close), color=color.orange, title="Nifty/USD")
Quantum Phoenix Ultimate v1.0Quantum Phoenix Ultimate v1.0 Documentation
Overview
Quantum Phoenix Ultimate v1.0 is a Pine Script v5 indicator for TradingView, designed to assist traders in analyzing market trends, generating buy/sell signals, and visualizing key technical indicators. The script integrates multiple indicators (EMA, MACD, RSI, Supertrend, Bollinger Bands, Ichimoku Cloud, ATR, ADX, and Pivot Points) to provide a holistic view of market conditions. It includes a customizable panel displaying real-time analytics, visual signals on the chart, and trade performance metrics.
The script is highly configurable, allowing users to toggle indicators, adjust timeframes, and customize the display of a fixed-position panel. It also supports alerts and data export via webhooks for automated trading or external analysis.
Jack's ADX Entry V5Updated Jack's ADX Entry Indicator to show entry for long/short positions based on:
1. Order of the short, medium and long EMAs.
2. ADX Trend strength momentum value increasing from previous value.
🔸 Channel Zones + VWAP [Multi-Timeframe]Channel Zones + VWAP for intraday trading, scalping, or swing setups.
🔸 1. Trend + Zone Confluence
If price is near the lower red channel and VWAP is green, look for long entries.
If price hits the upper green channel and VWAP turns red, look for short setups.
🔸 2. HTF Confirmation
Use the HTF zones (lime/orange) as bigger picture support/resistance.
For example:
If on 15m chart, set HTF to 1h or 4h.
If price hits HTF Support + VWAP is green, look for reversal entries.
If price is stuck between HTF zones, consider range-bound plays.
🔸 3. Avoid False Breakouts
If price breaks a channel but VWAP doesn't confirm (e.g., VWAP still red while price breaks above), consider it a fakeout.
This keeps you aligned with volume and mean-reversion logic.
🔸 4. Scalping Plays
Look for price touching current channel levels while diverging from VWAP.
Enter when:
Price is far from VWAP → Expect pullback.
Price is at red/green line → Potential bounce zone.
Like this indicator ? Boost it ♥️
HTF Countdown by Silver Mountain Trading)Stay sharp and time your trades with precision.
This simple but effective tool shows a real-time countdown to the next Higher Time Frame (HTF) candle — such as 4H, 1H, or whatever timeframe you choose.
The countdown is always placed just below the current day’s low, with clean design and no clutter.
🔹 Displays remaining time in H:M:S
🔹 Anchored visually to current day’s LOD
🔹 Works in replay mode
🔹 Open-source and free to use
🔹 From Silver Mountain Trading
🙌 If you found this helpful, a like and subscribe to the Silver Mountain Trading YouTube channel would be much appreciated as a thank-you. www.youtube.com
Lower High Trendline with Swing Points// @version=5
indicator("Lower High Trendline with Swing Points", overlay=true)
// Input parameters
length = input.int(50, "Lookback Length", minval=10, maxval=500, step=10)
swingLookback = input.int(5, "Swing Lookback", minval=2, maxval=20, step=1)
lineColor = input.color(color.red, "Trendline Color")
lineWidth = input.int(2, "Line Width", minval=1, maxval=5)
// Arrays to store swing highs
var float swingHighs = array.new_float(0)
var int swingBars = array.new_int(0)
var line trendLine = na
// Function to detect swing highs
isSwingHigh = high >= ta.highest(high , swingLookback) and high > ta.highest(high, swingLookback)
// Detect and store swing highs
if isSwingHigh and high < ta.highest(high, length)
array.push(swingHighs, high)
array.push(swingBars, bar_index)
// Keep arrays within lookback length
if array.size(swingHighs) > 2
array.shift(swingHighs)
array.shift(swingBars)
// Update trendline with latest two swing highs
if array.size(swingHighs) >= 2
// Get the latest two swing points
float high1 = array.get(swingHighs, array.size(swingHighs) - 1)
float high2 = array.get(swingHighs, array.size(swingHighs) - 2)
int bar1 = array.get(swingBars, array.size(swingBars) - 1)
int bar2 = array.get(swingBars, array.size(swingBars) - 2)
// Ensure high2 is higher than high1 for lower high
if high2 > high1
if na(trendLine)
trendLine := line.new(bar2, high2, bar1, high1, xloc.bar_index, color=lineColor, width=lineWidth)
else
line.set_xy1(trendLine, bar2, high2)
line.set_xy2(trendLine, bar1, high1)
line.set_color(trendLine, lineColor)
line.set_width(trendLine, lineWidth)
// Clean up old trendline if no new swing highs within lookback
if bar_index - array.get(swingBars, array.size(swingBars) - 1) > length
if not na(trendLine)
line.delete(trendLine)
array.clear(swingHighs)
array.clear(swingBars)
trendLine := na
// Plot labels for swing highs
if isSwingHigh and high < ta.highest(high, length)
label.new(bar_index, high, "SH", color=color.red, style=label.style_label_down, textcolor=color.white)
20-Bar Breakout + 20-Day High/LowIt marks High/Low of last 20 days and also breakout of high low of last 20 bars on any timeframe
Intraday Long Stoploss DistanceWhile working on intraday 1-minute charts i found it distracting to calculate the stoploss distance from the current price so i created an overlay indicator that plots the values of the last 15 minute and 30 minutes low for safe SL placement so you can get a rough idea of Risk management and lot size to use.
Still in early phases. Few more updates coming soon .stay updated.
*Not a financial advice.
Umesh BC IST 3:30 AM Session Tracker + 4H Candles📌 IST 3:30 AM Session Tracker + 4H Candle Marker
This indicator is designed for traders who follow Indian Standard Time (IST) and want precise session tracking and 4H candle insights.
🔧 Features:
🕒 Daily Session Start at 3:30 AM IST
Automatically detects and marks the beginning of each new trading day based on 3:30 AM IST, not midnight.
Displays session Open, High, and Low lines.
Background shading for each session.
Customizable alert when a new day starts.
🟧 4H Candle Start Markers (IST Time)
Identifies every new 4-hour candle that starts at:
3:30, 7:30, 11:30, 3:30 PM, 7:30 PM, 11:30 PM IST
Adds a vertical line and label ("🟧 4H") above the candle.
Plots a dynamic line for the 4H candle's opening price.
Includes optional alert for new 4H candles.
🔔 Alerts Included:
"🕒 New IST Day Start": Triggers at 3:30 AM IST.
"🟧 New 4H Candle": Triggers at each 4H candle start (IST).
✅ Best for:
Intraday, swing, and institutional traders using IST-based analysis.
Those wanting more accurate daily sessions and clear candle structuring.
🎨 Volume Tuy Chinh - Super High Red//@version=5
indicator("🎨 Volume Tuy Chinh - Super High Red", overlay=false)
avgLength = input.int(20, "So nen tinh volume trung binh")
threshold = input.float(2.0, "Nguong volume sieu cao (x lan)")
avgVol = ta.sma(volume, avgLength)
isSuperHigh = volume > avgVol * threshold
plot(volume, style=plot.style_columns, color=isSuperHigh ? color.red : color.gray, title="Volume Tuy chinh")
QuantumFlowX™ - Özgün Momentum Algoritması + NUPUGoals:
Momentum Analysis: The primary goal of the momentum indicator is to assess the speed and strength of a price move. We will conduct independent analyses of price and momentum to detect momentum movements.
Divergence Detection: By identifying discrepancies (divergences) between price movements and momentum indicators, we will generate buy and sell signals.
Visualization: The momentum indicator’s visual representation will be clearly shown on the chart either as a line or histogram. Divergences and buy/sell signals will also be marked using shapes.
Steps:
Calculating the Momentum Indicator:
We will calculate the momentum indicator based on price changes over a specified period.
Detecting Divergences Between Price and Momentum:
Divergences will be identified when the price moves in one direction, while the momentum indicator moves in the opposite direction.
Marking Divergences Visually on the Chart:
Divergences will be clearly marked with shapes (arrows or labels) to indicate buy and sell opportunities.
Displaying Momentum Lines and Histograms:
Momentum will be displayed on the chart using lines or histograms, clearly showing the strength and direction of the price move.
Filled/Unfilled Candles + Gap ZonesFilled unfilled filled candlestick
To help traders identify bullish/bearish candles and price gaps that may offer trade opportunities.
---
Features:
1. Candle Coloring:
Green = Unfilled Bullish Candle (close > open).
Red = Filled Bearish Candle (close < open).
2. Gap Detection:
Detects Gap-Up (today's open > yesterday's high).
Detects Gap-Down (today's open < yesterday's low).
3. Gap Zones:
Draws a box around the gap area.
If price fills the gap, the box color turns green to confirm.
4. Alerts:
Alerts you when a gap is filled, signaling potential reversal or continuation setup.
TDO & Hit Rates by Weekday (5 min)Purpose
Tracks how often the next NY session “hits” the previous day’s True Day Open (TDO) level, separately for sessions that open above vs. below TDO, and breaks the statistics down by weekday (Mon–Fri) plus an overall summary.
Key Features
True Day Open (TDO) Plot
Captures the prior day’s 23:00 CT close price as the TDO.
Plots it as a continuous yellow line across your chart.
Session Labeling
At the end of each NY session (08:30–15:00 CT), places a small “TDO” label at the TDO price to confirm visually where it lay during that day.
Hit‑Count Logic
For each 5 min bar in the NY session, checks if the bar’s high ≥ TDO ≥ low (i.e. the TDO level was “hit”).
Classifies each session by whether its opening price (first 5 min bar) was above or below the TDO.
Weekday Statistics Table
Displays in the bottom‑left of your main chart window.
Rows: Header, Mon, Tue, Wed, Thu, Fri, All.
Columns:
% Hit Above: % of “above‑TDO” sessions that saw at least one hit
% Hit Below: % of “below‑TDO” sessions that saw at least one hit
Automatically updates in real time as new sessions complete.
Inputs & Settings
Data Resolution: Default = 5 min; use any intraday timeframe you like (1, 3, 15 min, etc.).
Extended Hours: Make sure your chart’s Extended Session (overnight) is enabled so the 23:00 CT bar exists.
Overlay: Draws directly on your price chart (no separate pane).
How to Use
Add to Chart: Paste the Pine v5 code into TradingView’s editor and apply to your ES (or other) futures chart.
Enable Overnight Bars: In Chart Settings → Symbol/Session → include Extended Hours.
Select Timeframe: Set the chart (or the indicator’s “Data Resolution” input) to 5 min (or your preferred intraday).
Read the Table:
Each weekday row shows how reliable TDO touches have been historically, separately for “above” and “below” opens.
The bottom “All” row summarizes combined performance.
What You Learn
Edge Analysis: Do sessions opening above TDO tend to test that level more often than those opening below (or vice versa)?
Day‑of‑Week Bias: Are certain weekdays more prone to TDO retests?
Overall Confidence: The “All” row lets you see your full-sample hit‑rate on both sides.
Zen MIG Reversal V1**Zen MIG Reversal V1**
Zen MIG Reversal is a pattern-based indicator that highlights rare reversal setups.
It’s designed to support traders in visually identifying potential turning points, especially following strong momentum or gap-style moves.
**How it works:**
- **Bullish Reversal:**
Detects 3 consecutive bullish candles. The third bar must have a low above the high of the first bar and below the 20 EMA. When this occurs, a light blue box is drawn across the 3-bar range, from high to the current bar’s low. A blue arrow appears below the prior bar.
- **Bearish Reversal:**
Detects 3 consecutive bearish candles. The third bar must have a high below the low of the first bar and above the 20 EMA. A light red box is drawn from low to the current bar’s high. A red arrow appears above the prior bar.
- Optional settings allow you to:
- Show or hide the EMA line
- Toggle the arrows
- Adjust smoothing settings for context
**Purpose:**
It’s best used for discretionary analysis, journaling, or studying price behavior in momentum-driven environments.
**Disclaimer:**
This script is for educational and informational purposes only. It does not provide financial advice or trade recommendations. Always backtest and use proper risk management before applying any indicator to live trading.
Log-Normal Price DistributionThis Pine Script indicator plots a log-normal distribution model of future price projections on a TradingView chart. It visualizes the potential price ranges based on the statistical properties (mean and standard deviation) of log returns over a defined period. It's particularly useful for analyzing potential volatility and predicting future price ranges.
HVC + levelsPersistent HVC Rays Across All Intraday
Identify and carry forward the open, close, high and low of the highest‑volume daily candle as true horizontal support/resistance levels across every intraday timeframe – including pre‑market and after‑hours.
Description
This indicator automatically detects the single highest‑volume daily bar over your specified lookback period and then plots four persistent horizontal rays at that candle’s open, close, high, and low. Rays are anchored precisely at the New York Stock Exchange’s 09:30 ET bar using IANA timezone timestamps and extend to the right edge of your chart viewport, ensuring they remain visible on 1 min, 5 min, 15 min, hourly, and daily timeframes alike. You can also color intraday high‑volume bars for quick visual context. Store up to Max HVCs of past levels and watch older lines fade, delivering a dynamic volume‑driven support/resistance framework that adapts as new high‑volume days emerge.
Key Inputs
Lookback Period (bars): Number of bars to search for the highest‑volume daily candle.
Max HVCs: Maximum number of past HVC days whose levels remain plotted.
Color Intraday HVC Bars: Toggle to highlight intraday bars that match the highest recent volume.
Plot Persistent Rays: Toggle the horizontal levels on/off for a clean chart.
Auto Chart Patterns Alert [Trendoscope®]Triggers an alert when a new pattern is detected. Patterns detected include triangles, wedges, and channels.