A Estratégia de Tendência de Alta Multi-EMA é uma estratégia de tendência baseada em múltiplas médias móveis exponenciais (EMA) de diferentes períodos para determinação de tendência.
A estratégia emprega 6 EMAs de períodos de 10, 20, 50, 100, 150 e 200 dias. Essas EMAs são usadas para determinar o estágio cíclico atual do mercado.
Em especial, a estratégia será duradoura se estiverem preenchidas as seguintes condições:
Após a abertura de uma posição longa, um stop loss de 8% é usado para bloquear os lucros. Isso significa que a posição será mantida aberta enquanto o preço não cair mais de 8% do preço de entrada. Uma vez que o drawdown exceda 8%, a posição será fechada para parar a perda.
Em resumo, a ideia-chave desta estratégia é entrar em tendência de alta quando confirmado por alinhamento múltipla EMA, e usar stop loss para bloquear os lucros.
A estratégia de tendência de alta multi-EMA tem os seguintes pontos fortes principais:
Há também alguns riscos a considerar para esta estratégia:
Para enfrentar estes riscos, podemos otimizar ajustando os períodos de EMA ou incorporando indicadores auxiliares para um melhor julgamento.
Tendo em conta as características desta estratégia, as futuras otimizações podem centrar-se nos seguintes aspectos:
Em geral, a Estratégia de Tendência de Touro Multi-EMA é um sistema robusto e confiável de tendência, equilibrando a determinação da tendência e o controle de risco.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('SirSeff\'s EMA Rainbow', overlay=true) // Testing Start dates testStartYear = input(2000, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) //Stop date if you want to use a specific range of dates testStopYear = input(2100, 'Backtest Stop Year') testStopMonth = input(12, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false // Component Code Stop //TSP trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01 longStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - trailStop) math.max(stopValue, longStopPrice[1]) else 0 //PLOTS plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop') plot(ta.ema(close, 20)) plot(ta.ema(close, 50)) plot(ta.ema(close, 100)) plot(ta.ema(close, 150)) plot(ta.ema(close, 200)) //OPEN longCondition = ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200) if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod() strategy.entry("BUY1", strategy.long) if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod() strategy.entry("BUY2'", strategy.long) //CLOSE @ TSL if strategy.position_size > 0 and testPeriod() strategy.exit(id='TSP', stop=longStopPrice)