This strategy is a trend-following system based on technical analysis, combining moving averages, RSI momentum indicator, and ATR volatility indicator to validate trading opportunities through multiple signal confirmations. The strategy uses multi-period moving average crossovers to determine market trends, combines RSI momentum to confirm price strength, and finally uses ATR to dynamically set stop-loss and take-profit levels, forming a complete trading system.
The core logic of the strategy includes three key components:
This strategy constructs a logically complete trend-following system by integrating multiple technical indicators. The strategy’s advantages lie in multiple signal validation and dynamic risk management, but attention must also be paid to handling trend delays and false breakouts. Through adding volume confirmation and optimizing parameter settings, the strategy still has significant room for improvement. Overall, this strategy is suitable for operating in clearly trending markets and has good application value for tracking medium to long-term trends.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bullish Engulfing with EMA Crossover and ATR-Based SL/TP with RSI Filter", overlay=true) // Inputs for moving averages short_ema_length = input.int(100, title="Short EMA Length") long_ema_length = input.int(200, title="Long EMA Length") // RSI Input rsi_length = input.int(14, title="RSI Length") rsi_threshold = input.float(50, title="RSI Threshold") // Calculate the Exponential Moving Averages (EMAs) short_ema = ta.ema(close, short_ema_length) long_ema = ta.ema(close, long_ema_length) // Plot EMAs on the chart plot(short_ema, color=color.blue, title="100 EMA") plot(long_ema, color=color.red, title="200 EMA") // Calculate RSI rsi_value = ta.rsi(close, rsi_length) // Plot RSI on a separate panel hline(rsi_threshold, "RSI Threshold", color=color.gray) plot(rsi_value, color=color.purple, title="RSI") // Bullish Engulfing Pattern bullish_engulfing = close > open[1] and open < close[1] and close > open // Define strategy entry condition with RSI filter long_condition = bullish_engulfing and short_ema > long_ema and rsi_value > rsi_threshold // Plot a buy signal when conditions are met plotshape(long_condition, style=shape.labelup, location=location.belowbar, color=color.green, title="Buy Signal", text="BUY") // ATR Calculation atr_length = input.int(14, title="ATR Length") atr_value = ta.atr(atr_length) // Define Stop Loss and Take Profit as levels stop_loss_level = 1.1 * atr_value take_profit_level = 2.0 * atr_value // Execute Strategy Entry if (long_condition) strategy.entry("Buy", strategy.long) // Adjust SL and TP levels using the entry price if (strategy.position_size > 0) // Calculate SL and TP relative to the entry price stop_price = strategy.position_avg_price - stop_loss_level limit_price = strategy.position_avg_price + take_profit_level // Exit strategy with SL and TP strategy.exit("Exit", from_entry="Buy", stop=stop_price, limit=limit_price)