This strategy is a trend-following trading system that combines dual Exponential Moving Averages (EMA) with the Relative Strength Index (RSI). Operating on a 5-minute timeframe, it captures market trends through the crossover of short-term and long-term EMAs along with RSI confirmation, while incorporating fixed percentage take-profit and stop-loss for risk management.
The strategy is based on the following core components:
This is a complete trading system combining technical indicators and risk management. The strategy effectively identifies trends through EMA and RSI collaboration while controlling risk using fixed take-profit and stop-loss levels. Although it has certain limitations, the suggested optimization directions can further enhance the strategy’s stability and profitability. The strategy is suitable for traders seeking steady returns, particularly in markets with clear trends.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("5-Minute EMA + RSI Strategy", overlay=true, shorttitle="EMA RSI") // Inputs ema_short_length = input.int(9, title="Short EMA Length", minval=1) ema_long_length = input.int(21, title="Long EMA Length", minval=1) rsi_length = input.int(14, title="RSI Length") rsi_overbought = input.int(70, title="RSI Overbought Level") rsi_oversold = input.int(30, title="RSI Oversold Level") // Calculate EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) // Calculate RSI rsi = ta.rsi(close, rsi_length) // Plot EMAs plot(ema_short, title="Short EMA", color=color.blue, linewidth=2) plot(ema_long, title="Long EMA", color=color.red, linewidth=2) // Conditions for Entries long_condition = ta.crossover(ema_short, ema_long) and rsi > 50 short_condition = ta.crossunder(ema_short, ema_long) and rsi < 50 // Execute Trades if (long_condition) strategy.entry("Buy", strategy.long) if (short_condition) strategy.entry("Sell", strategy.short) // Risk Management: Take Profit & Stop Loss take_profit_perc = input.float(1.5, title="Take Profit %", step=0.1) // 1.5% target stop_loss_perc = input.float(0.5, title="Stop Loss %", step=0.1) // 0.5% stop strategy.exit("Take Profit/Stop Loss", "Buy", profit=take_profit_perc, loss=stop_loss_perc) strategy.exit("Take Profit/Stop Loss", "Sell", profit=take_profit_perc, loss=stop_loss_perc) // Add Visual Alerts plotshape(long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)