Reconnaissance avancée des modèles de trading et stratégies de gestion dynamique des risques

EMA ATR FIBONACCI ENGULFING volatility VOLUME RISK-REWARD
Date de création: 2025-06-19 13:57:50 Dernière modification: 2025-06-19 13:57:50
Copier: 4 Nombre de clics: 287
2
Suivre
319
Abonnés

Reconnaissance avancée des modèles de trading et stratégies de gestion dynamique des risques Reconnaissance avancée des modèles de trading et stratégies de gestion dynamique des risques

Aperçu de la stratégie

La stratégie d’identification des modèles de négociation avancés et la stratégie de gestion des risques dynamiques est une stratégie de négociation quantitative qui combine une technologie d’identification de la forme de l’absorption précise avec un système de gestion des risques dynamiques. Le cœur de la stratégie est d’identifier avec précision la forme de l’absorption dans le marché grâce à des méthodes de vérification mathématique avancées et de combiner l’indice de 50 cycles Moyenne mobile (EMA) comme filtre de tendance, afin de s’assurer que l’orientation des transactions est cohérente avec les tendances dominantes du marché.

Principe de stratégie

Le principe de fonctionnement de cette stratégie repose sur la collaboration de plusieurs composants clés:

  1. Système de détection des tendancesUtilisation d’EMA à 50 cycles comme indicateur principal de la tendance. Les prix situés au-dessus de l’EMA sont identifiés comme tendance à la hausse, ce qui convient à la hausse. Les prix situés en dessous de l’EMA sont identifiés comme tendance à la baisse, ce qui convient à la baisse.

  2. Détection des formes avancées: stratégie de détection de la forme d’absorption d’une version améliorée, exigeant que la pile actuelle “absorbe” complètement la pile précédente et assure la qualité de la forme par une vérification mathématique. Le système analyse:

    • Ratio du corps actuel par rapport au corps précédent (minimum taux d’absorption)
    • Le rapport entre la ligne d’ombre vers le haut et la ligne d’ombre vers le bas et l’entité (le rapport maximal de ligne d’ombre)
    • La relation entre la taille globale de la pile actuelle et la portée réelle moyenne (ATR)
  3. Mécanisme de filtrage multiple

    • Filtrage du volume des transactions: s’assurer que le volume des transactions est supérieur à la moyenne par rapport à un certain nombre de fois
    • Filtrage de la volatilité: confirmation par l’ATR que la volatilité du marché a été atteinte dans des conditions de négociation appropriées
    • Contrôle de la qualité de l’ombre: limiter la taille de l’ombre ascendante et descendante pour améliorer la qualité du signal
  4. Gestion dynamique des risques

    • Calcul de stop-loss: prend en charge plusieurs stratégies de stop-loss basées sur des niveaux de Fibonacci, des montants fixes ou des multiples ATR
    • Objectif de profit: vous pouvez utiliser un ratio de retour sur risque fixe ou un objectif de niveau Fibonacci
    • Calcul automatique des frais de transaction pour assurer la viabilité de la stratégie dans un environnement de transaction réel

Avantages stratégiques

L’analyse approfondie du code a révélé les avantages notables suivants:

  1. L’heure exacte d’entréeEn combinant les tendances, les formes et les indicateurs de confirmation multiple, la stratégie est capable d’identifier les points d’entrée de haute qualité qui ont un avantage statistique sur le marché et d’éviter les faux signaux qu’un seul indicateur peut apporter.

  2. Gestion des risques adaptéeContrairement aux stratégies traditionnelles à paramètres fixes, le système de gestion des risques de cette stratégie s’adapte dynamiquement aux conditions du marché actuel, en utilisant des niveaux de Fibonacci ou des valeurs ATR pour calculer les objectifs de stop loss et de profit, afin de mieux s’adapter aux différents environnements du marché.

  3. Une visualisation complèteLa stratégie fournit des marqueurs graphiques complets et des panneaux d’information, y compris les signaux d’entrée, les niveaux de stop/gain, l’état de la tendance actuelle et le suivi du P&L en temps réel, pour aider les traders à comprendre intuitivement l’état du marché et la performance de la stratégie.

  4. Haute personnalisationLes stratégies offrent une large gamme de paramètres, y compris la longueur des EMA, le taux d’absorption, le rapport de retour sur risque, etc., permettant aux traders d’ajuster la performance des stratégies en fonction de leurs préférences personnelles en matière de risque et de différentes conditions de marché.

  5. Considérations sur les frais de transaction intégrésLe calcul des commissions de transaction intégrées à la stratégie est un élément important souvent négligé par de nombreux systèmes de trading, et assure que les résultats des tests sont plus proches de l’environnement de transaction réel.

Risque stratégique

Malgré les multiples avantages de cette stratégie, les risques et les limites potentiels sont les suivants:

  1. La dépendance à l’environnement du marchéLa stratégie fonctionne mieux dans les marchés où la tendance est claire, mais peut produire plus de faux signaux dans les marchés asymétriques horizontaux ou hautement volatiles. La solution consiste à évaluer l’état du marché sur des périodes plus longues avant d’utiliser la stratégie, ou à ajouter des filtres de structure de marché supplémentaires.

  2. piège d’optimisation des paramètres: les paramètres sur-optimisés peuvent conduire à une adéquation de la courbe qui ne fonctionnera pas bien dans le futur environnement de marché. Il est recommandé d’utiliser des tests de prospective ou des tests de robustesse dans des conditions de marché différentes pour vérifier l’efficacité des paramètres.

  3. Risque de rupture: Dans des conditions extrêmes de volatilité du marché ou d’insuffisance de la liquidité, le stop-loss réel peut subir des points de glissement au-delà des pertes prévues. Ce risque peut être réduit en augmentant la zone de couverture du stop-loss ou en utilisant une taille de position plus conservatrice.

  4. Rarité des indicateurs techniques: Les EMA et autres indicateurs techniques sont par nature retardés et peuvent ne pas être suffisamment réactifs en cas de changement rapide du marché. Il est recommandé de combler cette lacune en combinant une analyse à plus long terme ou en ajoutant des indicateurs d’alerte précoce.

  5. Le volume et la qualité des transactions: la stratégie ne prend en compte que la taille des transactions et non la structure et la qualité des transactions, ce qui peut être trompeur dans certaines conditions de marché. L’ajout d’une analyse de la distribution des transactions ou d’un indicateur de flux de fonds peut être envisagé pour renforcer l’analyse des transactions.

Orientation de l’optimisation de la stratégie

La stratégie peut être optimisée dans les directions suivantes, en fonction de l’analyse du code:

  1. Les marchés s’adaptent à eux-mêmes

    • Permettre l’identification de la structure du marché, en utilisant différents ensembles de paramètres dans les marchés tendanciels et intermédiaires
    • Introduction d’un indice de volatilité du marché (VIX) ou d’autres indicateurs de l’humeur du marché pour ajuster automatiquement les paramètres de risque en période de forte volatilité
    • La raison: cela permettra à la stratégie de s’adapter intelligemment à différents environnements de marché et d’améliorer la stabilité globale.
  2. Analyse de plusieurs périodes

    • Un mécanisme de confirmation de tendance pour les périodes plus longues
    • Optimisation de la précision d’entrée en jeu avec des délais plus courts
    • Pourquoi: L’analyse multi-châtres permet d’améliorer considérablement l’exactitude de la détection des tendances et de réduire les transactions négatives
  3. Analyse du volume des transactions à un niveau élevé

    • L’introduction d’une moyenne mobile pondérée en volume de transactions (VWMA) comme confirmation de tendance supplémentaire
    • Analysez les tensions d’achat et de vente plutôt que le volume total des transactions
    • Pourquoi: une analyse plus fine des volumes de transactions peut fournir des informations plus approfondies sur le comportement des acteurs du marché
  4. Le renforcement de l’apprentissage automatique

    • Optimisation automatique des paramètres à l’aide d’algorithmes d’apprentissage automatique simples
    • Caractéristiques des formes de déversement les mieux identifiées sur la base des données historiques
    • Pourquoi: l’apprentissage automatique peut identifier des modèles et des connexions subtiles que les humains ont du mal à trouver
  5. Amélioration de la gestion des risques

    • Réalisation d’ajustements de taille de position dynamiques basés sur la valeur nette des comptes
    • Ajouter une limite de risque jour/semaine/mois
    • Introduction de la fonction de rupture d’équilibre
    • Pourquoi: une gestion plus avancée des risques est la base d’une réussite à long terme

Résumer

La stratégie d’identification des modèles de négociation avancés et de gestion des risques dynamiques est un système de négociation soigneusement conçu qui crée un cadre de négociation complet en fusionnant l’analyse technique traditionnelle des formes d’absorption avec des méthodes modernes de quantification. Le principal avantage de la stratégie réside dans ses mécanismes de confirmation de signaux multidimensionnels et son système de gestion des risques adaptatif, qui lui permettent de maintenir une performance relativement stable dans différentes conditions de marché.

La stratégie améliore considérablement la qualité des signaux d’entrée grâce à des mécanismes multiples tels que le filtrage des tendances 50 EMA, l’identification des formes avancées d’absorption, le volume de transactions et la confirmation de la volatilité. En outre, les objectifs dynamiques de stop-loss et de profit calculés à l’aide des niveaux de Fibonacci ou des multiples ATR fournissent une structure de risque et de rendement claire pour chaque transaction.

Malgré les limites inhérentes, telles que la dépendance au contexte du marché et le retard des indicateurs techniques, la stratégie a le potentiel d’améliorer encore sa robustesse et son adaptabilité grâce à des orientations d’optimisation suggérées, telles que l’adaptation automatique aux conditions du marché, l’analyse multi-temporelle et l’amélioration de l’apprentissage automatique. Pour les traders expérimentés, il s’agit d’un système de trading de niveau professionnel offrant des fonctionnalités complètes, tandis que pour les débutants, il peut servir d’outil éducatif pour apprendre des concepts de trading avancés et des principes de gestion des risques.

Code source de la stratégie
/*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)