
A estratégia é um sistema de negociação baseado em cruzamentos de Média Móvel Exponencial (EMA), combinados com Faixa Verdadeira Média (ATR) para alcançar um gerenciamento de risco dinâmico. A estratégia usa linhas EMA de curto e longo prazo para capturar as mudanças de momentum nas tendências de preços e usa ATR para definir dinamicamente posições de take-profit e stop-loss, alcançando controle preciso dos riscos de negociação.
A lógica central da estratégia é baseada nos sinais de cruzamento de duas médias móveis exponenciais de períodos diferentes (9 e 21). Quando a EMA de curto prazo cruza a EMA de longo prazo para cima, um sinal longo é gerado; quando a EMA de curto prazo cruza a EMA de longo prazo para baixo, um sinal curto é gerado. Para melhor gerenciar os riscos, a estratégia introduz um mecanismo dinâmico de stop-profit e stop-loss com base no ATR de 14 períodos. O nível de take-profit é definido como 2 vezes o ATR, e o nível de stop-loss é definido como 1 vez ATR. Esta configuração garante espaço de lucro suficiente e pode controlar riscos a tempo.
Esta estratégia concretiza um sistema de negociação relativamente completo ao combinar o sistema clássico de crossover EMA e o gerenciamento dinâmico de risco ATR. As principais vantagens da estratégia são suas capacidades dinâmicas de gerenciamento de risco e boas características de acompanhamento de tendências. Por meio das direções de otimização sugeridas, ainda há espaço para melhorias adicionais na estratégia. Quando aplicado em tempo real, é recomendável conduzir backtesting e otimização de parâmetros suficientes, além de fazer ajustes apropriados com base nas 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)