This strategy is a comprehensive trading system that combines Central Pivot Range (CPR), Exponential Moving Average (EMA), Relative Strength Index (RSI), and breakout logic. The strategy employs an ATR-based dynamic trailing stop-loss mechanism, utilizing multiple technical indicators to identify market trends and trading opportunities while implementing dynamic risk management. It is suitable for intraday and medium-term trading, offering strong adaptability and risk control capabilities.
The strategy is based on several core components:
The strategy constructs a comprehensive trading system through the synergistic effect of multiple technical indicators. The dynamic stop-loss mechanism and multi-dimensional signal confirmation provide favorable risk-reward characteristics. Strategy optimization potential mainly lies in improving signal quality and refining risk management. Through continuous optimization and adjustment, the strategy shows promise in maintaining stable performance across various market conditions.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 7h basePeriod: 7h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Enhanced CPR + EMA + RSI + Breakout Strategy", overlay=true) // Inputs ema_short = input(9, title="Short EMA Period") ema_long = input(21, title="Long EMA Period") cpr_lookback = input.timeframe("D", title="CPR Timeframe") atr_multiplier = input.float(1.5, title="ATR Multiplier") rsi_period = input(14, title="RSI Period") rsi_overbought = input(70, title="RSI Overbought Level") rsi_oversold = input(30, title="RSI Oversold Level") breakout_buffer = input.float(0.001, title="Breakout Buffer (in %)") // Calculate EMAs short_ema = ta.ema(close, ema_short) long_ema = ta.ema(close, ema_long) // Request Daily Data for CPR Calculation high_cpr = request.security(syminfo.tickerid, cpr_lookback, high) low_cpr = request.security(syminfo.tickerid, cpr_lookback, low) close_cpr = request.security(syminfo.tickerid, cpr_lookback, close) // CPR Levels pivot = (high_cpr + low_cpr + close_cpr) / 3 bc = (high_cpr + low_cpr) / 2 tc = pivot + (pivot - bc) // ATR for Stop-Loss and Take-Profit atr = ta.atr(14) // RSI Calculation rsi = ta.rsi(close, rsi_period) // Entry Conditions with RSI Filter and Breakout Logic long_condition = ((close > tc) and (ta.crossover(short_ema, long_ema)) and (rsi > 50 and rsi < rsi_overbought)) or (rsi > 80) or (close > (pivot + pivot * breakout_buffer)) short_condition = ((close < bc) and (ta.crossunder(short_ema, long_ema)) and (rsi < 50 and rsi > rsi_oversold)) or (rsi < 20) or (close < (pivot - pivot * breakout_buffer)) // Dynamic Exit Logic long_exit = short_condition short_exit = long_condition // Trailing Stop-Loss Implementation if long_condition strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", trail_points=atr * atr_multiplier, trail_offset=atr * atr_multiplier / 2) if short_condition strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", trail_points=atr * atr_multiplier, trail_offset=atr * atr_multiplier / 2) // Plot CPR Levels and EMAs plot(pivot, title="Pivot Point", color=color.orange, linewidth=2) plot(tc, title="Top CPR", color=color.green, linewidth=2) plot(bc, title="Bottom CPR", color=color.red, linewidth=2) plot(short_ema, title="Short EMA", color=color.blue, linewidth=1) plot(long_ema, title="Long EMA", color=color.purple, linewidth=1) // Highlight Buy and Sell Signals bgcolor(long_condition ? color.new(color.green, 90) : na, title="Buy Signal Highlight") bgcolor(short_condition ? color.new(color.red, 90) : na, title="Sell Signal Highlight")