Pengenalan pola perdagangan tingkat lanjut dan strategi manajemen risiko dinamis

EMA ATR FIBONACCI ENGULFING volatility VOLUME RISK-REWARD
Tanggal Pembuatan: 2025-06-19 13:57:50 Akhirnya memodifikasi: 2025-06-19 13:57:50
menyalin: 4 Jumlah klik: 287
2
fokus pada
319
Pengikut

Pengenalan pola perdagangan tingkat lanjut dan strategi manajemen risiko dinamis Pengenalan pola perdagangan tingkat lanjut dan strategi manajemen risiko dinamis

Tinjauan Strategi

Strategi identifikasi pola perdagangan tingkat tinggi dan strategi manajemen risiko dinamis adalah strategi perdagangan kuantitatif yang menggabungkan teknologi identifikasi pola penyerapan yang akurat dengan sistem manajemen risiko dinamis. Strategi ini berpusat pada identifikasi bentuk penyerapan pasar yang akurat melalui metode verifikasi matematika tingkat tinggi, dan menggabungkan 50 periode indeks moving average (EMA) sebagai filter tren, memastikan arah perdagangan konsisten dengan tren pasar yang dominan.

Prinsip Strategi

Strategi ini didasarkan pada kerja sama dari beberapa komponen utama:

  1. Sistem pengenalan tren: Menggunakan 50 siklus EMA sebagai indikator tren utama. Harga di atas EMA diidentifikasi sebagai tren naik, cocok untuk melakukan over; Harga di bawah EMA diidentifikasi sebagai tren turun, cocok untuk melakukan over. Ini memastikan bahwa perdagangan selalu mengikuti arah dominan pasar.

  2. Identifikasi bentuk penyerapan tingkat tinggiStrategi untuk mendeteksi bentuk penyerapan dari versi yang ditingkatkan, yang mengharuskan batang saat ini “menyerap” batang sebelumnya sepenuhnya, dan memastikan kualitas bentuk melalui verifikasi matematis. Sistem akan menganalisis:

    • Rasio tubuh saat ini terhadap tubuh sebelumnya (Rasio penelan minimal)
    • Rasio garis bayangan atas dan bawah dengan entitas (maksimal rasio garis bayangan)
    • Hubungan antara ukuran keseluruhan dari tabung saat ini dengan rentang rata-rata nyata (ATR)
  3. Mekanisme multi-filter

    • Filter volume transaksi: memastikan bahwa volume transaksi melebihi beberapa kali lipat dari rata-rata
    • Filter volatilitas: mengkonfirmasi volatilitas pasar melalui ATR untuk mencapai kondisi perdagangan yang sesuai
    • Kontrol kualitas bayangan: membatasi ukuran bayangan atas dan bawah untuk meningkatkan kualitas sinyal
  4. Manajemen risiko dinamis

    • Perhitungan Stop Loss: mendukung berbagai strategi stop loss berdasarkan level Fibonacci, jumlah tetap, atau ATR
    • Target keuntungan: target yang dapat ditetapkan dengan menggunakan RRR atau tingkat Fibonacci
    • Menghitung biaya transaksi secara otomatis untuk memastikan kelayakan strategi dalam lingkungan perdagangan nyata

Keunggulan Strategis

Dengan analisis kode yang mendalam, strategi ini menunjukkan keuntungan yang signifikan:

  1. Waktu masuk yang tepatDengan menggabungkan tren, bentuk, dan indikator konfirmasi ganda, strategi dapat mengidentifikasi titik masuk berkualitas tinggi yang memiliki keunggulan statistik di pasar, menghindari sinyal palsu yang mungkin dibawa oleh indikator tunggal.

  2. Adaptasi Manajemen RisikoBerbeda dengan strategi tradisional dengan parameter tetap, sistem manajemen risiko strategi ini akan menyesuaikan secara dinamis dengan kondisi pasar saat ini, menggunakan level Fibonacci atau nilai ATR untuk menghitung stop loss dan profit target, lebih sesuai dengan lingkungan pasar yang berbeda.

  3. Dukungan visualisasi lengkapStrategi: Strategi menyediakan tanda grafik dan panel informasi yang komprehensif, termasuk sinyal masuk, level stop loss / profit, status tren saat ini dan pelacakan P&L secara real-time, membantu pedagang memahami secara intuitif kondisi pasar dan kinerja strategi.

  4. Kustomisasi TinggiStrategi menawarkan pengaturan parameter yang kaya, termasuk panjang EMA, rasio penyerapan, rasio pengembalian risiko, dan lain-lain, yang memungkinkan pedagang untuk menyesuaikan kinerja strategi sesuai dengan preferensi risiko pribadi dan kondisi pasar yang berbeda.

  5. Pertimbangan biaya transaksi terpaduPerhitungan komisi perdagangan dalam strategi, yang merupakan faktor penting yang sering diabaikan oleh banyak sistem perdagangan, memastikan bahwa hasil pengujian lebih dekat dengan lingkungan perdagangan yang sebenarnya.

Risiko Strategis

Meskipun memiliki banyak keuntungan, strategi ini memiliki risiko dan keterbatasan potensial sebagai berikut:

  1. Ketergantungan pada lingkungan pasarStrategi ini bekerja paling baik di pasar dengan tren yang jelas, dan dapat menghasilkan lebih banyak sinyal palsu di pasar horizontal atau pasar tanpa arah yang berfluktuasi tinggi. Solusinya adalah mengevaluasi kondisi pasar pada kerangka waktu yang lebih tinggi sebelum menggunakan strategi, atau menambahkan filter struktur pasar tambahan.

  2. Parameter Trap OptimisasiParameter yang dioptimalkan secara berlebihan dapat menyebabkan adaptasi kurva yang tidak berkinerja baik dalam lingkungan pasar di masa depan. Disarankan untuk menggunakan pengujian ke depan atau pengujian stabilitas dalam kondisi pasar yang berbeda untuk memverifikasi validitas parameter.

  3. Mencegah risiko terobosanDalam kondisi pasar yang sangat berfluktuasi atau kurangnya likuiditas, stop loss yang sebenarnya dapat mengalami slippage, melampaui kerugian yang diharapkan. Risiko ini dapat dikurangi dengan meningkatkan area penangguhan stop loss atau menggunakan skala posisi yang lebih konservatif.

  4. Kemunduran indikator teknisEMA dan indikator-indikator teknis lainnya secara inheren memiliki keterlambatan dan mungkin kurang responsif ketika pasar berubah dengan cepat.

  5. Volume dan Kualitas TransaksiStrategi hanya mempertimbangkan ukuran volume transaksi dan bukan struktur dan kualitas volume transaksi, yang dapat menyesatkan dalam kondisi pasar tertentu. Anda dapat mempertimbangkan untuk menambahkan analisis distribusi volume transaksi atau indikator aliran dana untuk meningkatkan analisis volume transaksi.

Arah optimasi strategi

Berdasarkan analisis kode, strategi ini dapat dioptimalkan dari beberapa arah:

  1. Kondisi pasar beradaptasi

    • Untuk mengidentifikasi struktur pasar, menggunakan parameter yang berbeda dalam pasar tren dan segmen
    • Memperkenalkan indeks volatilitas pasar (VIX) atau indikator sentimen pasar lainnya untuk menyesuaikan parameter risiko secara otomatis selama periode volatilitas tinggi
    • Alasan: Ini akan memungkinkan strategi untuk beradaptasi secara cerdas dengan lingkungan pasar yang berbeda dan meningkatkan stabilitas secara keseluruhan
  2. Analisis multi-frame waktu

    • Mekanisme konfirmasi tren untuk jangka waktu yang lebih tinggi
    • Mengoptimalkan akurasi masuk menggunakan kerangka waktu yang lebih rendah
    • Alasan: Analisis multi-frame waktu secara signifikan meningkatkan akurasi identifikasi tren dan mengurangi perdagangan kontra
  3. Analisis volume transaksi tingkat tinggi

    • Masukkan volume perdagangan rata-rata bergerak (VWMA) sebagai konfirmasi tren tambahan
    • Analisis tekanan jual beli, bukan hanya volume transaksi
    • Alasan: Analisis volume transaksi yang lebih halus dapat memberikan wawasan yang lebih dalam tentang perilaku peserta pasar
  4. Pembelajaran Mesin

    • Parameter yang dioptimalkan secara otomatis menggunakan algoritma pembelajaran mesin sederhana
    • Karakteristik bentuk penyerapan terbaik berdasarkan data sejarah
    • Alasan: Pembelajaran mesin dapat mengidentifikasi pola dan hubungan halus yang sulit ditemukan oleh manusia
  5. Peningkatan manajemen risiko

    • Dimensi Posisi Dinamis Berdasarkan Nilai Bersih Akun
    • Tambahkan batas risiko hari/minggu/bulan
    • Fungsi break-even diperkenalkan
    • Alasan: Manajemen risiko yang lebih canggih adalah dasar kesuksesan perdagangan jangka panjang

Meringkaskan

Strategi identifikasi pola perdagangan tingkat tinggi dan manajemen risiko dinamis adalah sistem perdagangan yang dirancang dengan baik yang menciptakan kerangka perdagangan yang komprehensif dengan menggabungkan analisis teknik bentuk penetrasi tradisional dengan metode kuantitatif modern. Kelebihan utama dari strategi ini adalah mekanisme pengesahan sinyal berdimensi dan sistem manajemen risiko yang dapat beradaptasi yang memungkinkannya untuk mempertahankan kinerja yang relatif stabil dalam berbagai kondisi pasar.

Strategi ini secara signifikan meningkatkan kualitas sinyal masuk melalui beberapa mekanisme seperti 50 EMA trend filter, identifikasi pola penelan tingkat lanjut, volume perdagangan dan konfirmasi volatilitas. Selain itu, target stop loss dan profit dinamis yang dihitung melalui Fibonacci level atau ATR multiplier, memberikan struktur risiko dan keuntungan yang jelas untuk setiap perdagangan.

Meskipun ada keterbatasan yang melekat seperti ketergantungan pada lingkungan pasar dan keterlambatan indikator teknis, strategi ini memiliki potensi untuk meningkatkan stabilitas dan adaptasi lebih lanjut melalui arah optimasi yang disarankan, seperti adaptasi diri terhadap kondisi pasar, analisis multi-time frame, dan peningkatan pembelajaran mesin. Untuk pedagang berpengalaman, ini adalah sistem perdagangan tingkat profesional yang menawarkan fungsionalitas lengkap, dan untuk pemula, ini dapat digunakan sebagai alat pendidikan untuk mempelajari konsep perdagangan lanjutan dan prinsip-prinsip manajemen risiko.

Kode Sumber Strategi
/*backtest
start: 2025-05-19 00:00:00
end: 2025-06-18 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("🎯 IKODO Engulfing Strategy with Dynamic RR & Commission", shorttitle="IKODO Engulfing Pro", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=0, calc_on_every_tick=false, calc_on_order_fills=false, commission_type=strategy.commission.percent, commission_value=0.04)

// ═══════════════════════════════════════════════════════════════════════════════
// 📊 ADVANCED INPUT PARAMETERS
// ═══════════════════════════════════════════════════════════════════════════════

// Commission Settings
enable_commission = input.bool(true, "Enable Commission", group="💰 Commission Settings")
commission_rate = input.float(0.04, "Commission Rate (%)", minval=0.0, maxval=1.0, step=0.01, group="💰 Commission Settings", tooltip="Binance Futures: 0.02% Maker, 0.04% Taker")
commission_type_input = input.string("Percentage", "Commission Type", options=["Percentage", "Fixed USD"], group="💰 Commission Settings")

// Risk Management Inputs
rr_ratio = input.float(2.0, "Risk Reward Ratio", minval=0.5, maxval=10.0, step=0.1, group="🎯 Risk Management")
use_fibonacci_tp = input.bool(true, "Use Fibonacci Levels for TP", group="🎯 Risk Management")
fib_level_tp = input.float(0.618, "Fibonacci Level for TP", minval=0.236, maxval=1.0, step=0.001, group="🎯 Risk Management")

// Stop Loss Settings
sl_type = input.string("Fibonacci", "Stop Loss Type", options=["Fibonacci", "Fixed USD", "ATR Multiple"], group="🛡️ Stop Loss Settings")
sl_fib_level = input.float(0.236, "Fibonacci Level for SL", minval=0.1, maxval=0.5, step=0.001, group="🛡️ Stop Loss Settings")
sl_fixed_usd = input.float(50.0, "Fixed Stop Loss (USD)", minval=1.0, maxval=1000.0, step=1.0, group="🛡️ Stop Loss Settings")
sl_atr_multiple = input.float(1.5, "ATR Multiple for SL", minval=0.5, maxval=5.0, step=0.1, group="🛡️ Stop Loss Settings")

// EMA Settings
ema_length = input.int(50, "EMA Length", minval=1, maxval=200, group="📈 Trend Filter")
ema_source = input.source(close, "EMA Source", group="📈 Trend Filter")

// Pattern Recognition Settings
min_engulf_ratio = input.float(0.1, "Minimum Engulfing Ratio", minval=0.01, maxval=1.0, step=0.01, group="🔍 Pattern Recognition")
max_wick_ratio = input.float(0.3, "Maximum Wick Ratio", minval=0.1, maxval=0.8, step=0.01, group="🔍 Pattern Recognition")

// Advanced Filters
volume_filter = input.bool(true, "Use Volume Filter", group="🔧 Advanced Filters")
volume_multiplier = input.float(1.2, "Volume Multiplier", minval=1.0, maxval=3.0, step=0.1, group="🔧 Advanced Filters")
atr_filter = input.bool(true, "Use ATR Volatility Filter", group="🔧 Advanced Filters")
atr_length = input.int(14, "ATR Length", minval=1, maxval=50, group="🔧 Advanced Filters")
min_atr_ratio = input.float(0.5, "Minimum ATR Ratio", minval=0.1, maxval=2.0, step=0.1, group="🔧 Advanced Filters")

// Visualization Settings
show_fibonacci_levels = input.bool(true, "Show Fibonacci Levels", group="🎨 Visualization")

// ═══════════════════════════════════════════════════════════════════════════════
// 🧮 QUANTITATIVE CALCULATIONS
// ═══════════════════════════════════════════════════════════════════════════════

// EMA Calculation
ema_50 = ta.ema(ema_source, ema_length)

// ATR for Volatility Assessment
atr = ta.atr(atr_length)

// Volume Analysis
avg_volume = ta.sma(volume, 20)
volume_condition = not volume_filter or volume > avg_volume * volume_multiplier

// Fibonacci calculation for swing levels
swing_high = ta.highest(high, 20)
swing_low = ta.lowest(low, 20)

// ═══════════════════════════════════════════════════════════════════════════════
// 🔍 ADVANCED PATTERN RECOGNITION
// ═══════════════════════════════════════════════════════════════════════════════

// Current and Previous Candle Properties
curr_body = math.abs(close - open)
prev_body = math.abs(close[1] - open[1])
curr_range = high - low
prev_range = high[1] - low[1]

// Candle Color Identification
curr_bullish = close > open
curr_bearish = close < open
prev_bullish = close[1] > open[1]
prev_bearish = close[1] < open[1]

// Enhanced Engulfing Pattern Detection
bullish_engulfing = curr_bullish and prev_bearish and close > high[1] and low < low[1] and curr_body > prev_body * min_engulf_ratio

bearish_engulfing = curr_bearish and prev_bullish and close < low[1] and high > high[1] and curr_body > prev_body * min_engulf_ratio

// Wick Analysis for Quality Filter
curr_upper_wick = curr_bullish ? high - close : high - open
curr_lower_wick = curr_bullish ? open - low : close - low
wick_filter_long = curr_upper_wick <= curr_range * max_wick_ratio
wick_filter_short = curr_lower_wick <= curr_range * max_wick_ratio

// ATR Volatility Filter
atr_filter_condition = not atr_filter or curr_range >= atr * min_atr_ratio

// ═══════════════════════════════════════════════════════════════════════════════
// 📈 TREND ANALYSIS & ENTRY CONDITIONS
// ═══════════════════════════════════════════════════════════════════════════════

// Trend Conditions
uptrend = close > ema_50
downtrend = close < ema_50

// Complete Entry Conditions
long_condition = uptrend and bullish_engulfing and wick_filter_long and volume_condition and atr_filter_condition

short_condition = downtrend and bearish_engulfing and wick_filter_short and volume_condition and atr_filter_condition

// ═══════════════════════════════════════════════════════════════════════════════
// 🎯 ADVANCED STOP LOSS CALCULATION
// ═══════════════════════════════════════════════════════════════════════════════

// Function to calculate stop loss based on type
calculate_stop_loss(entry_price, is_long, sl_type, swing_high, swing_low, atr, sl_fib_level, sl_fixed_usd, sl_atr_multiple) =>
    var float stop_loss = na
    
    if sl_type == "Fibonacci"
        if is_long
            fib_range = swing_high - swing_low
            stop_loss := swing_low + (fib_range * sl_fib_level)
        else
            fib_range = swing_high - swing_low
            stop_loss := swing_high - (fib_range * sl_fib_level)
    
    else if sl_type == "Fixed USD"
        if is_long
            stop_loss := entry_price - sl_fixed_usd
        else
            stop_loss := entry_price + sl_fixed_usd
    
    else if sl_type == "ATR Multiple"
        if is_long
            stop_loss := entry_price - (atr * sl_atr_multiple)
        else
            stop_loss := entry_price + (atr * sl_atr_multiple)
    
    stop_loss

// Function to calculate take profit
calculate_take_profit(entry_price, stop_loss, is_long, use_fibonacci_tp, swing_high, swing_low, fib_level_tp, rr_ratio) =>
    var float take_profit = na
    
    if use_fibonacci_tp
        if is_long
            fib_range = swing_high - swing_low
            take_profit := swing_low + (fib_range * fib_level_tp)
        else
            fib_range = swing_high - swing_low
            take_profit := swing_high - (fib_range * fib_level_tp)
    else
        // Traditional RR-based TP
        if is_long
            risk = entry_price - stop_loss
            take_profit := entry_price + (risk * rr_ratio)
        else
            risk = stop_loss - entry_price
            take_profit := entry_price - (risk * rr_ratio)
    
    take_profit

// ═══════════════════════════════════════════════════════════════════════════════
// 🎯 DYNAMIC RISK MANAGEMENT SYSTEM
// ═══════════════════════════════════════════════════════════════════════════════

// Dynamic Stop Loss and Take Profit Calculation
var float entry_price = na
var float stop_loss = na
var float take_profit = na
var float commission_cost = na

if long_condition and strategy.position_size == 0
    entry_price := close
    stop_loss := calculate_stop_loss(entry_price, true, sl_type, swing_high, swing_low, atr, sl_fib_level, sl_fixed_usd, sl_atr_multiple)
    take_profit := calculate_take_profit(entry_price, stop_loss, true, use_fibonacci_tp, swing_high, swing_low, fib_level_tp, rr_ratio)
    
    // Calculate commission cost
    commission_cost := enable_commission and commission_type_input == "Fixed USD" ? sl_fixed_usd * 2 : 0

if short_condition and strategy.position_size == 0
    entry_price := close
    stop_loss := calculate_stop_loss(entry_price, false, sl_type, swing_high, swing_low, atr, sl_fib_level, sl_fixed_usd, sl_atr_multiple)
    take_profit := calculate_take_profit(entry_price, stop_loss, false, use_fibonacci_tp, swing_high, swing_low, fib_level_tp, rr_ratio)
    
    // Calculate commission cost
    commission_cost := enable_commission and commission_type_input == "Fixed USD" ? sl_fixed_usd * 2 : 0

// ═══════════════════════════════════════════════════════════════════════════════
// 🚀 STRATEGY EXECUTION WITH COMMISSION
// ═══════════════════════════════════════════════════════════════════════════════

// Entry Orders
if long_condition
    strategy.entry("Long", strategy.long, comment="🟢 Elite Long Entry")

if short_condition
    strategy.entry("Short", strategy.short, comment="🔴 Elite Short Entry")

// Exit Orders
if strategy.position_size > 0
    strategy.exit("Long Exit", "Long", stop=stop_loss, limit=take_profit, comment="🎯 Long Exit")

if strategy.position_size < 0
    strategy.exit("Short Exit", "Short", stop=stop_loss, limit=take_profit, comment="🎯 Short Exit")

// ═══════════════════════════════════════════════════════════════════════════════
// 📊 ADVANCED VISUALIZATION - GLOBAL SCOPE
// ═══════════════════════════════════════════════════════════════════════════════

// EMA Plot
plot(ema_50, "EMA 50", color=color.new(color.blue, 0), linewidth=2)

// Entry Signals
plotshape(long_condition, "Long Signal", shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.normal)
plotshape(short_condition, "Short Signal", shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.normal)

// Support/Resistance Levels
plot(strategy.position_size != 0 ? stop_loss : na, "Stop Loss", color.new(color.red, 0), linewidth=2, style=plot.style_linebr)
plot(strategy.position_size != 0 ? take_profit : na, "Take Profit", color.new(color.green, 0), linewidth=2, style=plot.style_linebr)

// Entry Price Line
plot(strategy.position_size != 0 ? entry_price : na, "Entry Price", color.new(color.yellow, 0), linewidth=1, style=plot.style_linebr)

// Fibonacci Levels Visualization - MOVED TO GLOBAL SCOPE
show_fib_condition = show_fibonacci_levels and (sl_type == "Fibonacci" or use_fibonacci_tp)
plot(show_fib_condition ? swing_high : na, "Swing High", color.new(color.gray, 50), linewidth=1, style=plot.style_circles)
plot(show_fib_condition ? swing_low : na, "Swing Low", color.new(color.gray, 50), linewidth=1, style=plot.style_circles)

// Additional Fibonacci Levels
fib_range = swing_high - swing_low
fib_236 = swing_low + (fib_range * 0.236)
fib_382 = swing_low + (fib_range * 0.382)
fib_618 = swing_low + (fib_range * 0.618)
fib_786 = swing_low + (fib_range * 0.786)

plot(show_fib_condition ? fib_236 : na, "Fib 23.6%", color.new(color.orange, 70), linewidth=1, style=plot.style_linebr)
plot(show_fib_condition ? fib_382 : na, "Fib 38.2%", color.new(color.orange, 70), linewidth=1, style=plot.style_linebr)
plot(show_fib_condition ? fib_618 : na, "Fib 61.8%", color.new(color.orange, 70), linewidth=1, style=plot.style_linebr)
plot(show_fib_condition ? fib_786 : na, "Fib 78.6%", color.new(color.orange, 70), linewidth=1, style=plot.style_linebr)

// ═══════════════════════════════════════════════════════════════════════════════
// 📈 ENHANCED PERFORMANCE METRICS DISPLAY
// ═══════════════════════════════════════════════════════════════════════════════

// Enhanced Information Table
var table info_table = table.new(position.top_right, 3, 12, bgcolor=color.new(color.white, 85), border_width=1)

if barstate.islast
    table.cell(info_table, 0, 0, "📊 ELITE STRATEGY PRO", text_color=color.black, text_size=size.small)
    
    // Risk Management Info
    table.cell(info_table, 0, 1, "Risk-Reward Ratio:", text_color=color.black, text_size=size.tiny)
    table.cell(info_table, 1, 1, str.tostring(rr_ratio, "#.##"), text_color=color.blue, text_size=size.tiny)
    
    // Commission Info
    table.cell(info_table, 0, 2, "Commission:", text_color=color.black, text_size=size.tiny)
    commission_text = enable_commission ? (commission_type_input == "Percentage" ? str.tostring(commission_rate, "#.##") + "%" : "$" + str.tostring(sl_fixed_usd, "#.##")) : "Disabled"
    table.cell(info_table, 1, 2, commission_text, text_color=enable_commission ? color.red : color.gray, text_size=size.tiny)
    
    // Stop Loss Type
    table.cell(info_table, 0, 3, "Stop Loss Type:", text_color=color.black, text_size=size.tiny)
    table.cell(info_table, 1, 3, sl_type, text_color=color.purple, text_size=size.tiny)
    
    // EMA Period
    table.cell(info_table, 0, 4, "EMA Period:", text_color=color.black, text_size=size.tiny)
    table.cell(info_table, 1, 4, str.tostring(ema_length), text_color=color.blue, text_size=size.tiny)
    
    // Current Trend
    table.cell(info_table, 0, 5, "Current Trend:", text_color=color.black, text_size=size.tiny)
    trend_text = uptrend ? "🟢 BULLISH" : downtrend ? "🔴 BEARISH" : "⚪ NEUTRAL"
    trend_color = uptrend ? color.green : downtrend ? color.red : color.gray
    table.cell(info_table, 1, 5, trend_text, text_color=trend_color, text_size=size.tiny)
    
    // ATR
    table.cell(info_table, 0, 6, "ATR:", text_color=color.black, text_size=size.tiny)
    table.cell(info_table, 1, 6, str.tostring(atr, "#.####"), text_color=color.blue, text_size=size.tiny)
    
    // Fibonacci Range
    table.cell(info_table, 0, 7, "Fib Range:", text_color=color.black, text_size=size.tiny)
    table.cell(info_table, 1, 7, str.tostring(fib_range, "#.####"), text_color=color.orange, text_size=size.tiny)
    
    // Current Position Info
    if strategy.position_size != 0
        current_pnl = strategy.position_size > 0 ? (close - entry_price) / entry_price * 100 : (entry_price - close) / entry_price * 100
        table.cell(info_table, 0, 8, "Current P&L:", text_color=color.black, text_size=size.tiny)
        pnl_color = current_pnl > 0 ? color.green : color.red
        table.cell(info_table, 1, 8, str.tostring(current_pnl, "#.##") + "%", text_color=pnl_color, text_size=size.tiny)
        
        // Risk Amount
        risk_amount = strategy.position_size > 0 ? entry_price - stop_loss : stop_loss - entry_price
        table.cell(info_table, 0, 9, "Risk per Share:", text_color=color.black, text_size=size.tiny)
        table.cell(info_table, 1, 9, str.tostring(risk_amount, "#.####"), text_color=color.orange, text_size=size.tiny)
        
        // Reward Amount
        reward_amount = strategy.position_size > 0 ? take_profit - entry_price : entry_price - take_profit
        table.cell(info_table, 0, 10, "Reward per Share:", text_color=color.black, text_size=size.tiny)
        table.cell(info_table, 1, 10, str.tostring(reward_amount, "#.####"), text_color=color.green, text_size=size.tiny)

// ═══════════════════════════════════════════════════════════════════════════════
// 🔔 ENHANCED ALERT CONDITIONS
// ═══════════════════════════════════════════════════════════════════════════════

// Alert conditions
alertcondition(long_condition, title="🟢 Elite Long Entry Pro", message="Elite Engulfing Strategy PRO: LONG signal detected with commission calculation.")

alertcondition(short_condition, title="🔴 Elite Short Entry Pro", message="Elite Engulfing Strategy PRO: SHORT signal detected with commission calculation.")

// Dynamic alerts with detailed information
if long_condition
    alert_msg = "🟢 LONG SIGNAL: Elite Engulfing Pro | Price: " + str.tostring(close, "#.####") + " | RR: " + str.tostring(rr_ratio, "#.##") + " | SL Type: " + sl_type + " | Commission: " + (enable_commission ? str.tostring(commission_rate, "#.##") + "%" : "Disabled")
    alert(alert_msg, alert.freq_once_per_bar)

if short_condition
    alert_msg = "🔴 SHORT SIGNAL: Elite Engulfing Pro | Price: " + str.tostring(close, "#.####") + " | RR: " + str.tostring(rr_ratio, "#.##") + " | SL Type: " + sl_type + " | Commission: " + (enable_commission ? str.tostring(commission_rate, "#.##") + "%" : "Disabled")
    alert(alert_msg, alert.freq_once_per_bar)