Esta estratégia é um sistema de negociação baseado em cruzamento de média móvel exponencial (EMA), combinado com faixa média verdadeira (ATR) para gestão de risco dinâmica.
A lógica central da estratégia é baseada em sinais de cruzamento entre duas EMAs de períodos diferentes (9 e 21). Um sinal de compra é gerado quando a EMA de curto prazo cruza acima da EMA de longo prazo, enquanto um sinal de venda é gerado quando a EMA de curto prazo cruza abaixo da EMA de longo prazo. Para gerenciar melhor o risco, a estratégia incorpora um mecanismo dinâmico de take-profit e stop-loss baseado em ATR de 14 períodos, com níveis de take-profit definidos em 2x ATR e níveis de stop-loss em 1x ATR, garantindo lucro potencial suficiente enquanto mantém o controle de risco oportuno.
Esta estratégia cria um sistema de negociação abrangente, combinando o clássico sistema de crossover da EMA com a gestão de risco ATR dinâmica. Seus principais pontos fortes estão nas capacidades de gestão de risco dinâmico e características de tendência efetivas. Através das direções de otimização sugeridas, há espaço para melhoria adicional. Para a implementação de negociação ao vivo, recomenda-se realizar um backtesting completo e otimização de parâmetros, com ajustes apropriados com base em características específicas do mercado.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved EMA Crossover Strategy", overlay=true) // User-defined inputs for EMAs shortTermLength = input(9, title="Short-Term EMA Length") longTermLength = input(21, title="Long-Term EMA Length") // Dynamic Take Profit and Stop Loss atrLength = input(14, title="ATR Length") atrMultiplierTP = input(2.0, title="ATR Multiplier for Take Profit") atrMultiplierSL = input(1.0, title="ATR Multiplier for Stop Loss") // Calculate EMAs and ATR shortTermEMA = ta.ema(close, shortTermLength) longTermEMA = ta.ema(close, longTermLength) atr = ta.atr(atrLength) // Plot the EMAs plot(shortTermEMA, color=color.blue, title="Short-Term EMA") plot(longTermEMA, color=color.red, title="Long-Term EMA") // Generate Entry Conditions longCondition = ta.crossover(shortTermEMA, longTermEMA) shortCondition = ta.crossunder(shortTermEMA, longTermEMA) // Optional Debugging: Print conditions (you can remove this later) var label longLabel = na var label shortLabel = na if longCondition longLabel := label.new(bar_index, high, "Buy Signal", color=color.green, style=label.style_label_down, textcolor=color.white) if shortCondition shortLabel := label.new(bar_index, low, "Sell Signal", color=color.red, style=label.style_label_up, textcolor=color.white) if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", limit=close + atr * atrMultiplierTP, stop=close - atr * atrMultiplierSL) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", limit=close - atr * atrMultiplierTP, stop=close + atr * atrMultiplierSL)