Diese Strategie basiert auf dem Commodity Channel Index (CCI) Indikator und zielt darauf ab, bei Überverkaufszuständen lang zu gehen und bei Überkaufszuständen kurz zu gehen. Es verwendet auch optional einen Exponential Moving Average (EMA) -Filter, um nur in Richtung des Trends zu handeln. Die Strategie bietet auch einen festen Prozentsatz oder einen durchschnittlichen wahren Bereich (ATR) basierende Stop-Loss und Take-Profit.
Verwendung des CCI-Indikators zur Ermittlung der Marktentwicklung
Die Kommission stellt fest, dass die in den Erwägungsgründen 24 und 25 genannten Maßnahmen nicht in Frage kommen.
CCI über 150 ist überkauft, unter -100 ist überverkauft
Optional EMA-Filter verwenden
Nur lang gehen, wenn der Preis über der EMA liegt, und kurz gehen, wenn er unter der EMA liegt
Verwenden Sie die EMA, um die Trendrichtung zu bestimmen, vermeiden Sie den gegentrendischen Handel
Zwei Arten von Stop Loss und Take Profit
Festprozentualer Stop-Loss- und Take-Profit-Basis: Festprozentualer Einstiegspreis
ATR-basierte Stop-Loss und Take-Profit: Verwenden Sie den ATR-Multiplikator für den Stop-Loss, berechnen Sie die Take-Profit-Bilanz basierend auf der Risikovergütungsquote
Eingangsbedingungen
Bei einer Überschreitung des CCI über -100 geht man lang
Wenn der CCI unter 150 fällt, kurz gehen
Wenn EMA aktiviert ist, wird nur eingegeben, wenn sich der Preis auf der rechten Seite der EMA befindet
Ausgangsbedingungen
Schließung der Position, wenn ein Stop-Loss oder ein Take-Profit erreicht wird
Schließung der Position, wenn die CCI wieder in die Überkauf-/Überverkaufsregion eintritt
Planung
Bei der Ermittlung der Höhe des Zinssatzes wird der Zinssatz für die Ermittlung der Zinssätze für die Ermittlung des Zinssatzes für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze für die Ermittlung der Zinssätze.
Optionale EMA sorgt dafür, dass der Handel mit dem Trend abläuft und Rückschläge vermieden werden
Für die Flexibilität sind zwei Arten von Stop-Loss/Take-Profit vorgesehen
Schließung des CCI-Signals wieder ein Rücklaufgewinn
Die Grafik zeigt die CCI-Signale deutlich.
Einfache und klare Logik, leicht zu verstehen und zu optimieren
CCI hat eine verzögerte Wirkung, kann Umkehrungen verpassen oder falsche Signale geben
Falsche EMA-Parameter können Trends verpassen oder die Strategie unwirksam machen
Festes Stop-Loss-/Take-Profit-Prozentsatz, das sich weniger an Marktveränderungen anpasst
Die ATR-Stop-Loss-/Take-Profit-Regelung, die für die ATR-Periode sensibel ist, sollte die
Größeres Zugriffsrisiko, Anpassung der Positionsgröße
Leistung variiert je nach Marktbedingungen, Parameter neu bewerten
Bewertung von CCI-Perioden zur Suche nach optimalen Parameterkombinationen
Versuche verschiedene EMA-Perioden für die beste Trendschätzung
Anpassung des Stop-Loss-/Take-Profit-Verhältnisses für eine optimale Risikovergütung
Fügen Sie andere Filter wie Lautstärke hinzu, um weitere falsche Signale zu vermeiden
Kombination mit Trendlinien/Chartmustern zur Musterbestätigung
Hinzufügen von Positionsgrößenregeln wie feste Größe zur Steuerung des Drawdowns
Backtest unter verschiedenen Marktbedingungen, dynamische Anpassung
Die Strategie nutzt die klassischen CCI-Überkauft/Überverkauft-Prinzipien für den Einstieg. Der EMA-Filter steuert den Trendhandel. Zwei Arten von Stop-Loss/Take-Profit sorgen für Flexibilität. Das Ploten hebt Signale klar hervor. Einfache und klare Logik, leicht zu verstehen und zu optimieren. Weitere Verbesserungen können durch Parameter-Tuning, Hinzufügen von Filtern, Risikokontrolle usw. vorgenommen werden.
/*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))