//@version=5 indicator("JOKER INSTITUTIONAL PRO [Sniper X-Ray Edition] v2.0", overlay=true, max_labels_count=500, max_lines_count=500, max_boxes_count=500, max_bars_back=1000) // ════════════════════════════════════════════════════════════════════════ // 🎯 JOKER PRO V2 - SNIPER X-RAY EDITION // ميزات حصرية عالمية: // ✅ Dynamic Weighted S/R Trends (حجم حسب القوة) // ✅ Precision Liquidity Heatmap (هوت ماب دقيق) // ✅ Long vs Short Liquidation Map (أيهما أكبر) // ✅ Multi-Level Smart Targets (TP1/TP2/TP3) // ✅ Smart Money Footprint (بصمة المؤسسات) - حصري // ✅ Manipulation Detector (كاشف التلاعب) - حصري // ✅ Liquidity Sweep Hunter (صائد السيولة) - حصري // ✅ Imbalance Pressure Index (مؤشر الضغط) - حصري // ✅ Stop Hunt Zones (مناطق صيد الستوبات) - حصري // ════════════════════════════════════════════════════════════════════════ // ═════════════ 1. الإعدادات ═════════════ grp_main = "⚡ CORE: Signal Engine" sensitivity = input.string("High Accuracy", "Signal Mode", options=["Aggressive", "High Accuracy", "Sniper Elite"], group=grp_main) vol_mult = input.float(1.8, "Whale Volume Multiplier", step=0.1, group=grp_main) grp_sr = "💎 SMART: Weighted S/R Trends" show_sr = input.bool(true, "Show Dynamic S/R Zones", group=grp_sr) sr_min_touches = input.int(2, "Min Touches", minval=1, group=grp_sr) sr_max_levels = input.int(8, "Max Levels Shown", minval=3, maxval=15, group=grp_sr) grp_heat = "🔥 LIQUIDITY: Precision Heatmap" show_heatmap = input.bool(true, "Show Liquidity Heatmap", group=grp_heat) heat_resolution = input.int(50, "Heatmap Resolution", minval=20, maxval=100, group=grp_heat) heat_lookback = input.int(200, "Heatmap Lookback", minval=50, maxval=500, group=grp_heat) show_liq_zones = input.bool(true, "Show Long/Short Liquidations", group=grp_heat) leverage_levels = input.string("25x, 50x, 100x", "Leverage Levels", options=["10x, 25x, 50x", "25x, 50x, 100x", "50x, 100x, 125x"], group=grp_heat) grp_smc = "🏛️ SMC: Structure" show_ob = input.bool(true, "Show Order Blocks", group=grp_smc) show_fvg = input.bool(true, "Show FVG", group=grp_smc) show_bos = input.bool(true, "Show BOS/CHoCH", group=grp_smc) swing_len = input.int(5, "Swing Length", group=grp_smc) grp_risk = "🎯 SMART TARGETS" show_risk = input.bool(true, "Show Multi-Targets", group=grp_risk) tp1_ratio = input.float(1.0, "TP1 R:R", step=0.5, group=grp_risk) tp2_ratio = input.float(2.0, "TP2 R:R", step=0.5, group=grp_risk) tp3_ratio = input.float(3.5, "TP3 R:R", step=0.5, group=grp_risk) atr_len = input.int(14, "ATR Period", group=grp_risk) sl_factor = input.float(1.5, "SL Factor (xATR)", step=0.1, group=grp_risk) use_smart_sl = input.bool(true, "Smart SL (Liquidity-Based)", group=grp_risk) grp_secret = "🤫 EXCLUSIVE: Joker Secrets" show_smart_money = input.bool(true, "Smart Money Footprint", group=grp_secret) show_manipulation = input.bool(true, "Manipulation Detector", group=grp_secret) show_sweep = input.bool(true, "Liquidity Sweep Hunter", group=grp_secret) show_stop_hunt = input.bool(true, "Stop Hunt Zones", group=grp_secret) grp_style = "🎨 STYLE" bull_col = input.color(#00E676, "Bullish", group=grp_style) bear_col = input.color(#FF5252, "Bearish", group=grp_style) gold_col = input.color(#FFD700, "Premium Gold", group=grp_style) heat_hot = input.color(#FF1744, "Heat Hot", group=grp_style) heat_cold = input.color(#2962FF, "Heat Cold", group=grp_style) // ═════════════ 2. CORE LOGIC ═════════════ atr = ta.atr(atr_len) avg_vol = ta.sma(volume, 20) vol_ratio = volume / avg_vol is_whale_vol = volume > avg_vol * vol_mult is_mega_whale = volume > avg_vol * (vol_mult * 1.8) ema_fast = ta.ema(close, 9) ema_slow = ta.ema(close, 21) ema_trend = ta.ema(close, 200) trend_up = close > ema_trend trend_down = close < ema_trend [st_supertrend, st_direction] = ta.supertrend(3.0, 10) rsi = ta.rsi(close, 14) // ═════════════ 3. SMC ENGINE ═════════════ ph = ta.pivothigh(swing_len, swing_len) pl = ta.pivotlow(swing_len, swing_len) var float last_high = na var float last_low = na var int last_high_idx = na var int last_low_idx = na var int trend_state = 0 bool bos_bull = false bool bos_bear = false bool choch_bull = false bool choch_bear = false if not na(ph) last_high := ph last_high_idx := bar_index - swing_len if not na(pl) last_low := pl last_low_idx := bar_index - swing_len if ta.crossover(close, last_high) if trend_state == -1 choch_bull := true else bos_bull := true trend_state := 1 if show_bos line.new(last_high_idx, last_high, bar_index, last_high, color=color.new(bull_col, 50), style=line.style_dashed) label.new(bar_index, last_high, choch_bull ? "CHoCH" : "BOS", color=color(na), textcolor=bull_col, style=label.style_none, size=size.small) if ta.crossunder(close, last_low) if trend_state == 1 choch_bear := true else bos_bear := true trend_state := -1 if show_bos line.new(last_low_idx, last_low, bar_index, last_low, color=color.new(bear_col, 50), style=line.style_dashed) label.new(bar_index, last_low, choch_bear ? "CHoCH" : "BOS", color=color(na), textcolor=bear_col, style=label.style_none, size=size.small) // Order Blocks if show_ob if bos_bull and close[1] < open[1] box.new(bar_index[3], low[3], bar_index + 15, high[3], bgcolor=color.new(bull_col, 80), border_color=color.new(bull_col, 50), text="OB", text_color=bull_col, text_size=size.tiny, text_halign=text.align_left) if bos_bear and close[1] > open[1] box.new(bar_index[3], low[3], bar_index + 15, high[3], bgcolor=color.new(bear_col, 80), border_color=color.new(bear_col, 50), text="OB", text_color=bear_col, text_size=size.tiny, text_halign=text.align_left) // FVG fvg_bull = high[2] < low and close > high[2] fvg_bear = low[2] > high and close < low[2] if show_fvg and fvg_bull box.new(bar_index[1], high[2], bar_index + 8, low, bgcolor=color.new(gold_col, 88), border_color=color.new(gold_col, 60)) if show_fvg and fvg_bear box.new(bar_index[1], low[2], bar_index + 8, high, bgcolor=color.new(gold_col, 88), border_color=color.new(gold_col, 60)) // ════════════════════════════════════════════════════════════════════════ // 4. 💎 SMART WEIGHTED S/R TRENDS - مقاومات بحجم حسب القوة // ════════════════════════════════════════════════════════════════════════ var array sr_levels = array.new() var array sr_touches = array.new() var array sr_volumes = array.new() var array sr_types = array.new() var array sr_ages = array.new() if not na(ph) array.push(sr_levels, ph) array.push(sr_touches, 1) array.push(sr_volumes, volume[swing_len]) array.push(sr_types, 1) array.push(sr_ages, bar_index - swing_len) if not na(pl) array.push(sr_levels, pl) array.push(sr_touches, 1) array.push(sr_volumes, volume[swing_len]) array.push(sr_types, -1) array.push(sr_ages, bar_index - swing_len) if array.size(sr_levels) > 50 array.shift(sr_levels) array.shift(sr_touches) array.shift(sr_volumes) array.shift(sr_types) array.shift(sr_ages) var array sr_lines = array.new() var array