Reconhecimento avançado de padrões de negociação e estratégias dinâmicas de gerenciamento de risco

EMA ATR FIBONACCI ENGULFING volatility VOLUME RISK-REWARD
Data de criação: 2025-06-19 13:57:50 última modificação: 2025-06-19 13:57:50
cópia: 4 Cliques: 287
2
focar em
319
Seguidores

Reconhecimento avançado de padrões de negociação e estratégias dinâmicas de gerenciamento de risco Reconhecimento avançado de padrões de negociação e estratégias dinâmicas de gerenciamento de risco

Visão geral da estratégia

A estratégia de identificação de padrões de negociação avançada e de gerenciamento de risco dinâmico é uma estratégia de negociação quantitativa que combina a tecnologia de identificação de padrões de absorção precisos com o sistema de gerenciamento de risco dinâmico. O núcleo da estratégia consiste em identificar com precisão os padrões de absorção no mercado por meio de métodos avançados de verificação matemática, e em conjunto com a média móvel de 50 ciclos (EMA) como um filtro de tendência, garantindo que a direção de negociação esteja em consonância com a tendência dominante do mercado.

Princípio da estratégia

A estratégia funciona com base na colaboração de vários componentes-chave:

  1. Sistemas de identificação de tendênciasUsar o EMA de 50 ciclos como o principal indicador de tendência. Os preços acima do EMA são identificados como tendências ascendentes, apropriados para fazer mais; Os preços abaixo do EMA são identificados como tendências descendentes, apropriados para fazer menos. Isso garante que as negociações sempre obedeçam à direção dominante do mercado.

  2. Reconhecimento de forma de engolição avançada: estratégia para detectar a forma de absorção de uma versão melhorada, exigindo que o atual alvo “devore” completamente o alvo anterior e assegure a qualidade da forma por meio de verificação matemática. O sistema analisa:

    • Proporção do corpo atual em relação ao corpo anterior (mínima taxa de absorção)
    • Proporção entre a linha de sombra de cima para baixo e a entidade (máxima proporção de linha de sombra)
    • Relação entre o tamanho total do arco atual e o alcance real médio (ATR)
  3. Mecanismo de filtragem múltipla

    • Filtragem de volume de transações: certifique-se de que o volume de transações é superior a um determinado múltiplo da média
    • Filtragem de volatilidade: confirmação da volatilidade do mercado através do ATR para condições de negociação apropriadas
    • Controle de qualidade de linha de sombra: limite o tamanho da linha de sombra para cima e para baixo para melhorar a qualidade do sinal
  4. Gestão de Riscos Dinâmicos

    • Calculação de Stop Loss: Suporta várias estratégias de Stop Loss baseadas em níveis de Fibonacci, valores fixos ou múltiplos ATR
    • Objetivos de lucro: pode-se usar um objetivo de taxa de retorno de risco fixo ou um nível de Fibonacci
    • Cálculo automático das taxas de transação para garantir a viabilidade da estratégia em um ambiente de negociação real

Vantagens estratégicas

Ao analisar o código em profundidade, a estratégia revela as seguintes vantagens significativas:

  1. A hora exata de entradaAo combinar tendências, formas e indicadores de confirmação múltipla, a estratégia é capaz de identificar pontos de entrada de alta qualidade com vantagens estatísticas no mercado, evitando os falsos sinais que um único indicador pode trazer.

  2. Gestão de risco adaptativaDiferentemente das estratégias tradicionais com parâmetros fixos, o sistema de gerenciamento de risco da estratégia se adapta dinamicamente às condições atuais do mercado, usando os níveis de Fibonacci ou os valores ATR para calcular os objetivos de stop loss e profit, melhor adaptando-se a diferentes ambientes de mercado.

  3. Suporte visual completoA estratégia fornece um mapa gráfico abrangente e painéis de informações, incluindo sinais de entrada, níveis de stop loss / profit, estado de tendência atual e rastreamento de P&L em tempo real, para ajudar os comerciantes a entender intuitivamente o estado do mercado e o desempenho da estratégia.

  4. Alta personalizaçãoA estratégia oferece uma ampla variedade de configurações de parâmetros, incluindo a duração do EMA, a taxa de absorção e a taxa de retorno do risco, permitindo que os comerciantes ajustem o desempenho da estratégia de acordo com as preferências pessoais de risco e as diferentes condições de mercado.

  5. Considerações de custos de transação integradaO cálculo da comissão de negociação incorporada na estratégia é um fator importante que muitos sistemas de negociação costumam ignorar, garantindo que os resultados da retrospectiva estejam mais próximos do ambiente de negociação real.

Risco estratégico

Apesar das múltiplas vantagens desta estratégia, existem os seguintes riscos e limitações potenciais:

  1. Dependência do ambiente de mercadoA estratégia funciona melhor em mercados com uma tendência clara, e pode gerar mais falsos sinais em mercados com um corte horizontal ou com alta volatilidade sem direção. A solução é avaliar o estado do mercado em um período de tempo mais longo antes de usar a estratégia, ou adicionar um filtro de estrutura de mercado adicional.

  2. Parâmetros de optimização de armadilhasParâmetros de otimização excessiva podem levar a um ajustamento de curva que não será adequado em um futuro ambiente de mercado. Recomenda-se o uso de testes de prospecção ou testes de robustez em diferentes condições de mercado para verificar a eficácia dos parâmetros.

  3. Risco de rupturaEm situações de extrema volatilidade ou falta de liquidez no mercado, o real stop loss pode sofrer um deslizamento para além do esperado. Este risco pode ser reduzido aumentando a zona de amortecimento do stop loss ou usando uma escala de posição mais conservadora.

  4. Retardo em indicadores técnicosA EMA e outros indicadores técnicos são inerentemente retardados e podem não responder adequadamente a mudanças rápidas no mercado. Recomenda-se a combinação de análises de um prazo mais longo ou o aumento de indicadores de alerta precoce para compensar essa deficiência.

  5. Questões de volume e qualidade das transaçõesA estratégia considera apenas o tamanho do volume de negócios e não a estrutura e a qualidade do volume de negócios, o que pode ser enganoso em certas condições de mercado. Pode-se considerar a adição de análise de distribuição de volume de negócios ou indicadores de fluxo de capital para aumentar a profundidade da análise de volume de negócios.

Direção de otimização da estratégia

Com base na análise de código, a estratégia pode ser otimizada nas seguintes direções:

  1. O estado do mercado adapta-se

    • Realizar a identificação da estrutura do mercado, usando diferentes conjuntos de parâmetros em mercados de tendências e intervalos
    • Introdução de índices de volatilidade de mercado (VIX) ou outros indicadores de sentimento de mercado para ajustar automaticamente os parâmetros de risco durante períodos de alta volatilidade
    • O motivo: Isso permitirá que a estratégia se adapte inteligentemente a diferentes cenários de mercado, aumentando a estabilidade geral.
  2. Análise de Multi-Framas de Tempo

    • Mecanismos de confirmação de tendências para um período de tempo mais longo
    • Otimizar a precisão de entrada usando um menor período de tempo
    • A análise de múltiplos quadros de tempo pode aumentar significativamente a precisão da identificação de tendências e reduzir a negociação adversária.
  3. Análise de volume de transações de alto nível

    • Introdução de uma média móvel ponderada por volume de transação (VWMA) como confirmação de tendência adicional
    • Analisar a pressão de compra e venda, não apenas o volume total de transações
    • O motivo: a análise de volumes de transações mais detalhadas pode fornecer uma visão mais profunda sobre o comportamento dos participantes do mercado.
  4. Aprendizagem de máquina

    • Parâmetros de otimização automática usando algoritmos de aprendizado de máquina simples
    • Melhor identificação da forma de engolir baseada em dados históricos
    • O motivo: a aprendizagem de máquina pode identificar padrões e correlações sutis que são difíceis de serem detectados por humanos
  5. Gestão de Riscos reforçada

    • Realização de ajustes de tamanho de posições dinâmicas baseados no valor líquido da conta
    • Adicionar limites de risco de dia/semana/mês
    • Introdução de uma função de breakeven
    • O motivo: uma gestão de risco mais avançada é a base para o sucesso das negociações a longo prazo

Resumir

A estratégia de identificação de padrões de negociação avançados e gestão de risco dinâmico é um sistema de negociação cuidadosamente concebido, criando uma estrutura de negociação abrangente através da fusão da análise técnica tradicional de absorção de forma com métodos modernos de quantificação. O principal benefício da estratégia reside no seu mecanismo de confirmação de sinal multidimensional e no sistema de gestão de risco adaptável, que permite manter um desempenho relativamente estável em diferentes condições de mercado.

A estratégia aumenta significativamente a qualidade do sinal de entrada através de múltiplos mecanismos, como filtragem de tendências de 50 EMA, identificação de padrões avançados de absorção, volume de negociação e confirmação de volatilidade. Ao mesmo tempo, o objetivo de stop loss e ganho dinâmico calculado através do nível de Fibonacci ou do múltiplo ATR fornece uma estrutura de risco e retorno clara para cada transação.

Apesar das limitações inerentes, tais como a dependência do ambiente de mercado e o atraso dos indicadores técnicos, a estratégia tem potencial para aumentar ainda mais a sua robustez e adaptabilidade através de orientações de otimização sugeridas, como a auto-adaptação do estado do mercado, a análise de múltiplos prazos e o aumento da aprendizagem de máquina. Para os operadores experientes, é um sistema de negociação de nível profissional que oferece funcionalidades completas, enquanto para os novatos, pode servir como uma ferramenta educacional para aprender conceitos de negociação avançados e princípios de gerenciamento de risco.

Código-fonte da estratégia
/*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)