Dynamische CCI-Ausbruchsstrategie


Erstellungsdatum: 2024-02-18 10:13:21 zuletzt geändert: 2024-02-18 10:13:21
Kopie: 1 Klicks: 664
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische CCI-Ausbruchsstrategie

Überblick

Die dynamische CCI-Break-Strategie ist eine Short-Line-Handelsstrategie, die den CCI-Indikator verwendet, um Übersell-Überkaufe zu identifizieren. Sie kombiniert den CCI-Indikator mit dem WMA-Durchschnitt, um zu handeln, wenn der CCI-Indikator aus der Übersell-Region zurückspringt, und zu verlieren, wenn der CCI-Indikator aus der Überkaufregion zurückkehrt.

Strategieprinzip

Die Strategie nutzt den CCI-Indikator, um Überkauf-Überverkauf in den Märkten zu beurteilen. Der CCI-Indikator kann außergewöhnliche Preisverhältnisse effektiv erkennen. Wenn der CCI-Indikator unter 100 liegt, wird er als Marktüberverkauf angesehen; wenn er über 100 liegt, wird der Markt überkauft.

Gleichzeitig wird die Strategie in Kombination mit der WMA-Mittellinie verwendet, um die Richtung des Trends zu bestimmen. Mehr Signale sind nur dann wirksam, wenn der Schlusskurs über dem WMA-Mittelwert liegt.

Nach dem Eintritt steuert die Strategie die Risiken durch die Verwendung von Stop-Loss-Methoden. Es gibt drei Optionen zum Stop-Loss: Fixed-Strategy-Stop, Stop-Loss für Preisschwankungen und ATR-Stop. Wenn der Preis zu hoch ist, wird der Ausgang von Stop-Loss gestoppt.

Analyse der Stärken

Die Strategie hat folgende Vorteile:

  1. Der CCI-Indikator identifiziert Chancen für eine Umkehrung und kann so überverkaufte und überkaufte Chancen rechtzeitig erfassen.
  2. Es ist wichtig, dass man sich in Richtung der Gleichgewichtung bewegt, um nicht gegen den Trend zu handeln.
  3. Es gibt eine Vielzahl von Optionen, die den Markt anpassen können.
  4. Die Strategie-Signale sind einfach, klar und leicht umzusetzen.

Risikoanalyse

Die Strategie birgt auch folgende Risiken:

  1. Der CCI-Wert ist leicht zu Falschsignale und kann nicht vollständig vermieden werden.
  2. Eine falsche Stop-Loss-Methode kann zu einer übermäßigen Stop-Loss führen.
  3. Es ist nicht möglich, Trends zu erkennen, was zu unnötigen Transaktionen führt, wenn es zu Schwankungen kommt.
  4. Es ist unmöglich, den Gesamtmarkt zu beurteilen, und es ist möglich, umgekehrt zu handeln.

Die wichtigsten Optimierungsmöglichkeiten für diese Risiken sind:

  1. In Kombination mit anderen Indikatoren filtert CCI-Indikatorsignale.
  2. Optimierung der Standortdämpfung nach Rückmessung.
  3. Es ist wichtig, die Trend-Indikatoren zu erhöhen, um eine Erschütterung zu vermeiden.
  4. Beurteilen Sie die großen Unterstützungs- und Druckstellen und entscheiden Sie, in welche Richtung Sie handeln sollen.

Optimierungsrichtung

Die Strategie kann vor allem in folgenden Bereichen optimiert werden:

  1. Optimierung der CC-Indikatorparameter: Anpassung der Periodizität der CCI-Indikatoren, Optimierung der Indikatorparameter.

  2. Optimierung der Stop-Loss-Methode: Versuche verschiedene Stop-Loss-Methoden, um die optimale Stop-Loss-Methode zu wählen.

  3. Filteroptimierung: Zusammensetzung von MACD, RSI und anderen Indikatoren zur Erstellung eines mehrfachen Filtersystems zur Verringerung von Falschsignalen.

  4. Optimierung der Trendbeurteilung: Hinzufügen von Trendbeurteilungsindikatoren wie beispielsweise Moving Averages, um Rückwärtsoperationen zu vermeiden

  5. Automatische Stop-Optimierung: Einrichtung einer dynamischen Stop-Methode, mit der die Strategie automatisch nach den Marktschwankungen stoppt.

Zusammenfassen

Die dynamische CCI-Break-Strategie insgesamt ist eine sehr praktische Short-Line-Handelsstrategie. Sie nutzt die CCI-Indikatoren, um Überkauf und Überverkauf zu bestimmen, und unterstützt die Richtung der Gleichgewichtsentscheidung. Die Risikokontrolle verwendet die Stop-Loss-Methode.

Strategiequellcode
/*backtest
start: 2023-02-11 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © tweakerID

// ---From the "Bitcoin Trading Strategies" book, by David Hanson---

// After testing, works better with an ATR stop instead of the Strategy Stop. This paramater
// can be changed from the strategy Inputs panel.

// "CCI Scalping Strategy
// Recommended Timeframe: 5 minutes
// Indicators: 20 Period CCI, 20 WMA
// Long when: Price closes above 20 WMA and CCI is below -100, enter when CCI crosses above -100.
// Stop: Above 20 WMA"

//@version=4
strategy("CCI Scalping Strat", 
     overlay=true, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, 
     initial_capital=10000, 
     commission_value=0.04, 
     calc_on_every_tick=false, 
     slippage=0)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

/////////////////////// STRATEGY INPUTS ////////////////////////////////////////
title1=input(true, "-----------------Strategy Inputs-------------------")  

i_Stop = input(0, step=.05, title="Strategy Stop Mult")*.01
i_CCI=input(16, title="CCI Length")
i_WMA=input(5, title="WMA Length")

/////////////////////// BACKTESTER /////////////////////////////////////////////
title2=input(true, "-----------------General Inputs-------------------")  

// Backtester General Inputs
i_SL=input(true, title="Use Stop Loss and Take Profit")
i_SLType=input(defval="ATR Stop", title="Type Of Stop", options=["Strategy Stop", "Swing Lo/Hi", "ATR Stop"])
i_SPL=input(defval=10, title="Swing Point Lookback")
i_PercIncrement=input(defval=2, step=.1, title="Swing Point SL Perc Increment")*0.01
i_ATR = input(14, title="ATR Length")
i_ATRMult = input(10, step=.1, title="ATR Multiple")
i_TPRRR = input(1.5, step=.1, title="Take Profit Risk Reward Ratio")

// Bought and Sold Boolean Signal
bought = strategy.position_size > strategy.position_size[1] 
 or strategy.position_size < strategy.position_size[1]

// Price Action Stop and Take Profit
LL=(lowest(i_SPL))*(1-i_PercIncrement)
HH=(highest(i_SPL))*(1+i_PercIncrement)
LL_price = valuewhen(bought, LL, 0)
HH_price = valuewhen(bought, HH, 0)
entry_LL_price = strategy.position_size > 0 ? LL_price : na 
entry_HH_price = strategy.position_size < 0 ? HH_price : na 
tp=strategy.position_avg_price + (strategy.position_avg_price - entry_LL_price)*i_TPRRR
stp=strategy.position_avg_price - (entry_HH_price - strategy.position_avg_price)*i_TPRRR

// ATR Stop
ATR=atr(i_ATR)*i_ATRMult
ATRLong = ohlc4 - ATR
ATRShort = ohlc4 + ATR
ATRLongStop = valuewhen(bought, ATRLong, 0)
ATRShortStop = valuewhen(bought, ATRShort, 0)
LongSL_ATR_price = strategy.position_size > 0 ? ATRLongStop : na 
ShortSL_ATR_price = strategy.position_size < 0 ? ATRShortStop : na 
ATRtp=strategy.position_avg_price + (strategy.position_avg_price - LongSL_ATR_price)*i_TPRRR
ATRstp=strategy.position_avg_price - (ShortSL_ATR_price - strategy.position_avg_price)*i_TPRRR

/////////////////////// STRATEGY LOGIC /////////////////////////////////////////

//CCI
CCI=cci(close, i_CCI)
//WMA
WMA=wma(close, i_WMA)

//Stops
LongStop=valuewhen(bought, WMA, 0)*(1-i_Stop)
ShortStop=valuewhen(bought, WMA, 0)*(1+i_Stop)
StratTP=strategy.position_avg_price + (strategy.position_avg_price - LongStop)*i_TPRRR
StratSTP=strategy.position_avg_price - (ShortStop - strategy.position_avg_price)*i_TPRRR

BUY = (close > WMA) and crossover(CCI , -100)
SELL = (close < WMA) and crossunder(CCI , 100)

//Trading Inputs
DPR=input(true, "Allow Direct Position Reverse")
reverse=input(false, "Reverse Trades")

// Entries
if reverse
    if not DPR
        strategy.entry("long", strategy.long, when=SELL and strategy.position_size == 0)
        strategy.entry("short", strategy.short, when=BUY and strategy.position_size == 0)
    else     
        strategy.entry("long", strategy.long, when=SELL)
        strategy.entry("short", strategy.short, when=BUY)
else
    if not DPR 
        strategy.entry("long", strategy.long, when=BUY and strategy.position_size == 0)
        strategy.entry("short", strategy.short, when=SELL and strategy.position_size == 0)
    else
        strategy.entry("long", strategy.long, when=BUY)
        strategy.entry("short", strategy.short, when=SELL)


SL= i_SLType == "Swing Lo/Hi" ? entry_LL_price : i_SLType == "ATR Stop" ? LongSL_ATR_price : LongStop
SSL= i_SLType == "Swing Lo/Hi" ? entry_HH_price : i_SLType == "ATR Stop" ? ShortSL_ATR_price : ShortStop
TP= i_SLType == "Swing Lo/Hi" ? tp : i_SLType == "ATR Stop" ? ATRtp : StratTP
STP= i_SLType == "Swing Lo/Hi" ? stp : i_SLType == "ATR Stop" ? ATRstp : StratSTP

strategy.exit("TP & SL", "long", limit=TP, stop=SL, when=i_SL)
strategy.exit("TP & SL", "short", limit=STP, stop=SSL, when=i_SL)

/////////////////////// PLOTS //////////////////////////////////////////////////


plot(WMA)
plot(i_SL and strategy.position_size > 0 ? SL : na , title='SL', style=plot.style_cross, color=color.red)
plot(i_SL and strategy.position_size < 0 ? SSL : na , title='SSL', style=plot.style_cross, color=color.red)
plot(i_SL and strategy.position_size > 0 ? TP : na, title='TP', style=plot.style_cross, color=color.green)
plot(i_SL and strategy.position_size < 0 ? STP : na, title='STP', style=plot.style_cross, color=color.green)
// Draw price action setup arrows
plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, 
 color=color.green, title="Bullish Setup", size=size.auto)
plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, 
 color=color.red, title="Bearish Setup", size=size.auto)