DAX ORB Ultimate - ALGO Suite//@version=5
indicator("DAX ORB Ultimate - ALGO Suite", overlay=true, max_labels_count=200, max_lines_count=100)
// ═══════════════════════════════════════════════════════════════════════════════
// DAX OPENING RANGE BREAKOUT - ULTIMATE EDITION
// Real-time ORB building | Multi-timeframe support | Key levels with bias
// Works on ANY timeframe - uses M1 data for ORB construction
// ═══════════════════════════════════════════════════════════════════════════════
// ════════════════════════ INPUTS ════════════════════════
orb_start_h = input.int(7, "Start Hour (UTC)", minval=0, maxval=23, group="ORB Settings")
orb_start_m = input.int(40, "Start Minute", minval=0, maxval=59, group="ORB Settings")
orb_end_h = input.int(8, "End Hour (UTC)", minval=0, maxval=23, group="ORB Settings")
orb_end_m = input.int(0, "End Minute", minval=0, maxval=59, group="ORB Settings")
exclude_wicks = input.bool(true, "Exclude Wicks", group="ORB Settings")
close_hour = input.int(16, "Market Close Hour", minval=0, maxval=23, group="ORB Settings")
use_tf = input.bool(true, "1. Trend Following", group="Strategies")
use_mr = input.bool(true, "2. Mean Reversion", group="Strategies")
use_sa = input.bool(true, "3. Statistical Arb", group="Strategies")
use_mm = input.bool(true, "4. Market Making", group="Strategies")
use_ba = input.bool(true, "5. Basis Arb", group="Strategies")
use_ema = input.bool(true, "EMA Filter", group="Technical Filters")
use_rsi = input.bool(true, "RSI Filter", group="Technical Filters")
use_macd = input.bool(true, "MACD Filter", group="Technical Filters")
use_vol = input.bool(true, "Volume Filter", group="Technical Filters")
use_bb = input.bool(true, "Bollinger Filter", group="Technical Filters")
use_fixed = input.bool(false, "Fixed SL/TP", group="Risk Management")
fixed_sl = input.float(50, "Fixed SL Points", minval=10, group="Risk Management")
fixed_tp = input.float(150, "Fixed TP Points", minval=10, group="Risk Management")
atr_sl = input.float(2.0, "ATR SL Mult", minval=0.5, group="Risk Management")
atr_tp = input.float(3.0, "ATR TP Mult", minval=0.5, group="Risk Management")
min_rr = input.float(2.0, "Min R:R", minval=1.0, group="Risk Management")
show_dash = input.bool(true, "Show Dashboard", group="Display")
show_lines = input.bool(true, "Show Lines", group="Display")
show_levels = input.bool(true, "Show Key Levels", group="Display")
// ════════════════════════ FUNCTIONS ════════════════════════
is_orb_period(_h, _m) =>
start = orb_start_h * 60 + orb_start_m
end = orb_end_h * 60 + orb_end_m
curr = _h * 60 + _m
curr >= start and curr < end
orb_ended(_h, _m) =>
end = orb_end_h * 60 + orb_end_m
curr = _h * 60 + _m
curr == end
is_market_open() =>
h = hour(time)
h >= orb_start_h and h <= close_hour
// ════════════════════════ DATA GATHERING (M1) ════════════════════════
// Get M1 data for ORB construction (works on ANY chart timeframe)
= request.security(syminfo.tickerid, "1", , barmerge.gaps_off, barmerge.lookahead_off)
// Daily data
d_high = request.security(syminfo.tickerid, "D", high, barmerge.gaps_off, barmerge.lookahead_on)
d_low = request.security(syminfo.tickerid, "D", low, barmerge.gaps_off, barmerge.lookahead_on)
d_open = request.security(syminfo.tickerid, "D", open, barmerge.gaps_off, barmerge.lookahead_on)
// Current day high/low (intraday)
var float today_high = na
var float today_low = na
var float prev_day_high = na
var float prev_day_low = na
var float yest_size = 0
if ta.change(time("D")) != 0
prev_day_high := d_high
prev_day_low := d_low
yest_size := d_high - d_low
today_high := high
today_low := low
else
today_high := math.max(na(today_high) ? high : today_high, high)
today_low := math.min(na(today_low) ? low : today_low, low)
// ════════════════════════ ORB CONSTRUCTION (REAL-TIME) ════════════════════════
var float orb_h = na
var float orb_l = na
var bool orb_ready = false
var float orb_building_h = na
var float orb_building_l = na
var bool is_building = false
// Get M1 bar time components
m1_hour = hour(m1_time)
m1_minute = minute(m1_time)
// Reset daily
if ta.change(time("D")) != 0
orb_h := na
orb_l := na
orb_ready := false
orb_building_h := na
orb_building_l := na
is_building := false
// Build ORB using M1 data
if is_orb_period(m1_hour, m1_minute) and not orb_ready
is_building := true
val_h = exclude_wicks ? m1_close : m1_high
val_l = exclude_wicks ? m1_close : m1_low
if na(orb_building_h)
orb_building_h := val_h
orb_building_l := val_l
else
orb_building_h := math.max(orb_building_h, val_h)
orb_building_l := math.min(orb_building_l, val_l)
// FIX #1: Set is_building to false when NOT in ORB period anymore
if not is_orb_period(m1_hour, m1_minute) and is_building and not orb_ready
is_building := false
// Finalize ORB when period ends
if orb_ended(m1_hour, m1_minute) and not orb_ready
orb_h := orb_building_h
orb_l := orb_building_l
orb_ready := true
is_building := false
// Display building values in real-time
current_orb_h = is_building ? orb_building_h : orb_h
current_orb_l = is_building ? orb_building_l : orb_l
// ════════════════════════ INDICATORS ════════════════════════
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
ema50 = ta.ema(close, 50)
rsi = ta.rsi(close, 14)
= ta.macd(close, 12, 26, 9)
= ta.bb(close, 20, 2)
atr = ta.atr(14)
vol_ma = ta.sma(volume, 20)
// ════════════════════════ STRATEGY SIGNALS ════════════════════════
// 1. Trend Following
tf_short = ta.sma(close, 10)
tf_long = ta.sma(close, 30)
tf_bull = tf_short > tf_long
tf_bear = tf_short < tf_long
// 2. Mean Reversion
mr_mean = ta.sma(close, 20)
mr_dev = (close - mr_mean) / mr_mean * 100
mr_bull = mr_dev <= -0.5
mr_bear = mr_dev >= 0.5
// 3. Statistical Arb
sa_mean = ta.sma(close, 120)
sa_std = ta.stdev(close, 120)
sa_z = sa_std > 0 ? (close - sa_mean) / sa_std : 0
var string sa_st = "flat"
if sa_st == "flat"
if sa_z <= -2.0
sa_st := "long"
else if sa_z >= 2.0
sa_st := "short"
else if math.abs(sa_z) <= 0.5 or math.abs(sa_z) >= 4.0
sa_st := "flat"
sa_bull = sa_st == "long"
sa_bear = sa_st == "short"
// 4. Market Making
mm_spread = (high - low) / close * 100
mm_mid = (high + low) / 2
mm_bull = close < mm_mid and mm_spread >= 0.5
mm_bear = close > mm_mid and mm_spread >= 0.5
// 5. Basis Arb
ba_fair = ta.sma(close, 50)
ba_bps = ba_fair != 0 ? (close - ba_fair) / ba_fair * 10000 : 0
ba_bull = ba_bps <= -8.0
ba_bear = ba_bps >= 8.0
// Vote counting
bull_v = 0
bear_v = 0
if use_tf
bull_v := bull_v + (tf_bull ? 1 : 0)
bear_v := bear_v + (tf_bear ? 1 : 0)
if use_mr
bull_v := bull_v + (mr_bull ? 1 : 0)
bear_v := bear_v + (mr_bear ? 1 : 0)
if use_sa
bull_v := bull_v + (sa_bull ? 1 : 0)
bear_v := bear_v + (sa_bear ? 1 : 0)
if use_mm
bull_v := bull_v + (mm_bull ? 1 : 0)
bear_v := bear_v + (mm_bear ? 1 : 0)
if use_ba
bull_v := bull_v + (ba_bull ? 1 : 0)
bear_v := bear_v + (ba_bear ? 1 : 0)
// Technical filters - Simplified scoring system
ema_ok_b = not use_ema or (ema9 > ema21 and close > ema50)
ema_ok_s = not use_ema or (ema9 < ema21 and close < ema50)
rsi_ok_b = not use_rsi or (rsi > 40 and rsi < 80) // More lenient
rsi_ok_s = not use_rsi or (rsi < 60 and rsi > 20) // More lenient
macd_ok_b = not use_macd or macd > sig
macd_ok_s = not use_macd or macd < sig
vol_ok = not use_vol or volume > vol_ma * 1.2 // More lenient
bb_ok_b = not use_bb or close > bb_mid
bb_ok_s = not use_bb or close < bb_mid
// Technical score (need at least 2 out of 5 filters)
tech_score_b = (ema_ok_b ? 1 : 0) + (rsi_ok_b ? 1 : 0) + (macd_ok_b ? 1 : 0) + (bb_ok_b ? 1 : 0) + (vol_ok ? 1 : 0)
tech_score_s = (ema_ok_s ? 1 : 0) + (rsi_ok_s ? 1 : 0) + (macd_ok_s ? 1 : 0) + (bb_ok_s ? 1 : 0) + (vol_ok ? 1 : 0)
tech_bull = tech_score_b >= 2
tech_bear = tech_score_s >= 2
// Breakout - SIMPLIFIED (just need close above/below ORB)
brk_bull = orb_ready and close > current_orb_h
brk_bear = orb_ready and close < current_orb_l
// Consensus - At least 2 strategies agree (not majority)
total_st = (use_tf ? 1 : 0) + (use_mr ? 1 : 0) + (use_sa ? 1 : 0) + (use_mm ? 1 : 0) + (use_ba ? 1 : 0)
consensus_b = bull_v >= 2
consensus_s = bear_v >= 2
// Final signals - MUCH MORE LENIENT
daily_ok = yest_size >= 50 // Reduced from 100
buy = brk_bull and consensus_b and tech_bull and is_market_open()
sell = brk_bear and consensus_s and tech_bear and is_market_open()
// ════════════════════════ SL/TP ════════════════════════
// IMMEDIATE SL/TP LEVELS - Calculated as soon as ORB is ready (at 8:00)
var float long_entry = na
var float long_sl = na
var float long_tp = na
var float short_entry = na
var float short_sl = na
var float short_tp = na
// Calculate potential levels immediately when ORB is ready
if orb_ready and not na(orb_h) and not na(orb_l)
// Long scenario: Entry at ORB high breakout
long_entry := orb_h
long_sl := use_fixed ? long_entry - fixed_sl : long_entry - atr * atr_sl
long_tp := use_fixed ? long_entry + fixed_tp : long_entry + atr * atr_tp
// Short scenario: Entry at ORB low breakout
short_entry := orb_l
short_sl := use_fixed ? short_entry + fixed_sl : short_entry + atr * atr_sl
short_tp := use_fixed ? short_entry - fixed_tp : short_entry - atr * atr_tp
// Signal-based entry tracking (for dashboard and alerts)
var float buy_entry = na
var float buy_sl = na
var float buy_tp = na
var float sell_entry = na
var float sell_sl = na
var float sell_tp = na
if buy
buy_entry := close
buy_sl := use_fixed ? buy_entry - fixed_sl : buy_entry - atr * atr_sl
buy_tp := use_fixed ? buy_entry + fixed_tp : buy_entry + atr * atr_tp
if sell
sell_entry := close
sell_sl := use_fixed ? sell_entry + fixed_sl : sell_entry + atr * atr_sl
sell_tp := use_fixed ? sell_entry - fixed_tp : sell_entry - atr * atr_tp
buy_rr = not na(buy_entry) ? (buy_tp - buy_entry) / (buy_entry - buy_sl) : 0
sell_rr = not na(sell_entry) ? (sell_entry - sell_tp) / (sell_sl - sell_entry) : 0
buy_final = buy and buy_rr >= min_rr
sell_final = sell and sell_rr >= min_rr
// ════════════════════════ TRAILING STOPS ════════════════════════
// Trailing Stop Loss and Take Profit Management
var float trailing_sl_long = na
var float trailing_sl_short = na
var float trailing_tp_long = na
var float trailing_tp_short = na
var bool in_long = false
var bool in_short = false
var float highest_since_entry = na
var float lowest_since_entry = na
// Enter long position
if buy_final and not in_long
in_long := true
in_short := false
trailing_sl_long := buy_sl
trailing_tp_long := buy_tp
highest_since_entry := close
// Enter short position
if sell_final and not in_short
in_short := true
in_long := false
trailing_sl_short := sell_sl
trailing_tp_short := sell_tp
lowest_since_entry := close
// Update trailing stops for LONG
if in_long
// Track highest price since entry
highest_since_entry := math.max(highest_since_entry, high)
// Trail stop loss (moves up as price moves up)
// When price moves 1 ATR in profit, move SL to breakeven
// When price moves 2 ATR in profit, move SL to +1 ATR
profit_atr = (highest_since_entry - buy_entry) / atr
if profit_atr >= 2.0
trailing_sl_long := math.max(trailing_sl_long, buy_entry + atr * 1.0)
else if profit_atr >= 1.0
trailing_sl_long := math.max(trailing_sl_long, buy_entry)
// Smart trailing TP - extends TP if strong momentum
if highest_since_entry > trailing_tp_long * 0.9 and rsi > 60 // Within 10% of TP and strong momentum
trailing_tp_long := trailing_tp_long + atr * 0.5 // Extend TP
// Exit conditions
if close <= trailing_sl_long or close >= trailing_tp_long
in_long := false
trailing_sl_long := na
trailing_tp_long := na
highest_since_entry := na
// Update trailing stops for SHORT
if in_short
// Track lowest price since entry
lowest_since_entry := math.min(lowest_since_entry, low)
// Trail stop loss (moves down as price moves down)
profit_atr = (sell_entry - lowest_since_entry) / atr
if profit_atr >= 2.0
trailing_sl_short := math.min(trailing_sl_short, sell_entry - atr * 1.0)
else if profit_atr >= 1.0
trailing_sl_short := math.min(trailing_sl_short, sell_entry)
// Smart trailing TP - extends TP if strong momentum
if lowest_since_entry < trailing_tp_short * 1.1 and rsi < 40 // Within 10% of TP and strong momentum
trailing_tp_short := trailing_tp_short - atr * 0.5 // Extend TP
// Exit conditions
if close >= trailing_sl_short or close <= trailing_tp_short
in_short := false
trailing_sl_short := na
trailing_tp_short := na
lowest_since_entry := na
// ════════════════════════ ANALYTICS ════════════════════════
prob_strat = total_st > 0 ? math.max(bull_v, bear_v) / total_st * 100 : 50
prob_tech = (tech_bull or tech_bear) ? 75 : 35
prob_vol = vol_ok ? 85 : 50
prob_daily = daily_ok ? 85 : 30
prob_orb = orb_ready ? 80 : 20
probability = prob_strat * 0.3 + prob_tech * 0.25 + prob_vol * 0.15 + prob_daily * 0.15 + prob_orb * 0.15
dir_score = 0
dir_score := dir_score + (ema9 > ema21 ? 2 : -2)
dir_score := dir_score + (tf_bull ? 2 : -2)
dir_score := dir_score + (macd > sig ? 1 : -1)
dir_score := dir_score + (rsi > 50 ? 1 : -1)
direction = dir_score >= 2 ? "STRONG BULL" : (dir_score > 0 ? "BULL" : (dir_score <= -2 ? "STRONG BEAR" : (dir_score < 0 ? "BEAR" : "NEUTRAL")))
clean_trend = math.abs(ema9 - ema21) / close * 100
clean_noise = atr / close * 100
clean_struct = close > ema9 and close > ema21 and close > ema50 or close < ema9 and close < ema21 and close < ema50
clean_score = (clean_trend > 0.5 ? 30 : 10) + (clean_noise < 1.5 ? 30 : 10) + (clean_struct ? 40 : 10)
quality = clean_score >= 70 ? "CLEAN" : (clean_score >= 50 ? "GOOD" : (clean_score >= 30 ? "OK" : "CHOPPY"))
mom = ta.mom(close, 10)
mom_str = math.abs(mom) / close * 100
vol_rat = atr / ta.sma(atr, 20)
movement = buy_final or sell_final ? (mom_str > 0.8 and vol_rat > 1.3 ? "STRONG" : (mom_str > 0.5 ? "MODERATE" : "GRADUAL")) : "WAIT"
ok_score = (daily_ok ? 25 : 0) + (orb_ready ? 25 : 0) + (is_market_open() ? 20 : 0) + (clean_score >= 50 ? 20 : 5) + (probability >= 60 ? 10 : 0)
ok_trade = ok_score >= 65
// ════════════════════════ KEY LEVELS WITH BIAS ════════════════════════
// Calculate potential reaction levels with directional bias
var float key_levels = array.new_float(0)
var string key_bias = array.new_string(0)
if barstate.islast and show_levels
array.clear(key_levels)
array.clear(key_bias)
// Add levels with bias
if not na(current_orb_h)
array.push(key_levels, current_orb_h)
array.push(key_bias, consensus_b ? "BULL BREAK" : "RESISTANCE")
if not na(current_orb_l)
array.push(key_levels, current_orb_l)
array.push(key_bias, consensus_s ? "BEAR BREAK" : "SUPPORT")
if not na(prev_day_high)
array.push(key_levels, prev_day_high)
bias_pdh = close > prev_day_high ? "BULLISH" : (close < prev_day_high and close > prev_day_high * 0.995 ? "WATCH" : "RESIST")
array.push(key_bias, bias_pdh)
if not na(prev_day_low)
array.push(key_levels, prev_day_low)
bias_pdl = close < prev_day_low ? "BEARISH" : (close > prev_day_low and close < prev_day_low * 1.005 ? "WATCH" : "SUPPORT")
array.push(key_bias, bias_pdl)
if not na(today_high)
array.push(key_levels, today_high)
array.push(key_bias, "TODAY HIGH")
if not na(today_low)
array.push(key_levels, today_low)
array.push(key_bias, "TODAY LOW")
// Add EMA50 as dynamic level
array.push(key_levels, ema50)
ema_bias = close > ema50 ? "BULL SUPPORT" : "BEAR RESIST"
array.push(key_bias, ema_bias)
// ════════════════════════ VISUALS ════════════════════════
// Previous day lines
plot(show_lines ? prev_day_high : na, "Prev Day H", color.new(color.yellow, 0), 1, plot.style_line)
plot(show_lines ? prev_day_low : na, "Prev Day L", color.new(color.orange, 0), 1, plot.style_line)
// Current day high/low
plot(show_lines ? today_high : na, "Today High", color.new(color.lime, 40), 2, plot.style_circles)
plot(show_lines ? today_low : na, "Today Low", color.new(color.red, 40), 2, plot.style_circles)
// ORB lines (show building values in real-time with separate plots)
// Building phase - circles (orange during building)
plot(show_lines and is_building and not na(current_orb_h) ? current_orb_h : na, "ORB High Building", color.new(color.orange, 30), 3, plot.style_circles)
plot(show_lines and is_building and not na(current_orb_l) ? current_orb_l : na, "ORB Low Building", color.new(color.orange, 30), 3, plot.style_circles)
// Ready phase - ULTRA BRIGHT solid lines
plot(show_lines and not is_building and not na(current_orb_h) ? current_orb_h : na, "ORB High Ready", color.new(color.aqua, 0), 4, plot.style_line)
plot(show_lines and not is_building and not na(current_orb_l) ? current_orb_l : na, "ORB Low Ready", color.new(color.aqua, 0), 4, plot.style_line)
// ORB zone fill
p1 = plot(not na(current_orb_h) ? current_orb_h : na, display=display.none)
p2 = plot(not na(current_orb_l) ? current_orb_l : na, display=display.none)
fill_color = is_building ? color.new(color.blue, 93) : color.new(color.blue, 88)
fill(p1, p2, fill_color, title="ORB Zone")
// FIX #2: Draw ORB rectangle box ONLY ONCE when ready (use var to track if already drawn)
var box orb_box = na
var int orb_start_bar = na
var bool orb_box_drawn = false
// Reset box drawn flag on new day
if ta.change(time("D")) != 0
orb_box_drawn := false
// Capture the bar when ORB becomes ready
if orb_ready and not orb_ready
orb_start_bar := bar_index
orb_box_drawn := false // Allow new box to be drawn
// Draw box ONLY ONCE when ORB first becomes ready
if orb_ready and not orb_box_drawn and not na(orb_h) and not na(orb_l) and show_lines
if not na(orb_box)
box.delete(orb_box)
// Ultra clear rectangle with thick bright borders
box_color = color.new(color.aqua, 85) // Bright aqua fill
border_color = color.new(color.aqua, 0) // Solid bright aqua border
orb_box := box.new(orb_start_bar, orb_h, bar_index + 50, orb_l,
border_color=border_color,
border_width=3, // Thicker border
bgcolor=box_color,
extend=extend.right,
text="ORB ZONE",
text_size=size.normal, // Larger text
text_color=color.new(color.aqua, 0)) // Bright text
orb_box_drawn := true
// Update box right edge on each bar (without creating new box)
if orb_box_drawn and not na(orb_box) and show_lines
box.set_right(orb_box, bar_index)
// EMAs
plot(use_ema ? ema9 : na, "EMA9", color.new(color.blue, 20), 1)
plot(use_ema ? ema21 : na, "EMA21", color.new(color.orange, 20), 1)
plot(use_ema ? ema50 : na, "EMA50", color.new(color.purple, 30), 2)
// Signals
plotshape(buy_final, "BUY", shape.triangleup, location.belowbar, color.new(color.lime, 0), size=size.small, text="BUY")
plotshape(sell_final, "SELL", shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small, text="SELL")
// Exit signals
plotshape(in_long and not in_long, "EXIT LONG", shape.xcross, location.abovebar, color.new(color.orange, 0), size=size.tiny, text="EXIT")
plotshape(in_short and not in_short, "EXIT SHORT", shape.xcross, location.belowbar, color.new(color.orange, 0), size=size.tiny, text="EXIT")
// Trailing stop lines
plot(in_long and not na(trailing_sl_long) ? trailing_sl_long : na, "Trail SL Long", color.new(color.red, 0), 2, plot.style_cross)
plot(in_long and not na(trailing_tp_long) ? trailing_tp_long : na, "Trail TP Long", color.new(color.lime, 0), 2, plot.style_cross)
plot(in_short and not na(trailing_sl_short) ? trailing_sl_short : na, "Trail SL Short", color.new(color.red, 0), 2, plot.style_cross)
plot(in_short and not na(trailing_tp_short) ? trailing_tp_short : na, "Trail TP Short", color.new(color.lime, 0), 2, plot.style_cross)
// FIX #3: IMMEDIATE SL/TP LINES - Draw ONLY ONCE when ORB is ready
var line long_sl_ln = na
var line long_tp_ln = na
var line short_sl_ln = na
var line short_tp_ln = na
var label long_sl_lbl = na
var label long_tp_lbl = na
var label short_sl_lbl = na
var label short_tp_lbl = na
var bool sltp_lines_drawn = false
// Reset lines drawn flag on new day
if ta.change(time("D")) != 0
sltp_lines_drawn := false
// Draw lines ONLY ONCE when ORB first becomes ready
if orb_ready and not orb_ready and show_lines
sltp_lines_drawn := false // Allow new lines to be drawn
if orb_ready and not sltp_lines_drawn and show_lines
// Delete old lines
if not na(long_sl_ln)
line.delete(long_sl_ln)
line.delete(long_tp_ln)
line.delete(short_sl_ln)
line.delete(short_tp_ln)
label.delete(long_sl_lbl)
label.delete(long_tp_lbl)
label.delete(short_sl_lbl)
label.delete(short_tp_lbl)
// LONG scenario (green - bullish breakout above ORB high)
if not na(long_sl) and not na(long_tp)
long_sl_ln := line.new(bar_index, long_sl, bar_index + 100, long_sl, color=color.new(color.red, 0), width=2, style=line.style_solid, extend=extend.right)
long_tp_ln := line.new(bar_index, long_tp, bar_index + 100, long_tp, color=color.new(color.lime, 0), width=2, style=line.style_solid, extend=extend.right)
long_sl_lbl := label.new(bar_index, long_sl, "LONG SL: " + str.tostring(long_sl, "#.##"), style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
long_tp_lbl := label.new(bar_index, long_tp, "LONG TP: " + str.tostring(long_tp, "#.##"), style=label.style_label_left, color=color.new(color.lime, 0), textcolor=color.black, size=size.small)
// SHORT scenario (red - bearish breakout below ORB low)
if not na(short_sl) and not na(short_tp)
short_sl_ln := line.new(bar_index, short_sl, bar_index + 100, short_sl, color=color.new(color.red, 0), width=2, style=line.style_solid, extend=extend.right)
short_tp_ln := line.new(bar_index, short_tp, bar_index + 100, short_tp, color=color.new(color.lime, 0), width=2, style=line.style_solid, extend=extend.right)
short_sl_lbl := label.new(bar_index, short_sl, "SHORT SL: " + str.tostring(short_sl, "#.##"), style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
short_tp_lbl := label.new(bar_index, short_tp, "SHORT TP: " + str.tostring(short_tp, "#.##"), style=label.style_label_left, color=color.new(color.lime, 0), textcolor=color.black, size=size.small)
sltp_lines_drawn := true
// FIX #4: Key level labels - Track and delete old labels to prevent duplication
var label key_level_labels = array.new_label(0)
// Delete all old key level labels
if array.size(key_level_labels) > 0
for i = 0 to array.size(key_level_labels) - 1
label.delete(array.get(key_level_labels, i))
array.clear(key_level_labels)
// Create key level labels only on last bar
if barstate.islast and show_levels and array.size(key_levels) > 0
for i = 0 to array.size(key_levels) - 1
lvl = array.get(key_levels, i)
bias = array.get(key_bias, i)
// Color based on bias
lbl_color = str.contains(bias, "BULL") ? color.new(color.green, 70) : (str.contains(bias, "BEAR") ? color.new(color.red, 70) : (str.contains(bias, "SUPPORT") ? color.new(color.blue, 70) : (str.contains(bias, "RESIST") ? color.new(color.orange, 70) : color.new(color.gray, 70))))
txt_color = str.contains(bias, "BULL") ? color.green : (str.contains(bias, "BEAR") ? color.red : (str.contains(bias, "SUPPORT") ? color.blue : (str.contains(bias, "RESIST") ? color.orange : color.gray)))
new_lbl = label.new(bar_index + 2, lvl, str.tostring(lvl, "#.##") + " " + bias, style=label.style_label_left, color=lbl_color, textcolor=txt_color, size=size.tiny, textalign=text.align_left)
array.push(key_level_labels, new_lbl)
// FIX #5: Compact chart info labels - Track and delete to prevent duplication
var label prob_label = na
var label dir_label = na
if barstate.islast and show_lines
// Delete old labels
if not na(prob_label)
label.delete(prob_label)
if not na(dir_label)
label.delete(dir_label)
// Create new labels
prob_c = probability >= 70 ? color.green : (probability >= 50 ? color.yellow : color.red)
prob_label := label.new(bar_index, high + atr * 1.2, str.tostring(probability, "#") + "%", style=label.style_none, textcolor=prob_c, size=size.small)
dir_c = str.contains(direction, "BULL") ? color.green : (str.contains(direction, "BEAR") ? color.red : color.gray)
dir_label := label.new(bar_index, high + atr * 2, direction, style=label.style_none, textcolor=dir_c, size=size.tiny)
// ════════════════════════ DASHBOARD ════════════════════════
var table dash = table.new(position.top_right, 2, 20, bgcolor=color.new(color.black, 5), border_width=1, border_color=color.new(color.gray, 60))
if barstate.islast and show_dash
r = 0
// Header
table.cell(dash, 0, r, "DAX ORB ULTIMATE", text_color=color.white, bgcolor=color.new(color.blue, 30), text_size=size.small)
table.cell(dash, 1, r, timeframe.period, text_color=color.yellow, bgcolor=color.new(color.blue, 30), text_size=size.tiny)
// Current Day
r += 1
table.cell(dash, 0, r, "TODAY H/L", text_color=color.aqua, text_size=size.tiny)
table.cell(dash, 1, r, "", text_color=color.white)
r += 1
table.cell(dash, 0, r, "High", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(today_high, "#.##"), text_color=color.lime, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Low", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(today_low, "#.##"), text_color=color.red, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Range", text_color=color.gray, text_size=size.tiny)
today_range = today_high - today_low
table.cell(dash, 1, r, str.tostring(today_range, "#") + "p", text_color=color.aqua, text_size=size.tiny)
// Previous Day
r += 1
table.cell(dash, 0, r, "PREV H/L", text_color=color.aqua, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(yest_size, "#") + "p", text_color=daily_ok ? color.lime : color.red, text_size=size.tiny)
// ORB Status with real-time values
r += 1
table.cell(dash, 0, r, "ORB 7:40-8:00", text_color=color.aqua, text_size=size.tiny)
orb_status = is_building ? "BUILDING" : (orb_ready ? "READY" : "WAIT")
orb_clr = is_building ? color.orange : (orb_ready ? color.lime : color.gray)
table.cell(dash, 1, r, orb_status, text_color=orb_clr, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "High", text_color=color.gray, text_size=size.tiny)
orb_h_txt = not na(current_orb_h) ? str.tostring(current_orb_h, "#.##") : "---"
table.cell(dash, 1, r, orb_h_txt, text_color=is_building ? color.orange : color.green, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Low", text_color=color.gray, text_size=size.tiny)
orb_l_txt = not na(current_orb_l) ? str.tostring(current_orb_l, "#.##") : "---"
table.cell(dash, 1, r, orb_l_txt, text_color=is_building ? color.orange : color.red, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Size", text_color=color.gray, text_size=size.tiny)
orb_size = not na(current_orb_h) and not na(current_orb_l) ? current_orb_h - current_orb_l : 0
table.cell(dash, 1, r, str.tostring(orb_size, "#") + "p", text_color=color.yellow, text_size=size.tiny)
// Strategies
r += 1
table.cell(dash, 0, r, "STRATEGIES", text_color=color.aqua, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(bull_v) + "B " + str.tostring(bear_v) + "S", text_color=color.yellow, text_size=size.tiny)
// Analytics
r += 1
table.cell(dash, 0, r, "PROBABILITY", text_color=color.white, bgcolor=color.new(color.purple, 70), text_size=size.small)
prob_c = probability >= 70 ? color.lime : (probability >= 50 ? color.yellow : color.red)
table.cell(dash, 1, r, str.tostring(probability, "#") + "%", text_color=prob_c, bgcolor=color.new(color.purple, 70), text_size=size.small)
r += 1
table.cell(dash, 0, r, "Direction", text_color=color.gray, text_size=size.tiny)
dir_c = str.contains(direction, "BULL") ? color.lime : (str.contains(direction, "BEAR") ? color.red : color.gray)
table.cell(dash, 1, r, direction, text_color=dir_c, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Chart", text_color=color.gray, text_size=size.tiny)
qual_c = quality == "CLEAN" ? color.lime : (quality == "GOOD" ? color.green : (quality == "OK" ? color.yellow : color.red))
table.cell(dash, 1, r, quality, text_color=qual_c, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "OK Trade?", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, ok_trade ? "YES" : "NO", text_color=ok_trade ? color.lime : color.red, text_size=size.tiny)
// Position Status
r += 1
pos_txt = in_long ? "IN LONG" : (in_short ? "IN SHORT" : "NO POSITION")
pos_c = in_long ? color.lime : (in_short ? color.red : color.gray)
table.cell(dash, 0, r, "POSITION", text_color=color.white, bgcolor=color.new(color.blue, 50), text_size=size.small)
table.cell(dash, 1, r, pos_txt, text_color=pos_c, bgcolor=color.new(color.blue, 50), text_size=size.small)
// Show trailing stops if in position
if in_long and not na(trailing_sl_long)
r += 1
table.cell(dash, 0, r, "Trail SL", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(trailing_sl_long, "#.##"), text_color=color.red, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Trail TP", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(trailing_tp_long, "#.##"), text_color=color.lime, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Profit", text_color=color.gray, text_size=size.tiny)
pnl = close - buy_entry
pnl_c = pnl > 0 ? color.lime : color.red
table.cell(dash, 1, r, str.tostring(pnl, "#.#") + "p", text_color=pnl_c, text_size=size.tiny)
if in_short and not na(trailing_sl_short)
r += 1
table.cell(dash, 0, r, "Trail SL", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(trailing_sl_short, "#.##"), text_color=color.red, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Trail TP", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(trailing_tp_short, "#.##"), text_color=color.lime, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "Profit", text_color=color.gray, text_size=size.tiny)
pnl = sell_entry - close
pnl_c = pnl > 0 ? color.lime : color.red
table.cell(dash, 1, r, str.tostring(pnl, "#.#") + "p", text_color=pnl_c, text_size=size.tiny)
// Signal
r += 1
table.cell(dash, 0, r, "SIGNAL", text_color=color.white, bgcolor=color.new(color.green, 50), text_size=size.small)
sig_txt = buy_final ? "BUY NOW" : (sell_final ? "SELL NOW" : "WAIT")
sig_c = buy_final ? color.lime : (sell_final ? color.red : color.gray)
table.cell(dash, 1, r, sig_txt, text_color=sig_c, bgcolor=color.new(color.green, 50), text_size=size.small)
// IMMEDIATE Trade Levels - Show as soon as ORB is ready
if orb_ready and not na(long_entry) and not na(short_entry)
r += 1
table.cell(dash, 0, r, "LONG LEVELS", text_color=color.lime, bgcolor=color.new(color.green, 70), text_size=size.tiny)
table.cell(dash, 1, r, "", text_color=color.white)
r += 1
table.cell(dash, 0, r, "Entry", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(long_entry, "#.##"), text_color=color.white, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "SL", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(long_sl, "#.##"), text_color=color.red, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "TP", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(long_tp, "#.##"), text_color=color.lime, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "SHORT LEVELS", text_color=color.red, bgcolor=color.new(color.red, 70), text_size=size.tiny)
table.cell(dash, 1, r, "", text_color=color.white)
r += 1
table.cell(dash, 0, r, "Entry", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(short_entry, "#.##"), text_color=color.white, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "SL", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(short_sl, "#.##"), text_color=color.red, text_size=size.tiny)
r += 1
table.cell(dash, 0, r, "TP", text_color=color.gray, text_size=size.tiny)
table.cell(dash, 1, r, str.tostring(short_tp, "#.##"), text_color=color.lime, text_size=size.tiny)
// ════════════════════════ ALERTS ════════════════════════
alertcondition(buy_final, "BUY Signal", "DAX ORB BUY")
alertcondition(sell_final, "SELL Signal", "DAX ORB SELL")
alertcondition(orb_ready and not orb_ready , "ORB Ready", "DAX ORB READY")
alertcondition(is_building and not is_building , "ORB Building", "DAX ORB BUILDING")
alertcondition(ok_trade and not ok_trade , "Ready to Trade", "DAX OK")
Indikator dan strategi
Adjustable ORB Indicator [V.4]A customizable opening range indicator.
Adjust the following using this indicator;
~ Sessions
~ OR time settings
~ Colors
~ And more to come.
Adjustable ORB Indicator [V.4]A customizable opening range indicator.
Adjust the following using this indicator;
~ Sessions
~ OR time settings
~ Colors
~ And more to come.
Inter-symmetric Forecast (ISF)Concept:
The Inter-Symmetric Forecast (ISF) is a physics-inspired price projection tool that visualizes both trend-continuation and mean-reversion scenarios in one dynamic structure. It extends the classic ADAM Projection by introducing a regime-sensitive weighting based on the Market Reynolds Number (Reₘ), a dimensionless ratio of market momentum × liquidity to volatility-derived “viscosity.”
Mechanism:
ISF mirrors past price action around the current close (the continuation path) while also forward-pasting the same pattern unreflected (the anti-trend path). It then blends these paths bar-by-bar using time-reflected Reₘ values — meaning the liquidity-momentum regime of each past segment determines how much its future mirror leans toward continuation or reversion.
Interpretation:
High Reₘ → strong inertia/liquidity, favors trend continuation.
Low Reₘ → high friction/volatility, favors mean reversion.
The yellow blended forecast shows the regime-weighted midpoint between both outcomes.
Use:
ISF offers traders a visual probability corridor rather than a fixed prediction — illustrating how far a move might extend if momentum persists, or fade if conditions become viscous. It’s best used as a contextual forecasting overlay for discretionary or systematic analysis.
Mean Reversion Points [Clever Simplified]📊 Indicator Name:
Mean Reversion Points
🧠 Purpose
This indicator is designed to identify potential turning points in the market where the price may reverse back toward its mean (average) — a common concept in mean reversion trading strategies.
It simplifies the detection of overextended highs or lows by marking them visually on the chart, helping traders spot areas where price could correct or “revert” to a more balanced level.
⚙️ How It Works
1. Inputs
Lookback Period (len): Default 35 — defines how many previous bars are analyzed to determine highs and lows.
Show Labels / Show Markers: Toggles to display on-chart signals.
Colors:
Aqua → Mean Reversion Up (potential buy zone)
Orange → Mean Reversion Down (potential sell zone)
2. Core Calculations
The script calculates:
highest → The highest price in the last len bars.
lowest → The lowest price in the last len bars.
highest1 / lowest1 → Shorter-term highs and lows using a quarter of the main lookback (len / 4).
It then stores a “value” that updates depending on whether the price reaches a new high or low.
If the low = lowest, it records the corresponding highest level.
If the high = highest, it records the lowest level.
This dynamic relationship helps the indicator adapt as new bars form.
3. Bands for Comparison
Two “bands” are generated:
band: Long-term boundary based on full lookback period.
band1: Short-term boundary (faster and more responsive).
These act as reference zones to check when price is overstretched relative to its recent range.
4. Mean Reversion Logic
The indicator identifies potential reversal points using crossover conditions:
Mean Reversion Down (mean_rev_dn):
Triggers when the high crosses below the short-term upper band (band1), suggesting potential downward reversion (sell signal).
Mean Reversion Up (mean_rev_up):
Triggers when the low crosses above the short-term lower band (band1), suggesting potential upward reversion (buy signal).
These signals occur when price fails to maintain a breakout and is likely returning toward its mean.
5. Visual Output
If enabled:
Labels:
“Mean Rev ↓” → Placed above candles signaling a possible downward reversion.
“Mean Rev ↑” → Placed below candles signaling a possible upward reversion.
Markers:
Small colored triangles mark the same events for quick visual recognition.
💡 Practical Use
Best For: Swing traders and scalpers who trade reversals or range-bound markets.
Not Ideal For: Strong trending conditions, where price tends to move away from the mean instead of reverting.
Combination Tips: Works best when combined with:
RSI or Bollinger Bands for overbought/oversold confirmation.
Volume indicators to verify strength of reversals.
✅ Summary
Feature Description
Type Mean Reversion / Reversal Detector
Main Concept Identifies potential highs/lows where price may reverse
Signals Buy (Mean Rev ↑) and Sell (Mean Rev ↓)
Visualization Labels and triangles on chart
Customization Adjustable lookback period, markers, and colors TVC:USOIL TVC:DXY CRYPTO:BTCUSD OANDA:XAUUSD OANDA:EURUSD OANDA:AUDJPY
ONLY LONG – 4H Breakout → 1H EMA(12/21) [Signals]🔹 ONLY LONG – 4H Breakout → 1H EMA(12/21)
Author: SystemsOverFeelings
Type: Signal-only indicator (non-repainting)
Timeframe: Designed for the 1H chart
Markets: BTCUSDT perpetual& major pairs
📖 Concept
A high-timeframe confirmation model for trend-continuation longs.
It detects:
A 4-Hour breakout candle closing above recent range highs,
With very-high volume confirmation, and
Then waits for a 1-Hour pullback into the EMA(12/21) band or a Break of Structure (BOS) to re-enter.
No repainting — all 4H logic uses request.security(..., lookahead_off) for confirmed data.
🧩 Signal Logic
✅ 4H Trigger: Breakout candle with volume > SMA(20) × user multiplier.
✅ Armed Regime: Green background = system ready for 1H entries.
🟢 LONG Signal: 1H candle consolidates inside or touches the EMA band, or shows BOS confirmation.
❌ EXIT Signal: 4H EMA(12) crosses below EMA(21).
All signals are visually marked and alert-ready.
⚙️ Adjustable Parameters
4H volume multiplier
Range lookback days
Pullback strictness (inside/touch)
1H BOS pivot length & mode
Expiry time for invalidated setups
🔔 Alerts
Built-in alerts for:
4H breakout trigger
1H long entry signal
4H band exit
Use them directly via “Create Alert → Condition → This Script → Choose Signal.”
💡 Notes
Works best on BTC/ETH 1H chart.
Non-repainting, multi-timeframe logic.
Use for directional bias or entry timing — not financial advice.
Price Action Bar Counter for Crypto Traders标注美股开收盘时间的K线辅助指标,自动调整夏令时与冬令时,适用于5m、15m、30m与1h级别。
Highlights U.S. stock market open and close times with automatic DST adjustment.
Best used on 5m, 15m, 30m, and 1h charts.
BK AK-13⚔️ BK AK-13 — The Mentor’s 13. Revealed on 11. Command the Band. Punish the Extremes. ⚔️
This is my 11th release—and that matters. 11 is a sacred number to me, so for release eleven I’m doing something I never planned to do: I’m putting my mentor’s secret 13 MA into the open.
For years, this 13-based MA framework was part of our private playbook—quietly doing work behind the scenes. Now I’m handing it to you fully armed, because I believe in karma in, karma out: I took years of wisdom from the market. I took years of wisdom from the men who taught me. This is one of the ways I give back—with structure, respect, and intent.
🎖 Full Credit — Respect the Origin
The core architecture of BK AK-13 is not mine. It stands firmly on the work of DZIV.
What comes from DZIV:
The Heikin Ashi MA engine (MA calculated on HA Open/High/Low/Close)
The multi-MA engine on the HA feed (ALMA / HMA / SMA / RMA / VWMA / WMA / ZLEMA / EMA)
The Body / Wick / Band zone classification for price
The dynamic body & wick clouds that give this structure its clean visual form
If this framework changes the way you see trend and price location, remember the name: DZIV.
On top of his backbone, I forged the BK AK-13 enhancement layer: trend-strength regimes, background modes, structured band-reversal arrows, momentum acceleration dots, extreme pivot markers, historical band-touch rails, the info panel, and a complete alert suite.
And as always, the “AK” in the name is not branding—it’s honor. It belongs to my mentor A.K. His secret 13 MA is the spine of this system, and his obsession with clarity, patience, and zero shortcuts sits behind every decision in this tool. Above that, all glory and gratitude to Gd—the real source of any wisdom, edge, or endurance we have in this game.
🧠 Why “BK AK-13”?
BK — my mark, the house I’m building.
AK — my mentor, the standard I’m still chasing.
13 — his secret moving average, the length that quietly shaped how I see trend, location, and pressure.
For years, 13 stayed off the public record—used, not discussed. Now, on indicator number 11, I’m putting that weapon in the open: 11th release. Sacred number. Secret 13 revealed, not for hype—but as karmic give-back. Karma in. Karma out.
🧱 What BK AK-13 Actually Is
BK AK-13 is a Heikin Ashi MA battle band with a brain and a conscience.
It does three big things:
Builds a smoothed HA-MA band using Heikin Ashi OHLC to create a cleaner, truer band around price.
Maps price into zones: Body, Upper Wick, Lower Wick, Above Band, Below Band—so every bar has a role.
Assigns a trend regime by computing a normalized trend-strength %, classifying the environment as Weak / Normal / Strong / Extreme.
You’re never guessing: Is this real trend or just drift? Am I in the spine, the wick, or off the rails? Is this where I press, fade, or stand down? The band, zones, and regimes answer that for you.
🎨 Visual Architecture — Band, Clouds, Regimes
Body & Wick Clouds (DZIV’s craft)
Body cloud between HA-MA Open & Close.
Wick clouds between body and HA-MA High/Low.
Color follows trend: bull, bear, or neutral.
You’re not decoding noisy candles—you’re reading the spine and skin of the move.
Background Regime Modes (BK layer)
Standard – background always on, soft trend-follow color.
Hybrid (Extreme + Breaks) – lights only on extreme trend states or reversal break events.
Hybrid (Strong/Extreme + Breaks) – shows strong & extreme regimes, darker tone on true extremes.
Breaks Only – background flashes only on reversal arrows.
When the background goes quiet, you’re in ordinary flow. When it lights up, something is strategic, not cosmetic.
🎯 Weapons Inside BK AK-13
⭐ Trend Change Stars
Stars appear when the internal band trend crosses zero: bull star when it flips negative → positive, bear star from positive → negative. They’re your pivot flags for swing shifts when aligned with your higher timeframe bias.
🔁 Band Reversal Arrows — Edge Flip Logic
Not every band tap—only structured reversals:
Reversal Down (short idea): first a break of the upper band, then later, for the first time, a break of the lower band.
Reversal Up (long idea): first a break of the lower band, then later, for the first time, a break of the upper band.
You can require a close outside the band and set a minimum break distance (% of band range) so only real punches count. These arrows mark campaign flips, not noise.
💡 Momentum Acceleration Dots
In strong trend regimes only:
Green dot = trend accelerating in its own direction (uptrend steepening, downtrend deepening).
Red dot = trend decelerating, even if direction hasn’t flipped yet.
They protect you from chasing late when the engine is dying and from staying stubborn when momentum is bleeding out.
⚠ Extreme Pivot Markers
Pivot highs/lows are found with a configurable lookback and only marked when trend strength at that pivot bar is above your threshold. You’ll see ⚠ above likely exhaustion tops in strong bulls and ⚠ below likely exhaustion lows in strong bears—perfect for final scale-outs, countertrend scouts, and knowing where campaigns commonly run out of blood.
📏 Historical Band-Touch Rails
Over your lookback window, BK AK-13 tracks the highest upper band touch and lowest lower band touch, drawing them as dashed rails. They’re dynamic SR built from real band extremes—ideal for trend targets, fade zones, and stop/scale-out context.
🧭 Info Panel — On-Chart War Room
The Info Panel compresses everything into a single strip: direction + strength codes (BULL STR, BEAR EXT, NEUT WEAK), four segments that brighten as |trend| climbs from weak → normal → strong → extreme, and a zone + deviation label (BDY/UW/LW/AB/BL × OK/AL/EX).
Hover and you get a full tactical brief: trend, momentum change, acceleration, band levels, distances to upper/lower/nearest band in ticks, outer-band streaks, strategic state, plus “Action” guidance and a “What-if” forward scenario. It doesn’t just tell you where you are—it pushes you toward a structured thought process on each bar.
🕹 How to Use BK AK-13 with Intent
1️⃣ Trend-Rider Mode
In Strong/Extreme bull with price in Body or Lower Wick: buy dips into the band (mid/lower) instead of chasing tops; target the upper band / upper rail while structure holds.
In Strong/Extreme bear with price in Body or Upper Wick: sell rallies into the band; target lower band / lower rail while acceleration stays healthy.
The band defines where you’re allowed to do business.
2️⃣ Extreme Snapback Hunter
Prime conditions: trend tagged Extreme, price pressed into the outer band in trend direction, strategic state lit + Hybrid background active. That’s where pressing fresh risk often flips from reward to punishment. Use it to stop adding, start harvesting, or launch controlled mean-reversion probes back to the midline—if your system and risk rules allow it.
3️⃣ Exhaustion & Turn Zones
Watch for confluence: red momentum dots, extreme pivot ⚠ markers, a reversal arrow, and a nearby historical rail or your own key level (Fibs, VWAP, volume structure, etc.). That’s where campaigns often end, traps are set, and new campaigns begin.
🔔 Alerts — The Chart Calls You
Included alerts: Bullish/Bearish Trend Change, Strategic Extreme at Outer Band, Reversal Up/Down, Extreme Pivot High/Low, and Body Zone Entry during Strong Trend. Use them so you respond to events, not impulses.
🔧 Tuning the Extremes — Help Me Perfect the Advanced Side
The extreme thresholds and advanced features are powerful but sensitive, and there is no single perfect universal setting. I’m still tuning them myself across instruments and timeframes: strong/extreme trend thresholds, extreme background thresholds, momentum acceleration threshold, pivot lookback + pivot trend filter, band-touch lookback, and minimum break distance for reversals.
Different markets and timeframes breathe differently.
If you find killer settings for a specific symbol + timeframe, please share:
Instrument & timeframe
Your tuned values for extremes and advanced modules
A few charts showing why they work
Experiment. Dial it in. Then share your best settings for the extremes and advanced features. Let this become a crowd-forged battle manual: I gave you the engine, you tune it to your battleground, and we all benefit from what’s discovered in live fire. Karma in. Karma out.
🤝 Pay It Forward
If BK AK-13 sharpens your read, don’t just flex screenshots—teach structure. Show newer traders body vs wick vs edge. Talk about when you didn’t take a trade because the band said “danger,” not just the wins. Share your settings, charts, and lessons—especially around the extremes and advanced modules. I’m sharing a mentor’s secret on release 11 for a reason. If it blesses you, don’t let it stop with you.
📜 King Solomon’s Lens
King Solomon said: “The prudent sees danger and hides himself, but the simple go on and suffer for it.”
BK AK-13 is built exactly around that dividing line: the simple chase candles at the outer band in extreme regimes and get punished; the prudent see danger in the structure, hide their size, hedge, or reverse with intent.
This indicator won’t make you prudent. It just removes your excuse for being simple.
⚔️ BK AK-13 — The mentor’s secret 13, revealed on 11. Let the band define the field. Let wisdom define your strike.
May Gd bless your eyes, your patience, your settings, and every decision you make at the edge. 🙏
MEREEP version 2 of air gap scannerMEREEP version 2 of air gap scanner – SummaryThis Pine Script (v6) detects and counts "air gaps" on the 4-hour timeframe, then displays the results in a clean on-chart table — exactly like the Pine Screener in your screenshot.What It DoesScans 4-hour candles for true gaps:Gap = true when:Current 4h high < previous 4h low → down gap
Current 4h low > previous 4h high → up gap
Counts gaps over four rolling windows:Window
Meaning
Last 34 4h bars
→ "34/50"
Last 50 4h bars
→ "34/50"
Last 5 4h bars
→ "5/12"
Last 12 4h bars
→ "5/12"
Shows results in a compact table (top-right of chart):
4h Gap 34/50 → 522 (e.g. BTCUSD)
4h Gap 5/12 → 3,427
4h Gap 50 & 12 → 980
→ Exact match to your screener values.
Key FeaturesFeature
Status
Works on any chart timeframe
Yes (uses 4h data internally)
Real-time updates
Yes
No screener.add_column errors
Yes (uses table)
No ta.sum errors
Yes (uses sum() / math.sum)
shorttitle ≤ 10 chars
Yes ("GapScan")
No syntax errors
Yes
Example Output (BTCUSD)Metric
Value
Gaps in last 34 of 50 4h bars
522
Gaps in last 5 of 12 4h bars
3,427
Gaps in last 50 & 12 4h bars
980
→ Identical to your TradingView Pine ScreenerUse CaseScan any symbol for unusual 4h gap activity
Spot potential volatility or institutional moves
Works on stocks, crypto, forex, futures
News & Liquidity -4 UTC [CLEVER]📊 “News & Liquidity -4 UTC ” — written in TradingView Pine Script v6:
🧠 Indicator Overview
This indicator is designed to help traders avoid high-risk trading periods — such as during news releases or unusually high liquidity spikes — while still identifying safe buy and sell opportunities using a simple moving average (SMA) crossover system.
It works best
🧠 Purpose
This indicator helps traders:
Avoid trading during high-risk times — such as scheduled news events or sudden liquidity spikes (unusually high volume).
Identify potential trade opportunities based on a simple moving average (SMA) crossover strategy.
It’s designed for traders who want to trade safely and efficiently by combining technical analysis (SMA signals) with market awareness (news and liquidity).
⚙️ Technical Description
1. **News Events Detection (UTC- OANDA:XAUUSD CRYPTO:BTCUSD TVC:DXY TVC:USOIL
SatoshiFrame Lot Size CalculatorSatoshiFrame Lot Size Calculator that help you to manage your lot size in forex and crypto trade
Coppock Normalized (Z-score) [v6]//@version=6
indicator("Coppock Normalized (Z-score) ", overlay=false)
// ┌─ 입력값
rocLen1 = input.int(14, "ROC1 Length", minval=1)
rocLen2 = input.int(11, "ROC2 Length", minval=1)
wmaLen = input.int(10, "WMA Length", minval=1)
zLen = input.int(200, "Z-score Lookback", minval=5)
signalLen = input.int(5, "Signal SMA", minval=1)
tfCalc = input.timeframe("", "Calc Timeframe (optional, e.g., 1M)")
thPos = input.float( 1.5, "Upper Threshold (Z)")
thNeg = input.float(-1.5, "Lower Threshold (Z)")
// ┌─ 소스 시계열 (고타임프레임 옵션 지원)
src = tfCalc == "" ? close : request.security(syminfo.tickerid, tfCalc, close)
// ┌─ 코폭 커브 (전통식): WMA of (ROC(14) + ROC(11))
roc1 = ta.roc(src, rocLen1)
roc2 = ta.roc(src, rocLen2)
coppock_raw = ta.wma(roc1 + roc2, wmaLen)
// ┌─ Z-score 정규화: (x - mean) / stdev
meanC = ta.sma(coppock_raw, zLen)
stdevC = ta.stdev(coppock_raw, zLen)
z = (stdevC == 0.0 or na(stdevC)) ? na : (coppock_raw - meanC) / stdevC
// ┌─ 시그널(스무딩)
zSignal = ta.sma(z, signalLen)
// ┌─ 보조선
h0 = hline(0.0, "Zero", color=color.new(color.gray, 0))
hUp = hline(thPos, "Z Upper", color=color.new(color.teal, 0))
hDn = hline(thNeg, "Z Lower", color=color.new(color.purple, 0))
fill(h0, hDn, color=color.new(color.red, 85))
fill(h0, hUp, color=color.new(color.green, 88))
// ┌─ 플롯
plot(z, title="Coppock Z", color = z >= 0 ? color.new(color.green, 0) : color.new(color.red, 0), linewidth=2)
plot(zSignal, title="Signal", color = color.new(color.blue, 0), linewidth=1)
// ┌─ 보조 정보(기울기)
zSlope = ta.change(z)
plot(zSlope, title="Z Slope (ΔZ)", color=color.new(color.orange, 0), linewidth=1, display=display.none)
// ┌─ 알림 조건
alertcondition(ta.crossover(z, 0), "Z crosses above 0", "Coppock Z crossed above 0")
alertcondition(ta.crossunder(z, 0), "Z crosses below 0", "Coppock Z crossed below 0")
alertcondition(ta.crossover(z, thNeg), "Z crosses above Lower", "Coppock Z crossed above Lower threshold")
alertcondition(ta.crossunder(z, thPos), "Z crosses below Upper", "Coppock Z crossed below Upper threshold")
alertcondition(ta.crossover(z, zSignal), "Z crosses above Signal", "Coppock Z crossed above Signal")
alertcondition(ta.crossunder(z, zSignal), "Z crosses below Signal", "Coppock Z crossed below Signal")
// ┌─ 상태 라벨
var label lb = na
if barstate.islast and not na(z)
label.delete(lb)
lb := label.new(bar_index, z, style=label.style_label_left, textcolor=color.white, color=color.new(color.black, 20))
9 EMA and 20 MA with Fill9 EMA and 20 MA with Fill
puts a fill green or red weather whichway the trend is going
tradingview_momentum_Hull-Suite-W-FVSO-NO-WeekendMomentum no weekend trades. It uses FVZO and Hull suite.
This strategy has low win rate but successfully catches trends. Works well on ETH in High Time Frame multi-year.
Hindenburg OmenThe Hindenburg Omen highlights periods of internal market stress — when both new 52-week highs and new lows expand while the NYSE remains in an uptrend.
This condition often precedes major corrections or volatility spikes by revealing divergence beneath the surface of an advancing market.
The indicator triggers when four classic breadth rules align: elevated highs and lows, a positive trend, a negative McClellan Oscillator, and a highs-to-lows ratio under 2:1.
Use it on broad indices (NYSE, S&P 500) as an early-warning context tool, NOT a standalone sell signal.
fpmanananaThis is a description of the indicator. It is a really good one that I think is really good.
BAY Technical Indicators//@version=5
indicator("BAY Technical Indicators", overlay=true)
// Price source
price = close
// VWAP
vwap = ta.vwap
plot(vwap, title="VWAP", color=color.blue, linewidth=2)
// SMMA (RMA) 20 and 50
smma20 = ta.rma(price, 20)
smma50 = ta.rma(price, 50)
plot(smma20, title="SMMA 20", color=color.lime)
plot(smma50, title="SMMA 50", color=color.purple)
// EMA 9 and 21
ema9 = ta.ema(price, 9)
ema21 = ta.ema(price, 21)
plot(ema9, title="EMA 9", color=color.white)
plot(ema21, title="EMA 21", color=color.red)
// MA 200
ma200 = ta.sma(price, 200)
plot(ma200, title="MA 200", color=color.orange, linewidth=2)
// SMA 325 (Dark Green)
sma325 = ta.sma(price, 325)
plot(sma325, title="SMA 325", color=color.new(color.green, 0)) // Dark green
// Volume SMA 9 (plotted in data window only)
volume_sma9 = ta.sma(volume, 9)
plot(volume_sma9, title="Volume SMA 9", color=color.fuchsia, linewidth=1, display=display.data_window)
Quantura - Supply & Demand Zone DetectionIntroduction
“Quantura – Supply & Demand Zone Detection” is an advanced indicator designed to automatically detect and visualize institutional supply and demand zones, as well as breaker blocks, directly on the chart. The tool helps traders identify key areas of market imbalance and potential reversal or continuation zones, based on price structure, volume, and ATR dynamics.
Originality & Value
This indicator provides a unique and adaptive method of zone detection that goes beyond simple pivot or candle-based logic. It merges multiple layers of confirmation—volume sensitivity, ATR filters, and swing structure—while dynamically tracking how zones evolve as the market progresses. Unlike traditional supply and demand indicators, this script also detects and plots Breaker Zones when previous imbalances are violated, giving traders an extra layer of market context.
The key values of this tool include:
Automated detection of high-probability supply and demand zones.
Integration of both volume and ATR filters for precision and adaptability.
Dynamic zone merging and updating based on price evolution.
Identification of breaker blocks (invalidated zones) to visualize market structure shifts.
Optional bullish and bearish trade signals when zones are retested.
Clear, visually optimized plotting for efficient chart interpretation.
Functionality & Core Logic
The indicator continuously scans recent price data for swing highs/lows and combines them with optional volume and ATR conditions to validate potential zones.
Demand Zones are formed when price action indicates accumulation or a strong bullish rejection from a low area.
Supply Zones are created when distribution or strong bearish rejection occurs near local highs.
Breaker Blocks appear when existing zones are invalidated by price, helping traders visualize potential market structure shifts.
Bullish and bearish signals appear when price re-enters an active zone or breaks through a breaker block.
Parameters & Customization
Demand Zones / Supply Zones: Enable or disable each individually.
Breaker Zones: Activate breaker block detection for invalidated zones.
Volume Filter: Optional filter to only confirm zones when volume exceeds its long-term average by a user-defined multiplier.
ATR Filter: Optional filter for volatility confirmation, ensuring zones form under strong momentum conditions.
Swing Length: Controls the number of bars used to detect structural pivots.
Sensitivity Controls: Adjustable ATR and volume multipliers to fine-tune detection responsiveness.
Signals: Toggle for on-chart bullish (▲) and bearish (▼) signal plotting when price interacts with zones.
Color Customization: User-defined bullish and bearish colors for both standard and breaker zones.
Core Calculations
Zones are detected using pivot highs and lows with a defined lookback and lookahead period.
Additional filters apply if ATR and volume are enabled, requiring conditions like “ATR > average * multiplier” and “Volume > average * multiplier.”
Detected zones are merged if overlapping, keeping the chart clean and logical.
When price breaks through a zone, the original box is closed, and a new breaker zone is plotted automatically.
Bullish and bearish markers appear when zones are retested from the opposite side.
Visualization & Display
Demand zones are shaded in semi-transparent bullish color (default: blue).
Supply zones are shaded in semi-transparent bearish color (default: red).
Breaker zones appear when previous imbalances are broken, helping to spot structural shifts.
Optional arrows (▲ / ▼) indicate potential buy or sell reactions on zone interaction.
Use Cases
Identify institutional areas of accumulation (demand) or distribution (supply).
Detect potential breakout traps and market structure shifts using breaker zones.
Combine with other tools such as volume profile, EMA, or liquidity indicators for deeper confirmation.
Observe retests and reactions of zones to anticipate possible reversals or continuations.
Apply multi-timeframe analysis to align higher timeframe zones with lower timeframe entries.
Limitations & Recommendations
The indicator does not predict future price movement; it highlights structural imbalances only.
Performance depends on chosen swing length and sensitivity—users should optimize parameters for each market.
Works best in volatile markets where supply and demand imbalances are clearly expressed.
Should be used as part of a broader trading framework, not as a standalone signal generator.
Markets & Timeframes
The “Quantura – Supply & Demand Zone Detection” indicator is suitable for all asset classes including cryptocurrencies, Forex, indices, commodities, and equities. It performs reliably across multiple timeframes, from intraday scalping to higher timeframe swing analysis.
Author & Access
Developed 100% by Quantura. Published as a Open-source script indicator. Access is free.
Important
This description complies with TradingView’s Script Publishing and House Rules. It clearly explains the indicator’s originality, underlying logic, functionality, and intended use without unrealistic claims or performance guarantees.
Sigma Trinity ModelAbstract
Sigma Trinity Model is an educational framework that studies how three layers of market behavior interact within the same trend: (1) structural momentum (Rasta), (2) internal strength (RSI), and (3) continuation/compounding structure (Pyramid). The model deliberately combines bar-close momentum logic with intrabar, wick-aware strength checks to help users see how reversals form, confirm, and extend. It is not a signal service or automation tool; it is a transparent learning instrument for chart study and backtesting.
Why this is not “just a mashup”
Many scripts merge indicators without explaining the purpose. Sigma Trinity is a coordinated, three-engine study designed for a specific learning goal:
Rasta (structure): defines when momentum actually flips using a dual-line EMA vs smoothed EMA. It gives the entry/exit framework on bar close for clean historical study.
RSI (energy): measures internal strength with wick-aware triggers. It uses RSI of LOW (for bottom touches/reclaims) and RSI of HIGH (for top touches/exhaustion) so users can see intrabar strength/weakness that the close can hide.
Pyramid (progression): demonstrates how continuation behaves once momentum and strength align. It shows the logic of adds (compounding) as a didactic layer, also on bar close to keep historical alignment consistent.
These three roles are complementary, not redundant: structure → strength → progression.
Architecture Overview
Execution model
Rasta & Pyramid: bar close only by default (historically stable, easy to audit).
RSI: per tick (realtime) with bar-close backup by default, using RSI of LOW for entries and RSI of HIGH for exits. This makes the module sensitive to intra-bar wicks while still giving a close-based safety net for backtests.
Stops (optional in strategy builds): wick-accurate: trail arms/ratchets on HIGH; stop hit checks with LOW (or Close if selected) with a small undershoot buffer to avoid micro-noise hits.
Visual model
Dual lines (EMA vs smoothed EMA) for Rasta + color fog to see direction and compression/expansion.
Rungs (small vertical lines) drawn between the two Rasta lines to visualize wave spacing and rhythm.
Clean labels for Entry/Exit/Pyramid Add/RSI events. Everything is state-locked to avoid spamming.
Module 1 — Rasta (Structural Momentum Layer)
Goal: Identify structural momentum reversals and maintain a consistent, replayable backbone for study.
Method:
Compute an EMA of a chosen price source (default Close), and a smoothed version (SMA/EMA/RMA/WMA/None selectable).
Flip points occur when the EMA line crosses the smoothed line.
Optional EMA 8/21 trend filter can gate entries (long-bias when EMA8 > EMA21). A small “adaptive on flip” option lets an entry fire when the filter itself flips to ON and the EMA is already above the smoothed line—useful for trend resumption.
Why bar close only?
Bar-close Rasta gives a stable, auditable timeline for the structure of the trend. It teaches users to separate “structure” (close-resolved) from “energy” (intrabar, via RSI).
Visuals:
Fog between the lines (green/red) to show regime.
Rungs between lines to show spread (compression vs expansion).
Optional plotting of EMA8/EMA21 so users can see the gating effect.
Module 2 — RSI (Internal Strength / Energy Layer)
Goal: Reveal the intrabar strength/weakness that often precedes or confirms structural flips.
Method:
Standard RSI with adjustable length and signal smoothing for the panel view.
Logic uses wick-aware sources:
Entry trigger: RSI of LOW (same RSI length) touching or below a lower band (default 15). Think of it as intraband reactivation from the bottom, using the candle’s deepest excursion.
Exit trigger: RSI of HIGH touching or above an upper band (default 85). Think of it as exhaustion at the top, using the candle’s highest excursion.
Realtime + Close Backup: fires intrabar on tick, but if the realtime event was missed, the close backup will note it at bar end.
Cooldown control: optional bars-between-signals to avoid rapid re-triggers on choppy sequences.
Why wick-aware RSI?
A close-only RSI can miss the true micro-extremes that cause reversals. Using LOW/HIGH for triggers captures the behavior that traders actually react to during the bar, while the bar-close backup preserves historical reproducibility.
Module 3 — Pyramid (Continuation / Compounding Layer)
Goal: Teach how continuation behaves once a trend is underway, and how adds can be structured.
Method:
Same dual-line logic as Rasta (EMA vs smoothed EMA), but only fires when already in a position (or after prior entry conditions).
Supports the same EMA 8/21 filter and optional adaptive-on-flip behavior.
Bar close only to maintain historical cohesion.
What it teaches:
Adds tend to cluster when momentum persists.
Students can experiment with add spacing and compare “one-shot entries” vs “laddered adds” during strong regimes.
How the Pieces Work Together
Rasta establishes the structural frame (when the wave flip is real enough to record at close).
RSI validates or challenges that structure by tracking intrabar energy at the extremes (low/high touches).
Pyramid shows what sustained continuation looks like once (1) and (2) align.
This produces a layered view: Structure → Energy → Progression. Users can see when all three line up (strongest phases) and when they diverge (riskier phases or transitions).
How to Use It (Step-by-Step)
Quick Start
Apply script to any symbol/timeframe.
In Strategy/Indicator Properties:
Enable On every tick (recommended).
If available, enable Using bar magnifier and choose a lower resolution (e.g., 1m) to simulate intrabar fills more realistically.
Keep On bar close unchecked if you want to observe realtime logic in live charts (strategies still place orders on close by platform design).
Default behavior: Rasta & Pyramid = bar close; RSI = per tick with close backup.
Reading the Chart
Watch for Rasta Entry/Exit labels: they define clean structural turns on close.
Watch RSI Entry (LOW touch at/below lower band) and RSI Exit (HIGH touch at/above upper band) to gauge internal energy extremes.
Pyramid Add labels reveal continuation phases once a move is already in progress.
Tuning
Rasta smoothing: choose SMA/EMA/RMA/WMA or None. Higher smoothing → later but cleaner flips; lower smoothing → earlier but choppier.
RSI bands: a common educational setting is 15/85 for strong extremes; 20/80 is a bit looser.
Cooldown: increase if you see too many RSI re-fires in chop.
EMA 8/21 filter: toggle ON to study “trend-gated” entries, OFF to study raw momentum flips.
Backtesting Notes (for Strategy Builds)
Stops (optional): trail is armed when price advances by a trigger (default D–F₀), ratchets only upward from HIGH, and hits from LOW (or Close if chosen) with a tiny undershoot buffer to avoid micro-wicks.
Order sequencing per bar (mirrors the script’s code comments):
Trail ratchet via HIGH
Intrabar stop hit via LOW/CLOSE → immediate close
If still in position at bar close: process exits (Rasta/RSI)
If still in position at bar close: process Pyramid Add
If flat at bar close: process entries (Rasta/RSI)
Platform reality: strategies place orders at bar close in historical testing; the intrabar logic improves realism for stops and event marking but final order timestamps are still close-resolved.
Inputs Reference (common)
Modules: enable/disable RSI and Pyramid learning layers.
Rasta: EMA length, smoothing type/length, EMA8/21 filter & adaptive flip, fog opacity, rungs on/off & limit.
RSI: RSI length, signal MA length (panel), Entry band (LOW), Exit band (HIGH), cooldown bars, labels.
Pyramid: EMA length, smoothing, EMA8/21 filter & adaptive adds.
Execution: toggle Bar Close Only for Rasta/Pyramid; toggle Realtime + Close Backup for RSI.
Stops (strategy): Fixed Stop % (first), Fixed Stop % (add), Trail Distance %, Trigger rule (auto D–F₀ or custom), undershoot buffer %, and hit source (LOW/CLOSE).
What to Study With It
Convergence: how often RSI-LOW entry touches precede the next Rasta flip.
Divergence: cases where RSI screams exhaustion (HIGH >= upper band) but Rasta hasn’t flipped yet—often transition zones.
Continuation: how Pyramid adds cluster in strong moves; how spacing changes with smoothing/filter choices.
Regime changes: use EMA8/21 filter toggles to see what happens at macro turns vs chop.
Limitations & Scope
This is a learning tool, not a trade copier. It does not provide financial advice or automated execution.
Intrabar results depend on data granularity; bar magnifier (when available) can help simulate lower-resolution ticks, but true tick-by-tick fills are a platform-level feature and not guaranteed across all symbols.
Suggested Publication Settings (Strategy)
Initial capital: 100
Order size: 100 USD (cash)
Pyramiding: 10
Commission: 0.25%
Slippage: 3 ticks
Recalculate: ✓ On every tick
Fill orders: ✓ Using bar magnifier (choose 1m or similar); leave On bar close unchecked for live viewing.
Educational License
Released under the Michael Culpepper Gratitude License (2025).
Use and modify freely for education and research with attribution. No resale. No promises of profitability. Purpose is understanding, not signals.
Quantura - Trendchange ZonesIntroduction
“Quantura – Trendchange Zones” is an advanced technical indicator that identifies and visualizes potential market reversal zones using dynamic RSI-based logic. It highlights areas of overbought and oversold conditions, marking them as visual zones directly on the price chart, and generates corresponding bullish and bearish signals when the RSI exits these extremes. The tool helps traders anticipate possible trend change regions and confirm momentum shifts in a clean, intuitive way.
Originality & Value
Unlike traditional RSI indicators that only show a static oscillator, this tool transforms RSI behavior into on-chart visual zones that represent structural overbought and oversold phases. It converts RSI threshold breaches into price-based regions (boxes) and marks reversal signals at the moment of momentum change.
The indicator’s originality and usefulness come from its:
Direct visualization of RSI overbought and oversold areas as dynamic chart zones.
Automatic detection of potential reversal regions where momentum exhaustion is likely.
Integration of RSI-based signals and visual cues without requiring users to monitor the RSI window.
Adjustable sensitivity for RSI length and upper/lower levels.
Clear color-coded separation of bullish and bearish phases.
Functionality & Core Logic
The indicator continuously monitors RSI values relative to the user-defined thresholds.
When RSI moves above the upper level, an Overbought Zone is created and extends until RSI falls back below that threshold.
When RSI moves below the lower level, an Oversold Zone is generated and extends until RSI returns above that level.
When RSI exits one of these zones, a corresponding Trendchange Signal (▲ bullish or ▼ bearish) appears at the transition point.
Each zone dynamically adjusts its high and low levels during formation, representing the complete range of the exhaustion phase.
Parameters & Customization
RSI Length: Defines the sensitivity of RSI calculation. Shorter lengths make signals more responsive; longer lengths filter noise.
Upper Level / Lower Level: Set thresholds for overbought and oversold conditions (default 70 / 30).
Signals: Toggle on/off for displaying bullish (▲) and bearish (▼) reversal signals.
Zones: Toggle the visualization of shaded RSI-based zones.
Colors: Fully customizable bullish and bearish colors for both signals and zones.
Visualization & Display
Bullish reversal zones (oversold exits) are shaded using the chosen bullish color (default: blue).
Bearish reversal zones (overbought exits) are shaded using the chosen bearish color (default: red).
Each completed zone is outlined and filled with transparent shading for better clarity.
Reversal arrows (▲ for bullish, ▼ for bearish) are displayed at the bar where RSI exits the extreme level.
Clean overlay design ensures compatibility with any chart style or color scheme.
Use Cases
Identify overbought and oversold periods directly on the price chart without switching to the RSI window.
Anticipate potential market reversals or exhaustion points based on RSI momentum shifts.
Combine with trend indicators, moving averages, or volume tools for confirmation.
Apply across multiple timeframes to align short-term reversal signals with higher timeframe momentum.
Use zone width and duration to assess the strength and persistence of overbought/oversold conditions.
Limitations & Recommendations
The indicator is not a standalone trading system but a visual confirmation tool.
False signals may occur in strongly trending markets where RSI remains overextended.
Optimal RSI settings may differ between assets (e.g., crypto vs. equities).
Combining this indicator with additional trend or structure filters can enhance accuracy.
Markets & Timeframes
The “Quantura – Trendchange Zones” indicator works across all markets and timeframes, including cryptocurrencies, Forex, stocks, and commodities. It is suitable for both short-term scalping and long-term swing analysis.
Author & Access
Developed 100% by Quantura. Published as a Open-source script indicator. Access is free.
Important
This description complies with TradingView’s Script Publishing and House Rules. It provides a clear explanation of the indicator’s originality, logic, and function while avoiding unrealistic performance or predictive claims.
Quantura - Session High/LowIntroduction
“Quantura – Session High/Low” is a professional-grade session mapping indicator that automatically identifies and visualizes the highs, lows, and ranges of key global trading sessions — London, New York, and Asia. It helps traders understand when and where liquidity tends to accumulate, allowing for better market structure analysis and session-based strategy alignment.
Originality & Value
This indicator unifies the three most influential global sessions into a single, adaptive visualization tool. Unlike typical session indicators, it dynamically updates live session highs and lows in real time while marking session boundaries and transitions. Its multi-session management system allows for immediate recognition of overlapping liquidity zones — a crucial feature for institutional and intraday traders.
The value and originality come from:
Real-time tracking of session highs, lows, and developing ranges.
Simultaneous visualization of multiple global sessions.
Optional vertical range lines for clearer visual segmentation.
Customizable session times, colors, and time zone offset for global accuracy.
Automatically extending and updating lines as each session progresses.
Functionality & Core Logic
Detects the start and end of each trading session (London, New York, Asia) using built-in time logic and user-defined UTC offsets.
Initializes session-specific high and low variables at the start of each new session.
Continuously updates session high/low levels as new candles form.
Draws color-coded horizontal lines for each session’s high and low.
Optionally adds vertical dotted lines to visually connect session range extremes.
Locks each session’s range once it ends, preserving historical structure for review.
Parameters & Customization
New York Session: Enable/disable, customize time (default 15:30–21:30), and set color.
London Session: Enable/disable, customize time (default 09:00–16:30), and set color.
Asia Session: Enable/disable, customize time (default 02:30–08:00), and set color.
Vertical Line: Toggle dotted vertical lines connecting session high and low levels.
UTC Offset: Adjust session timing to align with your chart’s local time zone.
Visualization & Display
Each session is color-coded for quick identification (default: blue for London, red for New York, green for Asia).
Horizontal lines track evolving session highs and lows in real time.
Once a session closes, the lines remain fixed to mark historical range boundaries.
Vertical dotted lines (optional) visually connect the session’s high and low for clarity.
Supports full overlay display without interfering with other technical indicators.
Use Cases
Identify liquidity zones and range extremes formed during active trading sessions.
Observe session overlaps (London–New York) to anticipate volatility spikes.
Combine with volume or market structure tools for session-based confluence.
Track how price interacts with prior session highs/lows to detect potential reversals.
Analyze session-specific performance patterns for algorithmic or discretionary systems.
Limitations & Recommendations
The indicator is designed for intraday analysis and may not provide meaningful output on daily or higher timeframes.
Adjust session times and UTC offset based on your broker’s or exchange’s timezone.
Does not provide trading signals — it visualizes session structure only.
Combine with liquidity and volatility indicators for full contextual understanding.
Markets & Timeframes
Compatible with all asset classes — including crypto, forex, indices, and commodities — and optimized for intraday timeframes (1m–4h). Particularly useful for traders analyzing session overlaps and volatility transitions.
Author & Access
Developed 100% by Quantura. Published as a Open-source script indicator. Access is free.
Compliance Note
This description fully complies with TradingView’s Script Publishing Rules and House Rules . It provides a detailed explanation of functionality, parameters, and realistic use cases without making any performance or predictive claims.
Quantura - Liquidity Sweep & Run LevelsIntroduction
“Quantura – Liquidity Sweep & Run Levels” is a structural price-action indicator designed to automatically detect swing-based liquidity zones and visualize potential sweep and run events. It helps traders identify areas where liquidity has likely been taken (sweep) or released (run), improving precision in market structure analysis and timing of entries or exits.
Originality & Value
This tool translates institutional liquidity concepts into an automated visual framework. Instead of simply marking highs and lows, it dynamically monitors swing points, tracks their breaches, and identifies subsequent reactions. The indicator is built to highlight the liquidity dynamics that often precede reversals or continuations.
Its originality lies in:
Automatic identification and tracking of swing highs and lows.
Real-time detection of broken levels and liquidity sweeps.
Distinction between “Run” and “Sweep” modes for different market behaviors.
Persistent historical visualization of liquidity levels using clean line structures.
Configurable signal markers for bullish and bearish sweep confirmations.
Functionality & Core Logic
Detects swing highs and lows using a user-defined Swing Length parameter.
Stores and updates all swing levels dynamically with arrays for efficient memory handling.
Draws horizontal lines from each detected swing point to visualize potential liquidity zones.
Monitors when price breaks a swing level and marks that event as “broken.”
Generates signals when the market either sweeps above/below or runs away from those levels, depending on the chosen mode.
Provides optional visual signal markers (“▲” for bullish sweeps, “▼” for bearish sweeps).
Parameters & Customization
Mode: Choose between “Sweep” (detects liquidity grabs) or “Run” (detects breakout continuations).
Swing Length: Sets the sensitivity for detecting swing highs/lows. A higher value focuses on larger structures, while smaller values detect micro liquidity points.
Bullish Color / Bearish Color: Customize color themes for sweep/run lines and signal markers.
Signals: Enables or disables visual up/down markers for confirmed events.
Visualization & Display
Horizontal lines represent potential liquidity levels (unbroken swing highs/lows).
Once broken, lines automatically stop extending, marking the moment liquidity is taken.
Depending on the selected mode:
“Sweep” mode identifies false breaks or stop-hunt behavior.
“Run” mode highlights breakouts that continue the trend.
Colored arrows indicate the direction and type of liquidity reaction.
Clean, non-intrusive visualization suitable for overlaying on price charts.
Use Cases
Detect liquidity sweeps before major reversals.
Identify breakout continuations after liquidity runs.
Combine with Supply/Demand or FVG indicators for multi-layered confirmation.
Validate liquidity bias in algorithmic or discretionary strategies.
Analyze market manipulation patterns and institutional stop-hunting behavior.
Limitations & Recommendations
This indicator identifies structural behavior but does not guarantee trade direction or profitability.
Works best on liquid markets with clear swing structures (e.g., crypto, forex, indices).
Signal interpretation should be combined with confluence tools such as volume, order flow, or structure-based filters.
Excessively small swing settings may cause over-signaling in volatile markets.
Markets & Timeframes
Optimized for all major asset classes — including crypto, Forex, indices, and equities — and for intraday to higher-timeframe structural analysis (5-minute up to daily charts).
Author & Access
Developed 100% by Quantura. Published as a Open-source script indicator. Access is free.
Compliance Note
This description fully complies with TradingView’s Script Publishing Rules and House Rules . It avoids performance claims, provides transparency on methodology, and clearly describes indicator behavior and limitations.






















