TSI und CCI Hull Strategie zur Verfolgung des gleitenden Durchschnittstrends

Schriftsteller:ChaoZhang, Datum: 23.11.2023
Tags:

img

Übersicht

Diese Strategie integriert die Indikatoren Relative Strength Index (TSI), Commodity Channel Index (CCI) und Hull Moving Average (Hull MA), um eine Trend-Tracking-Handelsstrategie zu bilden.

Strategieprinzip

Die Strategie verwendet hauptsächlich die TSI und die CCI-Indikatoren zur Beurteilung der Trendrichtung und der Überkauf-/Überverkaufssituationen des Marktes sowie die Hull MA zur Bestimmung der Zwischenentwicklung der Preise, wobei die drei als Grundbedingungen für die Eröffnung von Positionen kombiniert werden.

Insbesondere wenn die schnelle Linie der TSI über die langsame Linie geht, geht der CCI-Indikator über +20 && n1 und geht lang; wenn die schnelle Linie der TSI unter die langsame Linie geht, geht der CCI-Indikator unter -20 && n1 und fällt, geht er kurz. Hull MA wird verwendet, um den Zwischentrend zu filtern, wobei der Preis nur lang geht, wenn er unter Hull MA liegt, und kurz geht, wenn er über Hull MA liegt.

Durch die Bestätigung mit Indikatoren über verschiedene Zyklen hinweg können falsche Ausbrüche effektiv gefiltert werden, um mittelfristige und langfristige Trends zu verfolgen.

Analyse der Vorteile

Dies ist eine relativ stabile und effiziente Trendverfolgungsstrategie mit folgenden Hauptvorteilen:

  1. Die Verwendung von TSI zur Beurteilung der langfristigen Trendrichtung ist zuverlässiger und vermeidet Störungen durch kurzfristigen Marktlärm.

  2. Der Hinzufügen des CCI-Indikators kann Überkauf-/Überverkaufsphänomene bestätigen und einige falsche Signale herausfiltern.

  3. Das Urteil der Hull MA macht die Einstiegspunkte präziser und verbessert die Gewinnwahrscheinlichkeit erheblich.

  4. Die Integration von Indikatoren mit verschiedenen Parametern kann die Zuverlässigkeit der Signale verbessern und die Interferenzwahrscheinlichkeit verringern.

  5. Flexible Parameter-Einstellungen der Strategie können für verschiedene Marktzyklen optimiert werden.

Risikoanalyse

Obwohl die Strategie relativ stabil ist, sind einige Risiken zu beachten:

  1. Der Markt kann gewaltsame Umkehrungen erleben, die nicht schnell gegen Verluste gestoppt werden können und relativ große Verluste verursachen;

  2. Die TSI Diff und die CCI-Anzeige können beide falsche Signale und Verzögerungen aufweisen, wobei einige Eingangspunkte fehlen.

  3. Eine unsachgemäße Einstellung der Parameter kann auch zu einer übermäßig hohen Handelsfrequenz oder zu einer Abnahme der Signalqualität führen.

Gegenmaßnahmen:

  1. Einfache Verluste werden entsprechend angepasst;

  2. Bestätigen Sie mit anderen Indikatoren, um die Signalgenauigkeit zu verbessern;

  3. Anpassung der Parameter an den Markt, um die Strategie zu stabilisieren.

Optimierungsrichtlinien

Die Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Versuchen Sie verschiedene Kombinationen von Parameterindikatoren, um die beste Übereinstimmung zu finden;

  2. Einführung von Algorithmen für maschinelles Lernen zur Erreichung einer adaptiven Optimierung von Parametern;

  3. Erhöhung des Kapitalmanagementmoduls für stabilere Gewinne;

  4. Fügen Sie mehr Filter ein, um die Gewinnrate der Strategie zu erhöhen.

Diese werden die Schwerpunkte für zukünftige Optimierungen sein.

Zusammenfassung

Diese Strategie nutzt umfassend die TSI-, CCI- und Hull-MA-Indikatoren, um eine relativ stabile und effiziente Trendverfolgungsstrategie zu bilden. Sie nutzt erfolgreich die Vorteile von Mehrzyklus-Indikatoren, um die Signalkwalitat zu verbessern. Der nächste Schritt besteht darin, die Stabilität und Rentabilität der Strategie durch Parameteroptimierung, Filterverbesserung und andere Mittel weiter zu verbessern.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="TSI CCI Hull", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0)
long = input(title="Long Length", type=input.integer, defval=50)
short = input(title="Short Length", type=input.integer, defval=50)
signal = input(title="Signal Length", type=input.integer, defval=25)
price=input(title="Source",type=input.source,defval=open)
Period=input(25, minval=1)
lineupper = input(title="Upper Line", type=input.integer, defval=100)
linelower = input(title="Lower Line", type=input.integer, defval=-100)
p=price
length= Period
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
keh = tsi_value*5 > linelower ? color.red : color.lime
teh = ema(tsi_value*5, signal*5) > lineupper ? color.red : color.lime
meh = ema(tsi_value*5, signal*5) > tsi_value*5 ? color.red : color.lime
i1=plot(tsi_value*5, title="TSI Value", color=color.black, linewidth=1,transp=100)
i2=plot(ema(tsi_value*5, signal*5), title="TSI Signal", color=color.black, linewidth=1,transp=100)
fill(i1,i2,color=meh,transp=85)
plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.black, linewidth=10)
plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.white, linewidth=8,transp=0)
plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=meh, linewidth=5)
n2ma = 2 * wma(p, round(length / 2))
nma = wma(p, length)
diff = n2ma - nma
sqn = round(sqrt(length))
n1 = wma(diff, sqn)
cci = (p - n1) / (0.015 * dev(p, length))
c = cci > 0 ? color.lime : color.red
c1 = cci > 20 ? color.lime : color.silver
c2 = cci < -20 ? color.red : color.silver
cc=plot(cci, color=c, title="CCI Line", linewidth=2)
cc2=plot(cci[1], color=color.gray, linewidth=1,transp=100)
fill(cc,cc2,color=c,transp=85)
plot(cross(20, cci) ? 20 : na, style=plot.style_cross,title="CCI cross UP",  color=c1, linewidth=2,transp=100,offset=-2)
plot(cross(-20, cci) ? -20 : na, style=plot.style_cross,title="CCI cross down",  color=c2, linewidth=2,transp=100,offset=-2)

TSI1=ema(tsi_value*5, signal*5)
TSI2=ema(tsi_value*5, signal*5)[2]

hullma_smoothed = wma(2*wma(n1, Period/2)-wma(n1, Period), round(sqrt(Period)))
//plot(hullma_smoothed*200)

longCondition = TSI1>TSI2 and hullma_smoothed<price and cci>0
if (longCondition and cci>cci[1] and cci > 0 and n1>n1[1])
    strategy.entry("Buy Here", strategy.long)

shortCondition = TSI1<TSI2 and hullma_smoothed>price and cci<0
if (shortCondition and cci<cci[1] and cci < 0 and n1<n1[1])
    strategy.entry("Sell Here", strategy.short)

Mehr