
Die Strategie basiert auf dem Commodity Channel Index (CCI) und zielt darauf ab, bei Überverkauf zu machen und bei Überkauf zu machen. Sie kann auch optional einen Index-Moving Average (EMA) -Filter verwenden, um den Handel nur in Richtung der Trendrichtung zu steuern. Die Strategie bietet auch eine Stop-Loss-Methode, die auf einem festen Prozentsatz oder einem durchschnittlichen realen Bereich (ATR) basiert.
Markttrends mit dem CCI-Wert
Der CCI misst die Dynamik, indem er die aktuellen Preise mit den durchschnittlichen Preisen eines bestimmten Zeitraums vergleicht
CCI über 150 ist Überkauf, unter -100 ist Überverkauf
Optional EMA-Filter
Nur wenn der Preis höher als die EMA ist, machen Sie mehr, wenn der Preis niedriger als die EMA ist
Vermeiden Sie Trendwidrige Geschäfte, indem Sie die EMA nutzen
Zwei Arten von Stop Loss
Ein Stop-Loss-Stop auf Basis eines festen Prozentsatzes: Setzen Sie einen Stop-Loss-Stop mit einem festen Prozentsatz des Einstiegspreises
ATR-basierte Stop-Loss: Stop-Loss wird mit einem Multiplikator des ATR eingestellt und dann auf Basis des RR berechnet
Zulassungsvoraussetzungen
CCI hat mehr als 100 Punkte.
Leerstellen bei 150er Durchfahrt unter CCI
Wenn EMA aktiviert ist, dann nur dann, wenn der Preis höher als EMA ist, und nur dann, wenn der Preis niedriger als EMA ist.
Spielbedingungen
Der Preis hat die Stop-Loss-Grenze erreicht.
CCI wieder in Überkauf- und Überverkaufszone
Karte
Die klassische Verwendung des CCI-Indikators, um Überkaufe und Überverkäufe zu ermitteln
Optionale EMAs sorgen dafür, dass nur in Richtung des Trends gehandelt wird und keine Umkehrungen vorgenommen werden
Zwei Arten von Stop-Loss-Stopp-Methoden zur Verfügung gestellt, wobei die Parameter für die Stop-Loss-Stopp-Methode an den Markt angepasst werden können
Nach dem CCI-Indikator wieder in die überkaufte/überverkaufte Zone zu gelangen, um die Gewinne zu lockern
Die Karte zeigt CCI-Signal, leicht zu lesen
Die Strategie ist klar und einfach zu verstehen und zu optimieren.
Verzögerung des CCI-Wertes, möglicherweise fehlende Umkehrung oder Fehlsignalisierung
Eine falsche Einstellung der EMA-Parameter kann einen Trend verpassen oder die Strategie ungültig machen
Der Prozentsatz der Stop-Loss-Sperre ist schwer an Marktveränderungen anzupassen, wobei ein breiter Parameter festgelegt wird.
Die ATR-Stoppschaltung ist zeitlich empfindlich und sollte auf optimale Parameter eingestellt werden.
Rücknahme-Risiken sind hoch, Positionsmanagement sollte entsprechend angepasst werden
Effektivität Der Indikatorparameter sollte mit der Veränderung des Marktumfelds bewertet werden
Bewertung der CCI-Parameter für verschiedene Perioden, um die optimale Kombination zu finden
Verschiedene EMA-Zyklen testen, um die am besten geeigneten Trend-Beschluss-Zyklen zu ermitteln
Anpassung der Stop-Loss-Stopp-Parameter zur Erzielung des optimalen Risiko-Gewinn-Verhältnisses
Zusätzliche Filterbedingungen, wie z. B. Transaktionsvolumen, werden hinzugefügt, um falsche Signale weiter zu filtern.
Vergleichen Sie Trendlinien oder Grafiken mit Formen, um die Effektivität zu verbessern
Erhöhung der Risikomanagement-Strategie, z. B. die Festlegung von Positionen, um Rücknahme-Risiken zu kontrollieren
Umfassende Rückverfolgung verschiedener Marktumgebungsdaten, dynamische Anpassungsparameter
Die Strategie nutzt die klassische Überkauf-Überverkauf-Prinzipien des CCI-Indikators zum Einstieg. Die Richtung des Trends kann mit einem EMA-Filter gesteuert werden. Es bietet zwei Arten von Stop-Loss-Stopps, um die Anpassung zu erleichtern.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alifer123
//@version=5
// strategy("CCI+EMA Strategy with Percentage or ATR TP/SL [Alifer]", shorttitle = "CCI_EMA_%/ATR_TP/SL", overlay=false,
// initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.045)
length = input(14, "CCI Length")
overbought = input.int(150, step = 10, title = "Overbought")
oversold = input.int(-140, step = 10, title = "Oversold")
src = hlc3
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
// EMA
useEMA = input(true, "Use EMA", tooltip = "Only enters long when price is above the EMA, only enters short when price is below the EMA")
emaLength = input(55, "EMA Length")
var float ema = na
if useEMA
ema := ta.ema(src, emaLength)
// Take Profit and Stop Loss Method
tpSlMethod_percentage = input(true, "Percentage TP/SL", group="TP/SL Method")
tpSlMethod_atr = input(false, "ATR TP/SL", group="TP/SL Method")
// Percentage-based Take Profit and Stop Loss
tp_percentage = input.float(10.0, title="Take Profit (%)", step=0.1, group="TP/SL Method")
sl_percentage = input.float(10.0, title="Stop Loss (%)", step=0.1, group="TP/SL Method")
// ATR-based Take Profit and Stop Loss
atrLength = input(20, title="ATR Length", group="TP/SL Method")
atrMultiplier = input(4, title="ATR SL Multiplier", group="TP/SL Method")
riskRewardRatio = input(2, title="Risk Reward Ratio", group="TP/SL Method")
// Calculate TP/SL levels based on the selected method, or leave them undefined if neither method is selected
longTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 + tp_percentage / 100) : na
longSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 - sl_percentage / 100) : na
shortTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 - tp_percentage / 100) : na
shortSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 + sl_percentage / 100) : na
if tpSlMethod_atr
longSL := strategy.position_avg_price - ta.atr(atrLength) * atrMultiplier
longTP := ((strategy.position_avg_price - longSL) * riskRewardRatio) + strategy.position_avg_price
shortSL := strategy.position_avg_price + ta.atr(atrLength) * atrMultiplier
shortTP := ((strategy.position_avg_price - shortSL) * riskRewardRatio) - strategy.position_avg_price
// Enter long position when CCI crosses below oversold level and price is above EMA
longCondition = ta.crossover(cci, oversold) and (not useEMA or close > ema)
if longCondition
strategy.entry("Buy", strategy.long)
// Enter short position when CCI crosses above overbought level and price is below EMA
shortCondition = ta.crossunder(cci, overbought) and (not useEMA or close < ema)
if shortCondition
strategy.entry("Sell", strategy.short)
// Close long positions with Take Profit or Stop Loss
if strategy.position_size > 0
strategy.exit("Long Exit", "Buy", limit=longTP, stop=longSL)
// Close short positions with Take Profit or Stop Loss
if strategy.position_size < 0
strategy.exit("Short Exit", "Sell", limit=shortTP, stop=shortSL)
// Close positions when CCI crosses back above oversold level in long positions or below overbought level in short positions
if ta.crossover(cci, overbought)
strategy.close("Buy")
if ta.crossunder(cci, oversold)
strategy.close("Sell")
// Plotting
color_c = cci > overbought ? color.red : (cci < oversold ? color.green : color.white)
plot(cci, "CCI", color=color_c)
hline(0, "Middle Band", color=color.new(#787B86, 50))
obband = hline(overbought, "OB Band", color=color.new(#78867a, 50))
osband = hline(oversold, "OS Band", color=color.new(#867878, 50))
fill(obband, osband, color=color.new(#787B86, 90))