
Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan Pivot Point Reference (CPR), Exponential Moving Average (EMA), Relative Strength Index (RSI) dan logika breakout. Strategi ini mengadopsi mekanisme stop loss pelacakan dinamis ATR, mengidentifikasi tren pasar dan peluang perdagangan melalui kerja sama terkoordinasi dari berbagai indikator teknis, dan mewujudkan manajemen risiko yang dinamis. Strategi ini cocok untuk transaksi intraday dan jangka menengah hingga pendek serta memiliki kemampuan beradaptasi dan pengendalian risiko yang kuat.
Strategi ini didasarkan pada komponen inti berikut:
Strategi ini membangun sistem perdagangan yang relatif lengkap melalui sinergi beberapa indikator teknis. Mekanisme stop-loss dinamis dan konfirmasi sinyal multidimensi memberikan karakteristik risiko-pengembalian yang lebih baik. Ruang untuk optimalisasi strategi terutama terletak pada peningkatan kualitas sinyal dan penyempurnaan manajemen risiko. Melalui optimalisasi dan penyesuaian berkelanjutan, strategi ini diharapkan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
/*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")