Esta estratégia calcula a média móvel exponencial (EMA) de períodos rápidos e lentos, traça-os no gráfico e monitora crossovers em tempo real para determinar inversões de tendência. Os sinais de negociação são formados incorporando o oscilador RSI para evitar falsos sinais. Um sinal de compra é gerado quando a EMA rápida cruza acima da EMA lenta. Um sinal de venda é gerado quando a EMA rápida cruza abaixo da EMA lenta.
A estratégia tem uma lógica clara usando crossovers EMA para determinar a reversão da tendência, filtrada pelo RSI para capturar tendências de médio a longo prazo. No entanto, a otimização dos parâmetros EMA/RSI e stop loss, bem como o risco de reversões perdidas e falhas em mercados voláteis permanecem. Com parâmetros ajustados e controles de risco, poderia servir para identificar pontos de virada e formular decisões de investimento.
/*backtest start: 2022-12-18 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend Change with EMA Entry/Exit - Intraday", overlay=true) // Define the fast and slow EMA periods fast_ema_period = input(10, title="Fast EMA Period") slow_ema_period = input(50, title="Slow EMA Period") // Calculate the EMAs ema_fast = ta.ema(close, fast_ema_period) ema_slow = ta.ema(close, slow_ema_period) // Plot the EMAs on the chart plot(ema_fast, title="Fast EMA", color=color.blue, linewidth=2) plot(ema_slow, title="Slow EMA", color=color.orange, linewidth=2) // Detect trend changes (crossovers and crossunders) is_uptrend = ta.crossover(ema_fast, ema_slow) is_downtrend = ta.crossunder(ema_fast, ema_slow) // Relative Strength Index (RSI) rsi_length = input(14, title="RSI Length") overbought_level = input(70, title="Overbought Level") oversold_level = input(30, title="Oversold Level") rsi_value = ta.rsi(close, rsi_length) // Trend Filter is_trending = ta.change(is_uptrend) != 0 or ta.change(is_downtrend) != 0 // Entry and Exit signals enter_long = is_uptrend and rsi_value < overbought_level and is_trending exit_long = is_downtrend and is_trending enter_short = is_downtrend and rsi_value > oversold_level and is_trending exit_short = is_uptrend and is_trending strategy.entry("Buy", strategy.long, when=enter_long) strategy.close("Buy", when=exit_long) strategy.entry("Sell", strategy.short, when=enter_short) strategy.close("Sell", when=exit_short)