
A estratégia é um sistema de acompanhamento de tendências baseado em sinais de cruzamento de EMAs de múltiplos índices. A estratégia constrói um quadro completo de identificação de tendências e execução de negociações, combinando EMAs de 20, 50 e 150 períodos. A estratégia utiliza a relação de cruzamento entre EMAs de diferentes períodos para determinar as mudanças na tendência do mercado e o momento específico de negociação.
A estratégia usa três médias móveis indexadas de diferentes períodos: EMA20 para tendências de curto prazo, EMA50 para tendências de médio prazo, EMA150 para tendências de longo prazo. Quando a EMA50 atravessa a EMA150, uma cruz de ouro é formada, indicando a formação de uma tendência ascendente de longo prazo; Quando a EMA50 atravessa a EMA150, uma cruz de morte é formada, indicando a formação de uma tendência descendente de longo prazo.
A estratégia, através da utilização conjunta de múltiplos índices de médias móveis, constrói um sistema de negociação de acompanhamento de tendências completo. A lógica da estratégia é clara, a implementação é simples e possui boa escalabilidade.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-01-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA2050150 Crossover Strategy#ganges", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)
// EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
// Cross conditions
longCondition = ta.crossover(ema20, ema50)
flatCondition = ta.crossunder(ema20, ema50)
deathCross = ta.crossunder(ema50, ema150)
goldenCross = ta.crossover(ema50, ema150)
// // Trade execution
// if longCondition and time >= startDate and time <= endDate and strategy.position_size == 0
// strategy.entry("Long", strategy.long)
// if flatCondition and time >= startDate and time <= endDate and strategy.position_size > 0
// strategy.close("Long")
// Plot EMAs
plot(ema20, title="EMA 20", color=color.blue)
plot(ema50, title="EMA 50", color=color.orange)
plot(ema150, title="EMA 150", color=color.red)
// Plot cross signals
plotshape(series=goldenCross, location=location.belowbar, color=color.green, style=shape.labelup, title="Golden Cross", size=size.small, text="Golden Cross")
plotshape(series=deathCross, location=location.abovebar, color=color.red, style=shape.labeldown, title="Death Cross", size=size.small, text="Death Cross")
// Plot buy and sell signals
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.triangleup, title="Buy Signal", size=size.small, text="Buy")
plotshape(series=flatCondition, location=location.abovebar, color=color.orange, style=shape.triangledown, title="Sell Signal", size=size.small, text="Sell")
// Trade execution
if longCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long)
if flatCondition and strategy.position_size > 0
strategy.close("Long")