Pengiktirafan corak dagangan lanjutan dan strategi pengurusan risiko dinamik

EMA ATR FIBONACCI ENGULFING volatility VOLUME RISK-REWARD
Tarikh penciptaan: 2025-06-19 13:57:50 Akhirnya diubah suai: 2025-06-19 13:57:50
Salin: 4 Bilangan klik: 287
2
fokus pada
319
Pengikut

Pengiktirafan corak dagangan lanjutan dan strategi pengurusan risiko dinamik Pengiktirafan corak dagangan lanjutan dan strategi pengurusan risiko dinamik

Gambaran Keseluruhan Strategi

Strategi pengenalan corak perdagangan yang tinggi dan strategi pengurusan risiko dinamik adalah strategi perdagangan kuantitatif yang menggabungkan teknologi pengenalan corak pengapungan yang tepat dengan sistem pengurusan risiko dinamik. Strategi ini berpusat pada pengenalan corak pengapungan yang tepat di pasaran melalui kaedah pengesahan matematik yang tinggi, dan menggabungkan indeks bergerak rata-rata 50 kitaran (EMA) sebagai penapis trend, memastikan arah perdagangan selaras dengan trend pasaran yang dominan.

Prinsip Strategi

Strategi ini adalah berasaskan kepada beberapa komponen utama yang bekerjasama:

  1. Sistem Pengiktirafan TrendMenggunakan EMA 50 kitaran sebagai penunjuk trend utama. Harga di atas EMA diiktiraf sebagai trend naik, sesuai untuk melakukan lebih banyak; harga di bawah EMA diiktiraf sebagai trend menurun, sesuai untuk melakukan kosong. Ini memastikan perdagangan sentiasa mengikuti arah yang dominan di pasaran.

  2. Pengiktirafan bentuk penelan tingkat tinggiStrategi untuk mengesan bentuk penyerapan versi yang dipertingkatkan, meminta batang semasa “menyerap” batang sebelumnya sepenuhnya, dan memastikan kualiti bentuk melalui pengesahan matematik. Sistem akan menganalisis:

    • Nisbah kerosakan semasa berbanding dengan kerosakan sebelumnya ((Rata-rata penyerapan minimum)
    • Perkadaran garisan bayangan ke atas dan ke bawah dengan entiti (perkadaran garisan bayangan maksimum)
    • Hubungan antara saiz keseluruhan keranjang semasa dengan purata jangkauan sebenar (ATR)
  3. Mekanisme penapisan berbilang

    • Penapisan jumlah transaksi: memastikan jumlah transaksi melebihi kelipatan tertentu dari purata
    • Penapisan turun naik: mengesahkan turun naik pasaran melalui ATR untuk memenuhi syarat dagangan yang sesuai
    • Kawalan kualiti garis bayangan: Hadkan saiz garis bayangan ke atas dan ke bawah untuk meningkatkan kualiti isyarat
  4. Pengurusan risiko dinamik

    • Pengiraan Hentian Kerosakan: menyokong pelbagai strategi Hentian Kerosakan berdasarkan tahap Fibonacci, jumlah tetap atau ATR
    • Matlamat keuntungan: Matlamat boleh ditetapkan menggunakan nisbah pulangan risiko tetap atau tahap Fibonacci
    • Mengira secara automatik yuran dagangan untuk memastikan kebolehgunaan strategi dalam persekitaran dagangan sebenar

Kelebihan Strategik

Dengan analisis kod yang mendalam, strategi ini menunjukkan kelebihan yang ketara:

  1. Waktu masuk yang tepatDengan menggabungkan trend, bentuk, dan pelbagai pengesahan, strategi dapat mengenal pasti titik masuk berkualiti tinggi yang mempunyai kelebihan statistik di pasaran, mengelakkan isyarat palsu yang mungkin dibawa oleh satu petunjuk.

  2. Pengurusan risiko penyesuaianBerbeza dengan strategi tradisional dengan parameter tetap, sistem pengurusan risiko strategi ini akan menyesuaikan secara dinamik mengikut keadaan pasaran semasa, menggunakan tahap Fibonacci atau nilai ATR untuk mengira sasaran stop loss dan keuntungan, lebih sesuai dengan keadaan pasaran yang berbeza.

  3. Sokongan visual yang lengkapStrategi menyediakan penanda carta dan panel maklumat yang komprehensif, termasuk isyarat masuk, tahap stop loss / profit, status trend semasa dan pemantauan P&L dalam masa nyata, membantu peniaga memahami keadaan pasaran dan prestasi strategi secara langsung.

  4. Kustomisasi yang tinggiStrategi menawarkan banyak parameter, termasuk panjang EMA, nisbah penyerapan, nisbah pulangan risiko, dan lain-lain, yang membolehkan peniaga menyesuaikan prestasi strategi mengikut keutamaan risiko peribadi dan keadaan pasaran yang berbeza.

  5. Pertimbangan kos transaksi bersepaduKaedah dalaman untuk mengira komisen dagangan, satu faktor penting yang sering diabaikan oleh banyak sistem perdagangan, memastikan hasil pengesanan lebih dekat dengan persekitaran perdagangan sebenar.

Risiko Strategik

Walaupun terdapat banyak kelebihan, strategi ini mempunyai risiko dan batasan yang berpotensi:

  1. Ketergantungan kepada persekitaran pasaranStrategi ini berfungsi dengan baik dalam pasaran yang jelas trend, dan mungkin menghasilkan lebih banyak isyarat palsu dalam pasaran yang tidak berorientasikan atau tidak berorientasikan. Penyelesaian adalah dengan menilai keadaan pasaran dalam jangka masa yang lebih tinggi sebelum menggunakan strategi, atau menambah penapis struktur pasaran tambahan.

  2. Perangkap pengoptimuman parameterParameter yang dioptimumkan secara berlebihan boleh menyebabkan penyesuaian kurva dan tidak berfungsi dengan baik dalam keadaan pasaran masa depan. Ia disyorkan untuk menggunakan ujian ke hadapan atau ujian ketahanan di bawah keadaan pasaran yang berbeza untuk mengesahkan kesahihan parameter.

  3. Menghalang risiko penembusanDalam keadaan pasaran yang tidak menentu atau kekurangan kecairan, penangguhan sebenar mungkin mengalami penurunan, melebihi kerugian yang dijangkakan. Risiko ini dapat dikurangkan dengan meningkatkan kawasan penangguhan atau menggunakan skala kedudukan yang lebih konservatif.

  4. Ketinggalan dalam penunjuk teknikalEMA dan lain-lain petunjuk teknikal mempunyai sifat keterlambatan dan mungkin kurang bertindak balas apabila pasaran berubah dengan cepat. Ia disyorkan untuk mengatasi kekurangan ini dengan analisis jangka masa yang lebih tinggi atau menambah petunjuk amaran awal.

  5. Masalah kualiti jumlah transaksiStrategi hanya mengambil kira saiz dagangan dan bukan struktur dan kualiti jumlah dagangan, yang boleh mengelirukan dalam keadaan pasaran tertentu. Anda boleh mempertimbangkan untuk menambah analisis sebaran jumlah dagangan atau penunjuk aliran wang untuk meningkatkan analisis jumlah dagangan.

Arah pengoptimuman strategi

Berdasarkan analisis kod, strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Keadaan Pasaran Beradaptasi

    • Mempunyai fungsi pengenalan struktur pasaran, menggunakan set parameter yang berbeza di pasaran trend dan segmen
    • Memperkenalkan indeks kadar turun naik pasaran (VIX) atau penunjuk sentimen pasaran lain untuk menyesuaikan parameter risiko secara automatik semasa turun naik yang tinggi
    • Sebab: Ini akan membolehkan strategi untuk menyesuaikan diri dengan lebih bijak dalam keadaan pasaran yang berbeza, meningkatkan kestabilan keseluruhan
  2. Analisis pelbagai kerangka masa

    • Mekanisme pengesahan trend untuk jangka masa yang lebih tinggi
    • Ketepatan kemasukan yang dioptimumkan menggunakan bingkai masa yang lebih rendah
    • Sebab: Analisis pelbagai kerangka masa dapat meningkatkan ketepatan pengenalan trend dan mengurangkan dagangan berlawanan arah
  3. Analisis jumlah transaksi peringkat tinggi

    • Pengenalan purata bergerak bertimbangan jumlah transaksi (VWMA) sebagai pengesahan trend tambahan
    • Analisis tekanan jual beli dan bukan hanya jumlah dagangan
    • Sebab: Analisis jumlah transaksi yang lebih terperinci dapat memberikan wawasan yang lebih mendalam mengenai tingkah laku peserta pasaran
  4. Pembelajaran Mesin

    • Mengoptimumkan parameter secara automatik menggunakan algoritma pembelajaran mesin yang mudah
    • Ciri-ciri bentuk penelan terbaik berdasarkan data sejarah
    • Sebabnya: Pembelajaran mesin dapat mengenal pasti corak dan hubungan halus yang sukar ditemui oleh manusia
  5. Pengurusan risiko yang lebih baik

    • Mencapai penyesuaian saiz kedudukan dinamik berdasarkan nilai bersih akaun
    • Tambahkan had risiko hari/minggu/bulan
    • Memperkenalkan fungsi break even
    • Sebab: Pengurusan risiko yang lebih maju adalah asas untuk kejayaan dagangan jangka panjang

ringkaskan

Strategi pengenalan corak dagangan tinggi dan pengurusan risiko dinamik adalah sistem perdagangan yang dirancang dengan baik yang mewujudkan kerangka perdagangan yang komprehensif dengan menggabungkan analisis teknik corak pengapungan tradisional dengan kaedah kuantitatif moden. Kelebihan utama strategi ini adalah mekanisme pengesahan isyarat berbilang dimensi dan sistem pengurusan risiko yang beradaptasi, yang membolehkannya mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.

Strategi ini meningkatkan kualiti isyarat masuk dengan pelbagai mekanisme seperti penapisan trend 50 EMA, pengenalan corak penelan tinggi, pengesahan jumlah perdagangan dan turun naik. Di samping itu, tujuan berhenti dan keuntungan dinamik yang dikira melalui tahap Fibonacci atau kelipatan ATR, memberikan struktur risiko dan ganjaran yang jelas untuk setiap perdagangan.

Walaupun terdapat keterbatasan yang melekat seperti ketergantungan kepada persekitaran pasaran dan ketinggalan petunjuk teknikal, strategi ini mempunyai potensi untuk meningkatkan kestabilan dan daya serapannya dengan arah pengoptimuman yang disyorkan, seperti penyesuaian diri terhadap keadaan pasaran, analisis pelbagai kerangka masa dan peningkatan pembelajaran mesin. Bagi peniaga yang berpengalaman, ini adalah sistem perdagangan peringkat profesional yang menawarkan fungsi lengkap, dan untuk pemula, ia boleh digunakan sebagai alat pendidikan untuk mempelajari konsep perdagangan lanjutan dan prinsip pengurusan risiko.

Kod 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)