
Стратегия представляет собой комплексную торговую систему, которая объединяет опорную точку разворота (CPR), экспоненциальную скользящую среднюю (EMA), индекс относительной силы (RSI) и логику прорыва. Стратегия использует динамический механизм отслеживания стоп-лоссов ATR, выявляет рыночные тенденции и торговые возможности посредством скоординированного взаимодействия нескольких технических индикаторов и реализует динамическое управление рисками. Эта стратегия подходит для внутридневных, среднесрочных и краткосрочных сделок и обладает высокой адаптивностью и возможностями контроля рисков.
Стратегия основана на следующих основных компонентах:
Эта стратегия создает относительно полную торговую систему посредством синергии нескольких технических индикаторов. Динамический механизм стоп-лосса и многомерное подтверждение сигнала обеспечивают лучшие характеристики соотношения риска и доходности. Возможности оптимизации стратегии в основном заключаются в улучшении качества сигнала и совершенствовании управления рисками. Ожидается, что благодаря постоянной оптимизации и корректировке стратегия будет поддерживать стабильную эффективность в различных рыночных условиях.
/*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")