
Esta é uma estratégia de acompanhamento de tendências baseada em múltiplos cruzamentos de médias móveis exponenciais (MME). Essa estratégia usa o relacionamento de cruzamento da MME de curto prazo de 10 períodos, da MME de médio prazo de 50 períodos e da MME de longo prazo de 200 períodos para capturar tendências de mercado e entrar em negociações longas e curtas quando as condições forem atendidas. A ideia central da estratégia é filtrar o ruído do mercado por meio de médias móveis de vários períodos de tempo, identificar a principal direção da tendência e obter lucros quando a tendência continuar.
A estratégia usa um sistema de crossover triplo EMA como mecanismo de geração de sinal de negociação. Especificamente:
Esta estratégia é um sistema clássico de rastreamento de tendências. Por meio do uso coordenado de múltiplas EMAs, ela não apenas garante a compreensão da tendência principal, mas também permite stop-loss de lucro e perda oportunos. Embora haja um certo atraso, por meio de configurações razoáveis de parâmetros e gerenciamento de risco, retornos estáveis ainda podem ser obtidos no mercado em tendência. Há muito espaço para otimização da estratégia, e o desempenho pode ser melhorado pela introdução de outros indicadores técnicos e pela melhoria das regras de negociação.
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true)
// Inputs for EMA periods
shortEMA = input.int(10, title="Short EMA Period")
mediumEMA = input.int(50, title="Medium EMA Period")
longEMA = input.int(200, title="Long EMA Period")
// Calculating EMAs
emaShort = ta.ema(close, shortEMA)
emaMedium = ta.ema(close, mediumEMA)
emaLong = ta.ema(close, longEMA)
// Plot EMAs
plot(emaShort, color=color.green, title="Short EMA")
plot(emaMedium, color=color.blue, title="Medium EMA")
plot(emaLong, color=color.red, title="Long EMA")
// Conditions for entry and exit
longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong
shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong
closeLongCondition = ta.crossunder(emaShort, emaMedium)
closeShortCondition = ta.crossover(emaShort, emaMedium)
// Debugging labels for unexpected behavior
if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium))
label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white)
// Debugging EMA relationships
if (emaMedium <= emaLong)
label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white)
// Entry logic
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit logic
if (closeLongCondition)
strategy.close("Long")
if (closeShortCondition)
strategy.close("Short")
// Display labels for signals
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")