
A estratégia baseia-se no cruzamento de duas médias móveis ((EMA) para gerar um sinal de negociação. Quando a EMA de curto prazo (20 dias) atravessa a EMA de longo prazo (50 dias) de baixo para cima, gera um sinal de compra; Quando a EMA de curto prazo atravessa a EMA de longo prazo de cima para baixo, gera um sinal de venda.
A estratégia de cruzamento de dupla linha de equilíbrio da EMA é uma estratégia de negociação simples e fácil de entender, adequada ao mercado de tendência. Ela usa a cruz das médias móveis de curto e longo prazo para capturar a mudança da tendência do mercado, enquanto introduz a referência de tendência de longo prazo. Embora a estratégia tenha algumas limitações, como o fraco desempenho em mercados turbulentos e o atraso das médias móveis, a estabilidade e a lucratividade da estratégia podem ser melhoradas pela introdução de outros indicadores, otimização de parâmetros e adição de medidas de controle de risco.
/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy by Peter Gangmei", overlay=true)
// Define the length for moving averages
short_ma_length = input.int(20, "Short MA Length")
long_ma_length = input.int(50, "Long MA Length")
long_ma_200_length = input.int(200, "Long MA 200 Length")
// Define start time for testing
start_time = timestamp(2024, 01, 01, 00, 00)
// Calculate current date and time
current_time = timenow
// Calculate moving averages
ema20 = ta.ema(close, short_ma_length)
ema50 = ta.ema(close, long_ma_length)
ema200 = ta.ema(close, long_ma_200_length)
// Crossing conditions
crossed_above = ta.crossover(ema20, ema50)
crossed_below = ta.crossunder(ema20, ema50)
// Entry and exit conditions within the specified time frame
if true
if (crossed_above)
strategy.entry("Buy", strategy.long)
alert("Buy Condition", alert.freq_once_per_bar_close)
if (crossed_below)
strategy.entry("Sell", strategy.short)
alert("Sell Condition", alert.freq_once_per_bar_close)
// Plotting moving averages for visualization
plot(ema20, color=color.green, title="EMA20")
plot(ema50, color=color.red, title="EMA50")
plot(ema200, color=color.blue, title="EMA200")
// Placing buy and sell markers
plotshape(series=crossed_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=crossed_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")