Estratégia de negociação de tendência de stop móvel Heiken Asch ATR adaptável à volatilidade

ATR EMA HEIKIN ASHI Trailing Stop TREND FOLLOWING volatility STOP LOSS
Data de criação: 2025-08-18 17:33:13 última modificação: 2025-08-18 17:33:13
cópia: 0 Cliques: 283
2
focar em
319
Seguidores

Estratégia de negociação de tendência de stop móvel Heiken Asch ATR adaptável à volatilidade Estratégia de negociação de tendência de stop móvel Heiken Asch ATR adaptável à volatilidade

Visão geral

A estratégia de negociação de stop loss de Heikin Ashi ATR é uma estratégia de negociação sistematizada projetada especificamente para identificar tendências de mercados financeiros e gerenciar riscos. A estratégia é baseada na técnica de filtragem de Heikin Ashi para filtrar o ruído do mercado, combinando um sistema de stop loss de rastreamento com o ajuste dinâmico da média real da amplitude do ATR, para gerar sinais de negociação através do cruzamento de índices de média móvel EMA.

Princípio da estratégia

O princípio central da estratégia é baseado na sinergia de vários componentes tecnológicos-chave:

  1. Haiken Achim, um mapa de filtragemA estratégia oferece três diferentes modelos de cálculo de Heiken et al. para reduzir o ruído de curto prazo do mercado e destacar a direção de tendências potenciais. O modelo de cálculo manual fornece os resultados mais transparentes e confiáveis, enquanto a função embutida usa pilares históricos confirmados para evitar o redesenho.

  2. ATR rastrear o mecanismo de paradaO ATR é uma medida dinâmica da volatilidade do mercado, combinada com parâmetros definidos pelo usuário (valores-chave e períodos de ATR) para calibrar a sensibilidade de rastreamento de paradas, permitindo-lhe se adaptar a diferentes ambientes de volatilidade do mercado. Este mecanismo é projetado para fornecer pontos de saída dinâmicos, proteger fundos e bloquear ganhos durante o desenvolvimento de tendências.

  3. Geração de sinal de cruzamento EMAOs sinais de entrada e de saída são derivados da interação entre o preço de Heiken Ashe e a média móvel do índice (EMA). Os eventos de cruzamento entre esses dois componentes são usados para identificar objetivamente a mudança de dinâmica e emitir sinais de entrada ou saída potencialmente múltiplos.

  4. Implementação rigorosa de stop lossA estratégia contém uma função de stop loss opcional, configurável como uma porcentagem do preço de entrada ou um desvio de pontos fixos. É importante que o stop loss seja executado com base no preço real do mercado, e não no valor sintético do Heiken Achievement, garantindo que o gerenciamento de risco seja baseado na liquidez real do mercado e no nível de preços.

  5. Protocolo de retornoA estratégia é configurada para ser retrospectiva realista, usando fill_orders_on_standard_ohlc=true para simular a execução de pedidos no preço OHLC padrão e contendo um filtro de data configurável para definir um período histórico específico para avaliação de desempenho.

  6. Visualização de dadosOs scripts fornecem sinais de compra/venda, a sobreposição de gráficos ATR para rastrear os níveis de stop loss e stop loss, e tabelas de informações que mostram os parâmetros da estratégia em tempo real, o estado atual da posição, a direção da tendência e os níveis de preços-chave.

Vantagens estratégicas

  1. Capacidade de filtragem de ruídoA tecnologia de Heiken Achart filtra eficazmente o ruído do mercado de curto prazo, ajudando os comerciantes a se concentrarem nas tendências de mercado mais importantes e reduzindo a interferência de falsos sinais.

  2. Gestão de Riscos DinâmicosO mecanismo de tracking stop, baseado no ATR, é capaz de se ajustar automaticamente à volatilidade do mercado, oferecendo um stop mais flexível quando a volatilidade aumenta, apertando a proteção quando a volatilidade diminui, otimizando a relação de risco-retorno.

  3. Sinais de entrada e saída objetivosOs sinais gerados pelo cruzamento da EMA eliminam o julgamento subjetivo, tornando as decisões de negociação mais sistemáticas e repetitivas, ajudando a manter a disciplina emocional.

  4. Execução de preços reais de mercadoA estratégia consiste em usar o preço real do mercado (em vez do preço sintético de Heiken Ach) para executar negociações e travar perdas, fornecendo resultados de retorno mais precisos e mais próximos do ambiente de negociação real.

  5. Comentários visuais e monitoramentoO sistema de informação integrado e os indicadores visuais fornecem estatísticas estratégicas em tempo real e pontos-chave de dados, facilitando a avaliação e o monitoramento rápidos e aumentando a capacidade de decisão.

  6. Configuração de parâmetros flexívelOs parâmetros-chave ajustáveis (valores de sensibilidade, ATR, Heiken-Ashi e parâmetros de parada) permitem que a estratégia se adapte a diferentes ambientes de mercado e preferências de risco dos traders.

  7. Só uma estratégia multi-cabeçaO objetivo é capturar tendências de alta, evitando o potencial risco de queda de capital, especialmente para mercados pessimistas de longo prazo, como certas criptomoedas.

Risco estratégico

  1. Risco de reversão de tendênciaComo uma estratégia de acompanhamento de tendências, o ATR pode ser usado como uma estratégia de acompanhamento de tendências e pode ser usado como uma estratégia de acompanhamento de tendências. Como uma estratégia de acompanhamento de tendências, o ATR pode ser usado como uma estratégia de acompanhamento de tendências e como uma estratégia de acompanhamento de tendências.

  2. Parâmetros de optimização de armadilhasOs parâmetros de otimização excessiva podem levar a um encaixe de curva, fazendo com que a estratégia tenha um bom desempenho em dados históricos, mas um mau desempenho em mercados futuros. É recomendável testar em vários mercados e prazos para garantir a estabilidade.

  3. Risco de entradaO sinal de cruzamento do EMA pode aparecer em um estágio mais tardio do desenvolvimento da tendência, resultando em uma posição de entrada desejável. Em mercados fortes, isso pode levar a compras em níveis elevados.

  4. Risco de detonação de danoEm mercados altamente voláteis, mesmo que a tendência geral seja boa, o preço pode tocar o nível de stop loss por um curto período, levando a saídas desnecessárias. É necessário definir cuidadosamente os parâmetros de stop loss de acordo com as características do mercado.

  5. Dependência de um único indicador técnicoA estratégia baseia-se principalmente nos indicadores ATR e EMA, sem levar em conta os fatores fundamentais ou outros indicadores técnicos, podendo perder importantes pontos de inflexão no mercado.

  6. Performance do mercado horizontal a longo prazo: Em mercados horizontais de longo prazo, a estratégia pode produzir vários sinais errados, resultando em uma acumulação de pequenos prejuízos consecutivos. Recomenda-se a utilização quando se confirma que o mercado está em uma situação de tendência.

  7. Ponto de deslizamento e risco de execuçãoEmbora a estratégia tenha levado em consideração os deslizes no feedback, os deslizes e os atrasos de execução nas negociações reais podem ser maiores do que o valor definido, especialmente em mercados com baixa liquidez.

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

  1. Integração de análise de multi-quadros temporaisConsiderando a integração de sinais de confirmação de tendências em prazos mais elevados, executar uma operação somente quando a tendência em prazos mais elevados está alinhada pode aumentar significativamente a taxa de ganho e a taxa de retorno do risco.

  2. Filtro de taxa de flutuaçãoA adição de filtros baseados na volatilidade, a suspensão de negociação ou o ajuste do tamanho das posições durante períodos de alta volatilidade pode reduzir o risco de extrema volatilidade do mercado.

  3. Gestão de posições dinâmicasA realização de um tamanho de posição dinâmico baseado na volatilidade e na situação do mercado, em vez de uma configuração de porcentagem fixa, permite otimizar a eficiência do uso de fundos em diferentes condições de mercado.

  4. Confirmação de múltiplos indicadoresA integração de outros indicadores técnicos complementares (como o índice de força relativa RSI, o indicador aleatório ou MACD) como confirmação secundária pode reduzir a taxa de falsos sinais e melhorar a qualidade das negociações.

  5. Melhorias na estratégia de detenção de perdasA implementação de estratégias de stop loss mais complexas, como o rastreamento de múltiplos de ATR ou stop loss baseados em níveis de suporte/resistência, em vez de simples porcentagens ou pontos fixos, pode se adaptar melhor à estrutura do mercado.

  6. Estratégia de saída refinadaDesenvolvimento de mecanismos de lucro parcial e de saída em lotes mais refinados, que permitam bloquear a parte dos lucros e otimizar a curva de retorno global, mantendo a brecha da tendência.

  7. Identificação do sistema de mercado: adicionar algoritmos de identificação de sistemas de mercado, ajustar automaticamente os parâmetros da estratégia para se adaptar a diferentes estados de mercado (trend, choque ou reversão), aumentar a capacidade de adaptação da estratégia.

  8. Integração de aprendizado de máquinaExplorar técnicas de aprendizagem de máquina para otimizar a seleção de parâmetros ou prever os melhores pontos de entrada/saída pode melhorar ainda mais o desempenho da estratégia e reduzir a intervenção subjetiva.

Resumir

A estratégia de negociação de tendências de rastreamento de perdas do ATR da Heike é um sistema de rastreamento de tendências concebido de forma racional e com risco controlado, especialmente adequado para mercados com maior volatilidade. A estratégia fornece uma estrutura de negociação objetiva e sistematizada, combinando a capacidade de filtragem de ruído do gráfico da Heike, o gerenciamento de risco dinâmico do ATR e a identificação de tendências da EMA.

A principal vantagem da estratégia reside na sua capacidade de gestão de risco adaptável e dinâmica, capaz de ajustar automaticamente os níveis de stop loss em função da volatilidade do mercado, protegendo o capital e bloqueando os lucros. Ao mesmo tempo, a sua rigorosa implementação de stop loss e o seu mecanismo de execução baseado nos preços reais do mercado asseguram a fiabilidade e reprodutividade dos resultados de retrospecção.

No entanto, como uma estratégia de acompanhamento de tendências, pode enfrentar desafios quando o mercado é lateral ou reverte rapidamente. A solidez e o desempenho da estratégia podem ser aumentados ainda mais com a integração de melhorias como análise de múltiplos períodos de tempo, aumento de filtros de taxa de flutuação, otimização do gerenciamento de posições e refinamento da estratégia de saída.

A estratégia fornece uma base sólida para os comerciantes que desejam construir uma metodologia de negociação sistematizada, que pode ser personalizada e ampliada de acordo com as preferências de risco pessoais e as características do mercado, com o potencial de obter retornos ajustados ao risco de forma estável em vários ambientes de mercado.

Código-fonte da estratégia
/*backtest
start: 2024-08-18 00:00:00
end: 2025-08-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"DOGE_USDT","balance":5000}]
*/

//@version=6
strategy(title="Mutanabby_AI | ATR+ | ")  // Ensures realistic execution

// 📊 INPUT PARAMETERS
//=============================================================================
a = input.int(1, title="🔧 Key Value (Sensitivity)", minval=1, maxval=10, 
              tooltip="Lower = More signals, Higher = Fewer signals")
c = input.int(10, title="📈 ATR Period", minval=1, maxval=500,
              tooltip="Period for ATR calculation")

// 🕯️ HEIKIN ASHI METHOD SELECTION
//=============================================================================
ha_method = input.string("Manual Calculation", title="🕯️ Heikin Ashi Method", 
                         options=["Manual Calculation", "ticker.heikinashi()", "Regular Candles"], 
                         tooltip="Manual = Most reliable, ticker.heikinashi = Good, Regular = Standard OHLC")

// 🛡️ STOP LOSS SETTINGS
//=============================================================================
use_stop_loss = input.bool(false, title="🛡️ Enable Stop Loss", 
                           tooltip="Enable stop loss at entry price level")
stop_loss_type = input.string("Percentage", title="📊 Stop Loss Type", 
                               options=["Percentage", "Fixed Points"], 
                               tooltip="Choose stop loss calculation method")
stop_loss_percent = input.float(2.0, title="📉 Stop Loss %", minval=0.1, maxval=50.0, step=0.1,
                                 tooltip="Stop loss percentage below entry price")
stop_loss_points = input.float(10.0, title="📉 Stop Loss Points", minval=0.1, step=0.1,   tooltip="Stop loss in price points below entry price")



// Date condition
date_condition = true

// 🎨 VISUAL SETTINGS
//=============================================================================
show_signals = input.bool(true, title="🎯 Show Buy/Sell Signals")
show_trailing_stop = input.bool(true, title="📈 Show ATR Trailing Stop")
show_stop_loss = input.bool(true, title="🛡️ Show Stop Loss Line")
show_bar_colors = input.bool(true, title="🎨 Color Bars")
show_position_info = input.bool(true, title="📊 Show Position Info")

// 🧮 HEIKIN ASHI CALCULATIONS
//=============================================================================

// METHOD 1: MANUAL HEIKIN ASHI CALCULATION (MOST RELIABLE)
//=============================================================================
// Manual HA calculation - most transparent and reliable
var float ha_open_manual = na
ha_close_manual = (open + high + low + close) / 4
ha_open_manual := na(ha_open_manual[1]) ? (open + close) / 2 : (ha_open_manual[1] + ha_close_manual[1]) / 2
ha_high_manual = math.max(high, math.max(ha_open_manual, ha_close_manual))
ha_low_manual = math.min(low, math.min(ha_open_manual, ha_close_manual))

// METHOD 2: TICKER.HEIKINASHI() (GOOD ALTERNATIVE)
//=============================================================================
// Get Heikin Ashi data via ticker.heikinashi() - non-repainting
ha_ticker = ticker.heikinashi(syminfo.tickerid)
[ha_open_ticker, ha_high_ticker, ha_low_ticker, ha_close_ticker] =   request.security(ha_ticker, timeframe.period, [open[1], high[1], low[1], close[1]],  lookahead=barmerge.lookahead_on)  // Use confirmed bars to prevent repainting

// METHOD 3: REGULAR CANDLES
//=============================================================================
// Regular OHLC data
ha_open_regular = open
ha_high_regular = high
ha_low_regular = low
ha_close_regular = close

// SELECT METHOD BASED ON USER INPUT
//=============================================================================
src = ha_method == "Manual Calculation" ? ha_close_manual : 
      ha_method == "ticker.heikinashi()" ? ha_close_ticker : ha_close_regular

source_open = ha_method == "Manual Calculation" ? ha_open_manual : 
              ha_method == "ticker.heikinashi()" ? ha_open_ticker : ha_open_regular
              
source_high = ha_method == "Manual Calculation" ? ha_high_manual : 
              ha_method == "ticker.heikinashi()" ? ha_high_ticker : ha_high_regular
              
source_low = ha_method == "Manual Calculation" ? ha_low_manual : 
             ha_method == "ticker.heikinashi()" ? ha_low_ticker : ha_low_regular

// 📊 ATR TRAILING STOP CALCULATION
//=============================================================================
// Calculate True Range using selected method
tr1 = source_high - source_low
tr2 = math.abs(source_high - src[1])
tr3 = math.abs(source_low - src[1])
tr = math.max(tr1, math.max(tr2, tr3))

// ATR calculation
xATR = ta.sma(tr, c)
nLoss = a * xATR

// ATR Trailing Stop logic
var float xATRTrailingStop = na
xATRTrailingStop := if src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0)
    math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0)
    math.min(nz(xATRTrailingStop[1]), src + nLoss)
else if src > nz(xATRTrailingStop[1], 0)
    src - nLoss
else
    src + nLoss

// Position state tracking
var int pos = na
pos := if src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0)
    1
else if src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0)
    -1
else
    nz(pos[1], 0)

// 🎯 SIGNAL GENERATION
//=============================================================================
// EMA for crossover detection
ema_val = ta.ema(src, 1)

// Crossover conditions
above = ta.crossover(ema_val, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema_val)

// Buy and sell signals
buy_signal = src > xATRTrailingStop and above
sell_signal = src < xATRTrailingStop and below

// Trend direction
is_uptrend = src > xATRTrailingStop
is_downtrend = src < xATRTrailingStop

// 🛡️ STOP LOSS CALCULATION
//=============================================================================
var float entry_price = na
var float stop_loss_level = na

// Calculate stop loss level
calculate_stop_loss(entry_price_val) =>
    if stop_loss_type == "Percentage"
        entry_price_val * (1 - stop_loss_percent / 100)
    else
        entry_price_val - stop_loss_points

// 📈 LONG ONLY STRATEGY LOGIC
//=============================================================================
var bool in_long_position = false

// Entry condition: Buy signal when not in position
long_entry = buy_signal and date_condition and not in_long_position

// Exit conditions - CRITICAL: Use real prices for stop loss, not HA prices
atr_exit = sell_signal and date_condition and in_long_position
stop_loss_hit = use_stop_loss and in_long_position and low <= stop_loss_level  // Uses real low price

// Combined exit condition
long_exit = atr_exit or stop_loss_hit

// Execute trades - Orders execute at REAL market prices
if long_entry
    strategy.entry("LONG", strategy.long, comment="🚀 LONG")
    in_long_position := true
    entry_price := close  // REAL entry price, not HA price
    stop_loss_level := use_stop_loss ? calculate_stop_loss(entry_price) : na

if long_exit
    exit_reason = stop_loss_hit ? "🛡️ STOP LOSS" : "💰 ATR EXIT"
    strategy.close("LONG", comment=exit_reason)
    in_long_position := false
    entry_price := na
    stop_loss_level := na

// 🎨 VISUAL ELEMENTS
//=============================================================================
// Trailing stop line color
stop_color = pos == 1 ? color.green : pos == -1 ? color.red : color.blue

// Plot ATR Trailing Stop
plot(show_trailing_stop ? xATRTrailingStop : na, 
     color=stop_color, 
     linewidth=2, 
     title="ATR Trailing Stop")

// Plot Stop Loss Level
plot(show_stop_loss and use_stop_loss and in_long_position ? stop_loss_level : na,
     color=color.new(color.red, 0), 
     linewidth=2, 
     style=plot.style_linebr,
     title="Stop Loss Level")

// Plot buy/sell signals
plotshape(show_signals and buy_signal, 
          title="Buy Signal", 
          text="BUY", 
          style=shape.labelup, 
          location=location.belowbar,
          color=color.new(color.green, 0), 
          textcolor=color.white, 
          size=size.small)

plotshape(show_signals and sell_signal, 
          title="Sell Signal", 
          text="SELL", 
          style=shape.labeldown, 
          location=location.abovebar,
          color=color.new(color.red, 0), 
          textcolor=color.white, 
          size=size.small)

// Plot stop loss hit signal
plotshape(show_signals and stop_loss_hit, 
          title="Stop Loss Hit", 
          text="SL", 
          style=shape.labeldown, 
          location=location.abovebar,
          color=color.new(color.orange, 0), 
          textcolor=color.white, 
          size=size.small)

// Bar coloring
barcolor(show_bar_colors ? (is_uptrend ? color.new(color.green, 70) : 
         is_downtrend ? color.new(color.red, 70) : na) : na)

// Position status background
bgcolor(show_position_info and strategy.position_size > 0 ?  color.new(color.green, 95) : show_position_info and strategy.position_size == 0 ?   color.new(color.gray, 98) : na,   title="Position Status")

// Entry price line - shows REAL entry price
plot(show_position_info and strategy.position_size > 0 ? strategy.position_avg_price : na,
     color=color.new(color.blue, 0), 
     linewidth=1, 
     style=plot.style_linebr, 
     title="Entry Price")

// 📊 INFORMATION TABLE
//=============================================================================
if show_position_info and barstate.islast
    var table info_table = table.new(position.top_right, 3, 11, 
                                      bgcolor=color.white, 
                                      border_width=1,
                                      border_color=color.gray,
                                      frame_width=1,
                                      frame_color=color.black)
    
    // Table headers
    table.cell(info_table, 0, 0, "Mutanabby_AI | Manual HA | ATR | SL", text_color=color.white, bgcolor=color.blue, text_size=size.small)
    table.cell(info_table, 1, 0, "", text_color=color.white, bgcolor=color.blue)
    table.cell(info_table, 2, 0, "", text_color=color.white, bgcolor=color.blue)
    
    // Strategy info
    table.cell(info_table, 0, 1, "HA Method:", text_color=color.rgb(10, 10, 10), text_size=size.small)
    method_color = ha_method == "Manual Calculation" ? color.green : 
                   ha_method == "ticker.heikinashi()" ? color.blue : color.gray
    table.cell(info_table, 1, 1, ha_method, text_color=method_color, text_size=size.small)
    
    table.cell(info_table, 0, 2, "Key Value:", text_color=color.rgb(10, 10, 10), text_size=size.small)
    table.cell(info_table, 1, 2, str.tostring(a), text_color=color.blue, text_size=size.small)
    
    table.cell(info_table, 0, 3, "ATR Period:", text_color=color.rgb(2, 2, 2), text_size=size.small)
    table.cell(info_table, 1, 3, str.tostring(c), text_color=color.blue, text_size=size.small)
    
    table.cell(info_table, 0, 4, "Stop Loss:", text_color=color.rgb(3, 3, 3), text_size=size.small)
    table.cell(info_table, 1, 4, use_stop_loss ? "ON" : "OFF", 
               text_color=use_stop_loss ? color.green : color.gray, text_size=size.small)
    
    table.cell(info_table, 0, 5, "Position:", text_color=color.rgb(3, 3, 3), text_size=size.small)
    table.cell(info_table, 1, 5, strategy.position_size > 0 ? "LONG" : "NONE", 
               text_color=strategy.position_size > 0 ? color.green : color.gray, text_size=size.small)
    
    table.cell(info_table, 0, 6, "Trend:", text_color=color.rgb(0, 0, 0), text_size=size.small)
    table.cell(info_table, 1, 6, is_uptrend ? "UP" : "DOWN", 
               text_color=is_uptrend ? color.green : color.red, text_size=size.small)
    
    table.cell(info_table, 0, 7, "Current Price:", text_color=color.black, text_size=size.small)
    table.cell(info_table, 1, 7, str.tostring(close, "#.##"), text_color=color.black, text_size=size.small)
    
    table.cell(info_table, 0, 8, "Trailing Stop:", text_color=color.black, text_size=size.small)
    table.cell(info_table, 1, 8, str.tostring(xATRTrailingStop, "#.##"), text_color=color.blue, text_size=size.small)
    
    // Show stop loss level if enabled and in position
    if use_stop_loss and in_long_position
        table.cell(info_table, 0, 9, "Stop Loss:", text_color=color.black, text_size=size.small)
        table.cell(info_table, 1, 9, str.tostring(stop_loss_level, "#.##"), text_color=color.red, text_size=size.small)
    else
        table.cell(info_table, 0, 9, "Stop Loss:", text_color=color.black, text_size=size.small)
        table.cell(info_table, 1, 9, "N/A", text_color=color.gray, text_size=size.small)
    
    table.cell(info_table, 0, 10, "Last Signal:", text_color=color.black, text_size=size.small)
    signal_text = buy_signal ? "BUY" : sell_signal ? "SELL" : stop_loss_hit ? "STOP LOSS" : "NONE"
    signal_color = buy_signal ? color.green : sell_signal ? color.red : stop_loss_hit ? color.orange : color.gray
    table.cell(info_table, 1, 10, signal_text, text_color=signal_color, text_size=size.small)

// 🚨 ALERTS
//=============================================================================
// Alert conditions
alertcondition(buy_signal, title="🚀 Mutanabby_AI | ATR+ LONG Entry", 
               message="Mutanabby_AI | ATR+ : BUY signal at {{close}}")

alertcondition(sell_signal, title="💰 Mutanabby_AI | ATR+ LONG Exit", 
               message="Mutanabby_AI | ATR+ : SELL signal at {{close}}")

alertcondition(stop_loss_hit, title="🛡️ Mutanabby_AI | ATR+ Stop Loss Hit", 
               message="Mutanabby_AI | ATR+ : STOP LOSS hit at {{close}}")

alertcondition(buy_signal or sell_signal or stop_loss_hit, title="🔔 Mutanabby_AI | ATR+ Any Signal", 
               message="Mutanabby_AI| ATR+ : {{ticker}} - {{close}} - Signal: {{strategy.position_size > 0 ? 'EXIT' : 'ENTRY'}}")

//=============================================================================
// 📝 STRATEGY NOTES:
//
// 🎯 OPTIMAL IMPLEMENTATION for realistic backtesting:
// 📈 Uses manual HA calculation for transparency and reliability
// 💰 Orders execute at REAL market prices (not synthetic HA prices)  
// 🛡️ Stop loss uses real market prices for accurate risk management
// 🔧 Multiple HA methods available for comparison and validation
// ⚡ Added fill_orders_on_standard_ohlc=true for extra protection
// 
// 🎯 METHOD COMPARISON:
// 🥇 Manual Calculation: Most reliable, transparent, no external dependencies
// 🥈 ticker.heikinashi(): Good alternative, uses confirmed bars to prevent repainting
// 🥉 Regular Candles: Standard OHLC for comparison purposes
//
// 💡 BEST PRACTICES IMPLEMENTED:
// ✅ Always run on regular candlestick charts (not native HA charts)
// ✅ Use confirmed/historical HA values to prevent repainting
// ✅ Execute all orders at real market prices
// ✅ Stop loss based on real prices, not synthetic HA prices
// ✅ Entry price tracking uses actual fill prices
// ✅ Transparent calculation methods for verification
//
// 🚨 AVOID:
// ❌ Running strategies directly on TradingView's native HA charts
// ❌ Using current bar HA values (causes repainting)
// ❌ Stop loss based on HA prices instead of real prices
//=============================================================================