Esta é uma estratégia de seguimento de tendências baseada em cruzamento de média móvel exponencial (EMA) e confirmação do índice de força relativa (RSI). A estratégia combina sinais de cruzamento de EMA de curto e longo prazo com confirmação de impulso do RSI, ao mesmo tempo em que incorpora um mecanismo de stop-loss baseado em porcentagem.
A estratégia emprega um mecanismo duplo de filtragem de indicadores técnicos: primeiro, identifica pontos de reversão de tendência potenciais através do cruzamento da EMA de curto prazo (9 períodos) e da EMA de longo prazo (21 períodos). Os sinais de compra são gerados quando a EMA de curto prazo cruza acima da EMA de longo prazo e o valor do RSI está acima do nível especificado. Os sinais de venda ocorrem quando a EMA de curto prazo cruza abaixo da EMA de longo prazo e o valor do RSI está abaixo do nível especificado. Além disso, a estratégia incorpora um mecanismo de stop-loss baseado em porcentagem, definindo níveis dinâmicos de stop-loss para cada negociação para controlar efetivamente o risco de queda.
Esta estratégia constrói um sistema de negociação de tendência completa através da combinação de médias móveis e indicadores de momento. Suas principais vantagens estão em seu mecanismo de confirmação de sinal confiável e sistema abrangente de controle de risco. Embora existam algumas limitações inerentes, o desempenho geral da estratégia pode ser melhorado através das direções de otimização propostas. Esta é uma estrutura de estratégia robusta adequada para traders de tendência de médio a longo prazo.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simple Trend Following Strategy", overlay=true) // Inputs shortEMA = input.int(9, title="Short EMA Length", minval=1) longEMA = input.int(21, title="Long EMA Length", minval=1) confirmationRSI = input.int(50, title="RSI Confirmation Level", minval=1, maxval=100) stopLossPercent = input.float(2, title="Stop Loss Percentage", minval=0.1) // Stop Loss percentage // Calculations emaShort = ta.ema(close, shortEMA) emaLong = ta.ema(close, longEMA) rsiValue = ta.rsi(close, 14) // Buy and Sell Conditions buySignal = ta.crossover(emaShort, emaLong) and rsiValue > confirmationRSI sellSignal = ta.crossunder(emaShort, emaLong) and rsiValue < confirmationRSI // Plotting Signals plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Plotting EMAs plot(emaShort, title="Short EMA", color=color.yellow) plot(emaLong, title="Long EMA", color=color.purple) // Strategy logic strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal) // Calculate stop loss price based on stopLossPercent longStopLossPrice = strategy.position_avg_price * (1 - stopLossPercent / 100) shortStopLossPrice = strategy.position_avg_price * (1 + stopLossPercent / 100) // Draw stop loss line for long positions if (strategy.position_size > 0) // For long positions line.new(x1=bar_index, y1=longStopLossPrice, x2=bar_index + 1, y2=longStopLossPrice, color=color.red, width=2, style=line.style_dashed) // Draw stop loss line for short positions if (strategy.position_size < 0) // For short positions line.new(x1=bar_index, y1=shortStopLossPrice, x2=bar_index + 1, y2=shortStopLossPrice, color=color.green, width=2, style=line.style_dashed)