Trendfolgestrategie basierend auf dem CCI-Indikator


Erstellungsdatum: 2023-11-24 10:53:07 zuletzt geändert: 2023-11-24 10:53:07
Kopie: 0 Klicks: 745
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie basierend auf dem CCI-Indikator

Überblick

Die Strategie basiert auf dem CCI-Indikator und ist eine Trendverfolgungsstrategie. Sie verwendet zwei verschiedene CCI-Indikatoren für die Erzeugung von Handelssignalen. Insbesondere überwacht sie, ob ein CCI-Indikator mit einer kürzeren Periode einen CCI-Indikator mit einer längeren Periode durchbricht, um zu entscheiden, ob er über- oder unterlegt ist, je nach Richtung des Durchbruchs.

Strategieprinzip

Die Kernlogik der Strategie lautet:

  1. Definition zweier CCI-Werte, ci1 für 14 und ci2 für 56 Perioden
  2. Wenn ci1 nach oben durchci2 geht, dann mehr.
  3. Wenn Ci1 nach unten durch Ci2 geht, machen Sie Platz.
  4. Nach dem Trading-Signal wird die Platzierung der Position durch die Werte ci1 und ci2 bestimmt

Die konkreten Regeln sind:

  1. Ci1 übertragen durch ci2, d.h. kurzzeitige CCI über langzeitige CCI
  2. Stop-Loss-Bedingungen: ci1 < -50 und Veränderungsrate < 0 oder ci1 unter -100

Die spezifischen Regeln für die Freigabe sind:

  1. Durchschnitts-CCI unter der kurzen Periode ci1 durchschnitts-CCI unter der langen Periode ci2
  2. Stop-Loss-Bedingungen: ci1 > 100 und Veränderungsrate > 0 oder ci2 auf 100

Wie man sehen kann, nutzt die Strategie die Empfindlichkeit des kurzfristigen CCI und die Stabilität des längerfristigen CCI, um Trends zu identifizieren und zu verfolgen.

Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. CCI-Indikatoren als Instrument zur Identifizierung von Trends
  2. Dual-CCI-Entwurf filtert einige Geräuschtransaktionen
  3. Mit einer Kombination aus lang- und kurzfristigen CCI-Indikatoren können Sie Risiken kontrollieren, während Sie Trends verfolgen
  4. Die Regeln der Strategie sind einfach, klar und leicht zu verstehen und umzusetzen.
  5. Stärkere Konfigurationsfähigkeit, CCI-Zyklen und Stop-Loss-Bedingungen können angepasst werden

Strategisches Risiko

Die Strategie birgt auch einige Risiken:

  1. CCI-Indikatoren sind schwach in der Erkennung von Schwankungen und Schwankungen
  2. Kurz- und langfristige CCI-Abweichungen können zu falschen Handelssignalen führen
  3. Unzureichende Stop-Loss-Bedingungen können zu größeren Verlusten führen
  4. Unkorrekt eingestellte Parameter haben auch einen großen Einfluss auf die strategischen Erträge

Die Risiken können mit folgenden Lösungen begegnet werden:

  1. Es ist möglich, die Entwicklung in Kombination mit anderen Indikatoren zu beurteilen, um einen Handel in einer bewegten Situation zu vermeiden.
  2. Erhöhung der Filterbedingungen, um Fehlsignale zu vermeiden, die durch die Abweichung des CCI bei langen und kurzen Perioden entstehen
  3. Optimierung und Test verschiedener Stopp-Bedingungen
  4. Auswahl einer geeigneten Kombination von Parametern durch Rückmessung und Parameteroptimierung

Richtung der Strategieoptimierung

Die Strategie kann auch in folgenden Bereichen weiter optimiert werden:

  1. Das System wurde durch die Einführung weiterer Indikatoren erweitert, um ein SYSTEM-ähnliches Handelssystem zu bilden.
  2. Tests für die Differenz zwischen den Erträgen an verschiedenen Wochentagen und Sitzungen
  3. Mit Hilfe von maschinellen Lernmethoden suchen wir nach besseren Parametern
  4. Anpassung der Parameter an die Eigenschaften der verschiedenen Sorten
  5. Optimierung der Bedingungen für die Eröffnung und Bewahrung von Positionen

Zusammenfassen

Diese Strategie ist insgesamt eine einfache Trend-Tracking-Strategie, basierend auf den Durchbrüchen des CCI-Indikators in der langen und kurzen Periode. Sie kann die Richtung der Trends effektiv identifizieren und die Trends verfolgen. Die Risiken werden gleichzeitig durch Stopps und andere Mittel kontrolliert. Die Strategie ist einfach zu anwenden, die Parameter werden flexibel angepasst und kann als Einstiegsstrategie für quantifizierte Geschäfte verwendet werden.

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

//@version=3
strategy(title="my work",calc_on_order_fills=true,currency=currency.USD, default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent)


source = close
shortlength=input(14)
longlength=input(56)
aa=input(2)
Ss=input(75)

//Cci part
ci1=cci(source,shortlength)   //4시간봉의 기본 cci
ci2=cci(source,longlength)   //4시간봉에서 12시봉의 cci 무빙측정

//오린간 선생님의 WT + ichimoku
len = input(10)
lenTurn = input(9)
lenStd = input(26)

wtm_e(so, l) =>
    esa = ema(so, l)
    d = ema(abs(so - esa), l)
    ci = (so - esa) / (0.015 * d)
    ema(ci, l*2+1)

alh(len) => avg(lowest(len), highest(len))
alh_src(src, len) => avg(lowest(src, len), highest(src, len))

wt = wtm_e(close,len)
turn = alh_src(wt, lenTurn)
std = alh_src(wt, lenStd)

cnt = 0
if wt > turn
    cnt:=cnt+1
if wt > std
    cnt:=cnt+1


//100,-100선
h0 = hline(100)
h1 = hline(-100)

//plot(ci,color=green)
// plot(k,color=green)
// plot(d,color=red)
plot(ci1,color=green)
plot(ci2,color=red)

plot(0,color=black)
plot(100,color=black)
plot(-100,color=black)

fill(h0,h1,color=purple,transp=95)

bgcolor(cnt==0 ? red : cnt==1 ? blue : cnt == 2 ? green : na, transp = Ss)

//기간조정

Fromday = input(defval=1, title="from day", minval=1, maxval=31)
FromMonth = input(defval=1, title="from month", minval=1, maxval=12)
FromYr = input(defval=2019, title="from yr", minval=1970)

Today = input(defval=13, title="to day", minval=1, maxval=31)
ToMonth = input(defval=12, title="to month", minval=1, maxval=12)
ToYr = input(defval=2019, title="to yr", minval=1970)

startDate = timestamp(FromYr, FromMonth, Fromday, 00, 00)
finishDate = timestamp(ToYr, ToMonth, Today, 00, 00)
Time_cond = true


/////롱

if  crossover(ci1,ci2) and change(ci2)>0 and Time_cond
    strategy.entry("go", strategy.long, comment="go")
    
strategy.close("go", (ci2<0 and ci1 <-50 and change(ci1)<0) or (crossunder(ci1,-100) and strategy.openprofit<0) and change(cnt)<0)



/////숏

if  (crossunder(ci1,ci2) and change(ci2)<0 and falling(ci1,aa)) and Time_cond
    strategy.entry("die", strategy.short, comment="die")
    
strategy.close("die", (ci2>0 and ci1 > 100 and change(ci1)>0) or (crossover(ci2,100) and strategy.openprofit<0) and change(cnt)>0)