Nhận dạng mô hình giao dịch nâng cao và chiến lược quản lý rủi ro năng động

EMA ATR FIBONACCI ENGULFING volatility VOLUME RISK-REWARD
Ngày tạo: 2025-06-19 13:57:50 sửa đổi lần cuối: 2025-06-19 13:57:50
sao chép: 4 Số nhấp chuột: 287
2
tập trung vào
319
Người theo dõi

Nhận dạng mô hình giao dịch nâng cao và chiến lược quản lý rủi ro năng động Nhận dạng mô hình giao dịch nâng cao và chiến lược quản lý rủi ro năng động

Tổng quan về chiến lược

Chiến lược nhận dạng mô hình giao dịch cao cấp và chiến lược quản lý rủi ro động là một chiến lược giao dịch định lượng kết hợp công nghệ nhận dạng mô hình ăn mòn chính xác với hệ thống quản lý rủi ro động. Cốt lõi của chiến lược này là xác định chính xác mô hình ăn mòn trên thị trường thông qua các phương pháp xác minh toán học cao cấp và kết hợp với chỉ số chuyển động 50 chu kỳ (EMA) làm bộ lọc xu hướng, đảm bảo hướng giao dịch phù hợp với xu hướng thị trường thống trị. Chiến lược này lọc các tín hiệu giao dịch có xác suất cao bằng cách phân tích sâu sắc các chỉ số kỹ thuật đa chiều như hình ảnh đồ thị, xác nhận khối lượng giao dịch và lọc biến động, đồng thời áp dụng các mục tiêu dừng lỗ và lợi nhuận động dựa trên mức độ Fibonacci để thực hiện quản lý rủi ro thông minh.

Nguyên tắc chiến lược

Chiến lược này hoạt động dựa trên sự phối hợp của một số thành phần quan trọng:

  1. Hệ thống nhận dạng xu hướng: Sử dụng 50 chu kỳ EMA như là chỉ số xu hướng chính. Giá trên EMA được xác định là xu hướng tăng, phù hợp để làm nhiều; Giá dưới EMA được xác định là xu hướng giảm, phù hợp để làm trống. Điều này đảm bảo giao dịch luôn tuân theo hướng thống trị của thị trường.

  2. Nhận dạng hình dạng ăn sâu cấp caoChiến lược phát hiện hình dạng nuốt của phiên bản nâng cao, yêu cầu các hạt hiện tại “nuốt” hoàn toàn các hạt trước đó, và đảm bảo chất lượng hình dạng bằng cách xác minh toán học. Hệ thống sẽ phân tích:

    • Tỷ lệ của xác hiện tại so với xác trước đó ((tỷ lệ nuốt tối thiểu)
    • Tỷ lệ của đường bóng lên xuống với thực thể ((tỷ lệ đường bóng tối đa)
    • Mối quan hệ giữa kích thước tổng thể của nếp hiện tại và phạm vi thực trung bình (ATR)
  3. Cơ chế lọc đa dạng

    • Bộ lọc khối lượng giao dịch: đảm bảo khối lượng giao dịch vượt quá một số nhân cụ thể của giá trị trung bình
    • Bộ lọc biến động: xác nhận biến động thị trường đạt được điều kiện giao dịch phù hợp thông qua ATR
    • Kiểm soát chất lượng đường bóng: Giới hạn kích thước đường bóng lên xuống, cải thiện chất lượng tín hiệu
  4. Quản lý rủi ro động

    • Tính toán dừng lỗ: hỗ trợ nhiều chiến lược dừng lỗ dựa trên mức Fibonacci, số tiền cố định hoặc ATR
    • Mục tiêu lợi nhuận: có thể sử dụng tỷ lệ lợi nhuận rủi ro cố định hoặc mục tiêu thiết lập mức Fibonacci
    • Tự động tính phí giao dịch để đảm bảo tính khả thi của chiến lược trong môi trường giao dịch thực tế

Lợi thế chiến lược

Trong một phân tích sâu về mã, chiến lược này cho thấy những lợi thế đáng kể sau:

  1. Thời gian chính xácBằng cách kết hợp xu hướng, hình dạng và nhiều chỉ số xác nhận, chiến lược có thể xác định các điểm nhập cảnh chất lượng cao có lợi thế thống kê trong thị trường, tránh các tín hiệu sai lầm có thể do chỉ số đơn lẻ mang lại.

  2. Quản lý rủi ro thích nghiKhác với các chiến lược truyền thống với các tham số cố định, hệ thống quản lý rủi ro của chiến lược này sẽ điều chỉnh động theo điều kiện thị trường hiện tại, sử dụng mức Fibonacci hoặc giá trị ATR để tính toán mục tiêu dừng lỗ và lợi nhuận, thích ứng tốt hơn với các môi trường thị trường khác nhau.

  3. Hỗ trợ hình ảnh đầy đủChiến lược cung cấp các biểu đồ và bảng thông tin toàn diện, bao gồm tín hiệu nhập, mức dừng / lợi nhuận, tình trạng xu hướng hiện tại và theo dõi P&L trực tiếp, giúp các nhà giao dịch hiểu trực quan tình trạng thị trường và hoạt động của chiến lược.

  4. Khả năng tùy chỉnh caoChiến lược cung cấp các thiết lập tham số phong phú, bao gồm độ dài EMA, tỷ lệ nuốt, tỷ lệ lợi nhuận rủi ro, v.v., cho phép thương nhân điều chỉnh hiệu suất chiến lược theo sở thích rủi ro cá nhân và các điều kiện thị trường khác nhau.

  5. Xác định chi phí giao dịch tổng hợpMột số hệ thống giao dịch thường bỏ qua tính toán hoa hồng giao dịch trong chiến lược, đảm bảo kết quả đo lường gần gũi hơn với môi trường giao dịch thực tế.

Rủi ro chiến lược

Mặc dù có nhiều lợi thế, chiến lược này vẫn có những rủi ro và hạn chế tiềm ẩn như sau:

  1. Sự phụ thuộc vào môi trường thị trườngPhương pháp này hoạt động tốt nhất trong thị trường có xu hướng rõ ràng, và có thể tạo ra nhiều tín hiệu giả hơn trong thị trường không định hướng hoặc biến động cao. Giải pháp là đánh giá tình trạng thị trường trong khung thời gian cao hơn trước khi sử dụng chiến lược hoặc thêm bộ lọc cấu trúc thị trường bổ sung.

  2. Lỗ bẫy tối ưu hóa tham sốCác tham số được tối ưu hóa quá mức có thể dẫn đến sự phù hợp với đường cong, không hoạt động tốt trong môi trường thị trường trong tương lai.

  3. Hạn chế rủi ro đột pháTrong các điều kiện thị trường biến động cực đoan hoặc thiếu thanh khoản, việc dừng thực tế có thể bị trượt, vượt quá tổn thất dự kiến. Có thể giảm rủi ro này bằng cách tăng vùng đệm dừng hoặc sử dụng quy mô vị trí thận trọng hơn.

  4. Chỉ số kỹ thuật chậm phát triểnEMA và các chỉ số kỹ thuật khác có tính chất chậm trễ, có thể không phản ứng khi thị trường chuyển đổi nhanh.

  5. Vấn đề về chất lượng giao dịchChiến lược chỉ tính đến kích thước giao dịch thay vì cấu trúc và chất lượng khối lượng giao dịch, có thể gây hiểu lầm trong một số điều kiện thị trường. Bạn có thể xem xét thêm phân tích phân phối khối lượng giao dịch hoặc chỉ số dòng tiền để tăng cường phân tích khối lượng giao dịch.

Hướng tối ưu hóa chiến lược

Dựa trên phân tích mã, chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Thị trường tự điều chỉnh

    • Thực hiện chức năng nhận dạng cấu trúc thị trường, sử dụng các tập hợp tham số khác nhau trong thị trường xu hướng và phân đoạn
    • Tiếp cận chỉ số biến động thị trường (VIX) hoặc các chỉ số tâm trạng thị trường khác để tự động điều chỉnh các tham số rủi ro trong thời gian biến động cao
    • Lý do: Điều này sẽ cho phép các chiến lược có thể thích ứng thông minh với các môi trường thị trường khác nhau, nâng cao sự ổn định tổng thể
  2. Phân tích nhiều khung thời gian

    • Cơ chế xác nhận xu hướng tham gia khung thời gian cao hơn
    • Sử dụng khung thời gian thấp để tối ưu hóa độ chính xác
    • Lý do: Phân tích nhiều khung thời gian có thể cải thiện đáng kể độ chính xác nhận định xu hướng và giảm giao dịch ngược
  3. Phân tích khối lượng giao dịch cấp cao

    • Việc giới thiệu khối lượng giao dịch trung bình di chuyển trọng lượng ((VWMA) như xác nhận xu hướng bổ sung
    • Phân tích áp lực mua bán thay vì chỉ tính tổng khối lượng giao dịch
    • Lý do: Phân tích khối lượng giao dịch tinh tế hơn có thể cung cấp những hiểu biết sâu sắc hơn về hành vi của người tham gia thị trường
  4. Tăng cường học máy

    • Tự động tối ưu hóa tham số bằng thuật toán học máy đơn giản
    • Tính cách ăn uống tốt nhất dựa trên dữ liệu lịch sử
    • Lý do: Học máy có thể nhận ra các mô hình tinh tế và mối quan hệ mà con người khó có thể phát hiện
  5. Tăng cường quản lý rủi ro

    • Thực hiện điều chỉnh quy mô vị trí động dựa trên giá trị tài khoản ròng
    • Thêm giới hạn rủi ro ngày/tuần/tháng
    • Khả năng cân bằng lỗ hổng
    • Lý do: Quản lý rủi ro tiên tiến hơn là nền tảng cho sự thành công trong giao dịch lâu dài

Tóm tắt

Chiến lược nhận dạng mô hình giao dịch cao cấp và chiến lược quản lý rủi ro động là một hệ thống giao dịch được thiết kế cẩn thận, tạo ra một khung giao dịch toàn diện bằng cách kết hợp phân tích kỹ thuật mô hình ăn uống truyền thống với phương pháp định lượng hiện đại. Điểm mạnh cốt lõi của chiến lược này nằm ở cơ chế xác nhận tín hiệu đa chiều và hệ thống quản lý rủi ro thích ứng, cho phép nó duy trì hiệu suất tương đối ổn định trong các điều kiện thị trường khác nhau.

Chiến lược này đã cải thiện đáng kể chất lượng tín hiệu đầu vào thông qua các cơ chế đa dạng như lọc xu hướng 50 EMA, nhận dạng hình thức ăn uống cao cấp, xác nhận khối lượng giao dịch và biến động. Đồng thời, các mục tiêu dừng lỗ và lợi nhuận động được tính toán thông qua mức Fibonacci hoặc ATR, cung cấp cấu trúc rủi ro và lợi nhuận rõ ràng cho mỗi giao dịch.

Mặc dù có những hạn chế vốn có như sự phụ thuộc vào môi trường thị trường và sự chậm trễ của các chỉ số kỹ thuật, chiến lược này có tiềm năng nâng cao sự ổn định và thích ứng hơn nữa thông qua các hướng tối ưu hóa được đề xuất như tự điều chỉnh tình trạng thị trường, phân tích nhiều khung thời gian và tăng cường học máy. Đối với các nhà giao dịch có kinh nghiệm, đây là một hệ thống giao dịch chuyên nghiệp cung cấp đầy đủ chức năng, và cho người mới, nó có thể được sử dụng như một công cụ giáo dục để học các khái niệm giao dịch cao cấp và các nguyên tắc quản lý rủi ro.

Mã nguồn chiến lược
/*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)