Cette stratégie est un système de trading complet qui combine la plage centrale pivot (CPR), la moyenne mobile exponentielle (EMA), l'indice de force relative (RSI) et la logique de rupture.
La stratégie repose sur plusieurs éléments essentiels:
La stratégie construit un système de trading complet grâce à l'effet synergique de plusieurs indicateurs techniques. Le mécanisme de stop-loss dynamique et la confirmation de signal multidimensionnel fournissent des caractéristiques de risque-rendement favorables. Le potentiel d'optimisation de la stratégie réside principalement dans l'amélioration de la qualité du signal et le raffinement de la gestion des risques.
/*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")