CCI und EMA-Trend nach Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 15:17:22
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, den CCI-Indikator zur Bestimmung der Markttrendrichtung und den EMA-Indikator zur Glättung des CCI zur Umsetzung des Trends nach dem Handel zu verwenden.

Strategie Logik

  1. Berechnen Sie den CCI-Indikator. Der CCI-Indikator beurteilt, ob der aktuelle Aktienkurs überkauft oder überverkauft ist, basierend auf dem Abweichungsgrad vom 20-tägigen gleitenden Durchschnitt. Die Formel lautet: (typischer Preis - 20D SMA) / (0,015 * 20D TP Standardabweichung).

  2. Der CCI-Indikator wird mit einem EMA glättet, um eine CCI-EMA-Kurve zu erhalten, die die Schwankungen des CCI verringert und das Signal klarer macht.

  3. Stellen Sie die Kauf- und Verkaufspunkte für CCI fest. Gehen Sie lang, wenn CCI-EMA über den Kaufpunkt geht, und kurz, wenn CCI-EMA unter den Verkaufspunkt geht.

  4. Halten Sie die Position an, bis CCI-EMA den Kauf- oder Verkaufspunkt erneut berührt, um die Position zu schließen.

Analyse der Vorteile

  1. Die Verwendung des CCI zur Bestimmung der Marktentwicklung in Kombination mit der EMA zur Filterung falscher Signale kann die Marktentwicklung wirksam verfolgen.

  2. Der CCI ist empfindlich auf Preisanomalien und kann schnell Trendumkehrungen erfassen.

  3. Trendfolgende Strategien minimieren Transaktionen, reduzieren Handelskosten und Schlupf.

  4. Die Ergebnisse der Backtests sind gut, was der Strategie eine gewisse praktische Tragfähigkeit verleiht.

Risikoanalyse

  1. Die CCI kann zu empfindlich auf Kurven reagieren und die EMA kann nicht alle falschen Signale vollständig filtern. Einige falsche Signale bleiben bestehen.

  2. Bei der Konsolidierung oder Umkehrung von Trends sind Strategien, die einem reinen Trend folgen, anfällig für Verluste.

  3. Mechanische Handelssysteme können die Parameter nicht flexibel an die Märkte anpassen.

  4. Begrenzte Daten aus dem Backtest können die Leistung im Live-Bereich nicht vollständig widerspiegeln.

Optimierungsrichtlinien

  1. Optimierung der CCI-Parameter durch Prüfung unterschiedlicher Längeperioden.

  2. Optimieren Sie die EMA-Parameter, um die optimale EMA-Periode zu finden.

  3. Versuche verschiedene Kombinationen von Kauf-/Verkaufspunkten, um die optimalen Parameter zu finden.

  4. Einbeziehung anderer Indikatoren zur Bestimmung der Trendumkehrung und zum Festlegen von Stop-Losses.

  5. Fügen Sie automatische Parameteroptimierung hinzu, um die optimalen Parameter für verschiedene Produkte zu finden.

Zusammenfassung

Das ist eine relativ einfache Trend-Folge-Handelsstrategie. Sie verwendet CCI, um die Trendrichtung zu bestimmen und ist empfindlich auf Preisänderungen, kombiniert mit EMA-Filterung, um Signale zu generieren. Die Strategie hat einige Vorteile, aber auch Risiken zu beachten. Durch Parameteroptimierung und die Verwendung anderer Indikatoren kann die Stabilität und Live-Performance weiter verbessert werden.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07)

length = input(20, minval=1)
src = input(close, title="Source")
cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer) 
cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer) 
lengthcci = input(12,"length cci ema", minval=1)

ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
cciema=ema(cci,lengthcci)
plot(cci, "CCI", color=#996A15)
plot(cciSellPoint, title = 'CCI  Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35)
band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=#9C6E1B, title="Background")

startLongTrade=  cciema >cciBuyPoint 
startShortTrade= cciema <cciSellPoint

//exitLong = cciema <cciSellPoint
//exitShort = cciema >cciBuyPoint 

strategy.entry("long",strategy.long, when = startLongTrade )
//strategy.close( "long", when=exitLong)
strategy.entry("short",strategy.short,when=startShortTrade )
//strategy.close("short", when=exitShort)

Mehr