Стратегия торговли импульсом прорыва CPR с несколькими таймфреймами

CPR EMA RSI BC TC SMA MA
Дата создания: 2025-02-21 11:45:06 Последнее изменение: 2025-02-21 11:45:06
Копировать: 1 Количество просмотров: 454
2
Подписаться
319
Подписчики

Стратегия торговли импульсом прорыва CPR с несколькими таймфреймами Стратегия торговли импульсом прорыва CPR с несколькими таймфреймами

Обзор

Эта стратегия является торговой системой, основанной на анализе нескольких временных циклов, в основном используя центральные ценовые диапазоны (CPR), индексные движущиеся средние (EMA) и относительно сильные индикаторы (RSI). Стратегия использует уровни CPR на дневной линии, недельные цены открытия и 20-циклические EMA для идентификации рыночных тенденций и ключевых уровней сопротивления поддержки, а также для выполнения сделок в сочетании с объемом подтверждения.

Стратегический принцип

В основе стратегии лежит поиск торговых возможностей, анализируя связь цены с уровнем CPR. CPR состоит из опорных точек (Pivot), нижних центральных линий (BC) и верхних центральных линий (TC). Система посылает многосигналы, когда цена прорывает TC и рынок находится в многополосной фазе; система посылает пустые сигналы, когда цена падает BC и рынок находится в многополосной фазе.

Стратегические преимущества

  1. Механизм многократного подтверждения: в сочетании с тройным подтверждением ценового поведения, направления тенденции и объема сделки повышает надежность торговых сигналов
  2. Динамическое управление рисками: динамическая остановка убытков на основе широты CPR, адаптированная к различным рыночным условиям
  3. Гибкие настройки: регулируемый цикл времени CPR, длина EMA и включение/выключение RSI отклонения от подтверждения
  4. Неасимметричный коэффициент прибыли: использование коэффициента прибыли к риску в размере 1.5:1 повышает долгосрочную прибыльность
  5. Многочасовой анализ: предоставление более полного взгляда на рынок путем интеграции данных о солнечной и солнечной орбитах

Стратегический риск

  1. Риск ложного прорыва: возможны ложные прорывные сигналы на колеблющихся рынках, рекомендуется использовать более строгие условия фильтрации объема сделки
  2. Риск поворота тренда: в точке поворота тренда может произойти большое отступление, риск можно контролировать, уменьшив пределы остановки
  3. Чувствительность к параметрам: показатели стратегии чувствительны к параметрам, таким как длина EMA и общий обмен, которые требуют регулярной оптимизации
  4. Рыночная зависимость: риск-доля прибыли, которую может быть трудно достичь в условиях низкой волатильности
  5. Исполнение скольжения: в быстрых условиях может возникнуть большое скольжение, которое повлияет на эффективность реальной торговли

Направление оптимизации стратегии

  1. Введение механизма самостоятельной адаптации к волатильности: адаптация стоп-лосс и прибыльных целей к динамике волатильности рынка
  2. Добавление классификации состояния рынка: сегментирование тенденций и консолидация рынка с использованием различных параметров торговли
  3. Оптимизация фильтров загрузки: учитывание изменений загрузки относительно простых средних линий сравнения
  4. Совершенствование механизма выхода из игры: увеличение мобильного стоп-лоста и частично прибыльный конец функции
  5. Временная фильтрация: избегайте торговли в определенные периоды времени, такие как периоды высокой волатильности перед открытием и закрытием рынка

Подвести итог

Это целостная, логически ясная стратегия отслеживания тенденций, которая эффективно контролирует торговые риски с помощью комбинированного использования нескольких технических показателей. Основные преимущества стратегии заключаются в ее гибкой настройке параметров и совершенном механизме управления рисками, но в то же время она требует от трейдеров внимания к изменениям в рыночной среде и своевременной корректировке параметров стратегии.

Исходный код стратегии
//@version=5
strategy("Ahmad Ali Khan CPR Strategy", overlay=true, margin_long=100, margin_short=100)

// ———— Inputs ————
use_daily_cpr = input.bool(true, "Use Daily CPR Levels")
ema_length = input.int(20, "EMA Trend Filter Length")
show_week_open = input.bool(true, "Show Weekly Open Price")
enable_divergence = input.bool(true, "Enable RSI Divergence Check")

// ———— Daily CPR Calculation ————
daily_high = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
daily_low = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
daily_close = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)

pivot = (daily_high + daily_low + daily_close) / 3
bc = (daily_high + daily_low) / 2
tc = pivot + (pivot - bc)

// ———— Weekly Open Price ————
weekly_open = request.security(syminfo.tickerid, "W", open, lookahead=barmerge.lookahead_on)

// ———— Trend Analysis ————
ema_trend = ta.ema(close, ema_length)
market_phase = close > ema_trend ? "Bullish" : "Bearish"

// ———— Momentum Confirmation ————
rsi_length = 14
rsi = ta.rsi(close, rsi_length)
bullish_div = ta.valuewhen(ta.crossover(rsi, 30), low, 0) > ta.valuewhen(ta.crossover(rsi, 30), low, 1)
bearish_div = ta.valuewhen(ta.crossunder(rsi, 70), high, 0) < ta.valuewhen(ta.crossunder(rsi, 70), high, 1)

// ———— Plotting ————
// CPR Levels
plot(pivot, "Pivot", color=color.blue, linewidth=2)
plot(bc, "BC", color=color.red, linewidth=2)
plot(tc, "TC", color=color.green, linewidth=2)
fill(plot(bc), plot(tc), color=color.new(color.purple, 90))

// Weekly Open
plot(show_week_open ? weekly_open : na, "Weekly Open", color=color.orange, linewidth=2)

// EMA Trend
plot(ema_trend, "EMA Trend", color=color.white, linewidth=2)

// ———— Strategy Logic ————
long_condition = 
  close > tc and 
  market_phase == "Bullish" and 
  (not enable_divergence or bullish_div) and
  volume > ta.sma(volume, 20)

short_condition = 
  close < bc and 
  market_phase == "Bearish" and 
  (not enable_divergence or bearish_div) and
  volume > ta.sma(volume, 20)

// ———— Risk Management ————
cpr_width = tc - bc
stop_loss_long = bc - (0.5 * cpr_width)
take_profit_long = tc + (1.5 * cpr_width)
stop_loss_short = tc + (0.5 * cpr_width)
take_profit_short = bc - (1.5 * cpr_width)

// ———— Execute Orders ————
if long_condition
    strategy.entry("Long", strategy.long)
    strategy.exit("XL", "Long", stop=stop_loss_long, limit=take_profit_long)
    
if short_condition
    strategy.entry("Short", strategy.short)
    strategy.exit("XS", "Short", stop=stop_loss_short, limit=take_profit_short)

// ———— Signal Plotting ————
plotshape(long_condition, "Buy", shape.labelup, location.belowbar, color=color.green, text="BUY", textcolor=color.white)
plotshape(short_condition, "Sell", shape.labeldown, location.abovebar, color=color.red, text="SELL", textcolor=color.white)