
Die Strategie ist ein Handelssystem, das auf der Analyse von mehreren Zeitzyklen basiert und hauptsächlich auf den zentralen Preisbereich (CPR), dem Index-Moving-Average (EMA) und dem relativ starken Indikator (RSI) basiert. Die Strategie identifiziert Markttrends und wichtige Unterstützungswiderstände anhand des Tageslinie-CPR-Niveaus, der wöchentlichen Eröffnungspreise und der 20-Zyklus-EMA und führt die Transaktionen in Verbindung mit einer synthetischen Transaktionsbestätigung durch.
Der Kern der Strategie besteht darin, nach Handelsmöglichkeiten zu suchen, indem die Beziehung zwischen dem Preis und dem CPR-Niveau analysiert wird. Der CPR besteht aus einem Pivotpunkt (Pivot), einer unteren Mittellinie (BC) und einer oberen Mittellinie (TC). Wenn der Preis TC überschreitet und der Markt in der Mehrkopfphase ist, gibt das System mehrere Signale aus.
Es handelt sich um eine strukturierte, logisch klare Trendverfolgungsstrategie, die das Handelsrisiko durch die kombinierte Verwendung von mehreren technischen Indikatoren effektiv steuert. Die Hauptvorteile der Strategie liegen in ihrer flexiblen Parameter-Einstellung und ausgefeilten Risikomanagement-Mechanismen, aber gleichzeitig erfordert es, dass der Händler die Veränderungen der Marktumgebung beachtet und die Strategieparameter zeitnah anpasst. Durch die empfohlene Optimierungsrichtung werden die Stabilität und die Profitabilität der Strategie voraussichtlich weiter verbessert.
//@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)