Die Strategie basiert auf dem CCI-Indikator für den Umkehrhandel. Sie tritt auf, wenn der CCI-Indikator eine überkaufte und überverkaufte Zone aufweist. Insgesamt nutzt die Strategie die überkauften und überverkauften Merkmale des CCI-Indikators, um die Gelegenheit zum Umkehrhandel zu erfassen.
Zunächst basiert die Strategie auf dem CCI-Wert, dessen Berechnungsformel lautet:
CCI = (Typical Price - Einfacher Moving Average) / (0,015 * Durchschnittliche Differenz)
In diesem Typical Price = (höchster Preis + niedrigerer Preis + Schlusskurs) / 3 Einfacher Moving Average = Moving Average des Typischen Preises der letzten N Tage Durchschnittsdifferenz = Mittelwert der Quadratsumme der typischen Preisdifferenz in den letzten N Tagen
Die Strategie verwendet einen CCI-Indikator mit einer Länge von 11 und setzt 150 als Überverkaufszone und 150 als Überkaufszone.
Bei jedem K-Strahlschluss wird der CCI-Wert mit einer Länge von 11 getestet. Wenn der CCI unter 150 liegt, wird ein Mehrsignal ausgegeben; wenn der CCI über 150 liegt, wird ein Leersignal ausgegeben.
Nach dem Empfang des Signals wird die Position nur zum Marktpreis eröffnet. Es wird ein Stop-Loss von 1% und ein Stop-Loss von 0,5% festgelegt.
Die 4-Stunden-CCI-Umkehrstrategie ist insgesamt eine einfache Strategie, um mit dem CCI-Indikator umzukehren. Sie hat die Vorteile, dass die Strategie logisch klar und einfach umzusetzen ist. Es gibt jedoch auch Nachteile, wie z. B. CCI-Signalinstabilität, nicht genügend Flexibilität beim Stop-Loss.
/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("4H CCI Strategy", overlay=true)
length = input( 11 )
overSold = input( -150 )
overBought = input( +150 )
price1 = high
price2 = low
ucci = cci(price1, length)
dcci = cci(price2, length)
vcci = cci(ohlc4, 11)
resCustom = input(title="Timeframe", defval="15")
Length = input(16, minval=1)
xPrice = request.security(syminfo.tickerid, resCustom, hlc3)
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
basis1 = nAMA
slope = change(basis1,1)
if (not na(vcci))
if (crossover(dcci, overSold))
strategy.entry("CCILE", strategy.long, comment="CCILE")
strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005)
if (crossunder(ucci, overBought))
strategy.entry("CCISE", strategy.short, comment="CCISE")
strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)