
Die Strategie kombiniert drei Indikatoren: den Relative Strength Index (TSI), den Commodity Path Index (CCI) und den Hull Moving Average (Hull MA), um eine Trend-Tracking-Handelsstrategie zu bilden. Sie kann langfristige Transaktionen für beliebige Handelsarten in einem Zeitrahmen von 1 Stunde oder länger verfolgen.
Die Strategie basiert hauptsächlich auf den beiden Indikatoren TSI und CCI, die Markttrends und Überkäufe und Überverkäufe beurteilen, sowie auf dem Hull MA, der die mittelfristige Preisentwicklung beurteilt. Die drei sind zusammen die grundlegenden Bedingungen für die Positionserstellung.
Insbesondere, wenn die TSI auf der schnellen Linie die langsame Linie durchbricht und der CCI auf + 20&&n1 steigt, macht er mehr; wenn die TSI unter der schnellen Linie die langsame Linie durchbricht und der CCI unter 20&&n1 fällt, macht er weniger. Die Hull MA wird verwendet, um die mittlere Periode zu filtern, nur wenn der Preis unter dem Hull MA liegt und wenn der Preis über dem Hull MA liegt.
Auf diese Weise können Sie durch die Bestätigung verschiedener periodischer Indikatoren die falschen Durchbrüche effektiv filtern und die mittleren Langstrecken-Trends verfolgen.
Dies ist eine relativ stabile und effiziente Trend-Tracking-Strategie, die folgende Vorteile hat:
Die Verwendung des TSI zur Bestimmung der Richtung langfristiger Trends ist zuverlässiger und vermeidet die Störung durch kurzfristigen Marktlärm.
Die Einführung des CCI-Index kann Überkaufe und Überverkäufe bestätigen und einige falsche Signale filtern.
Hull MA entscheidet, dass die Einstiegspunkte präziser sind, was die Gewinnchancen erheblich erhöht.
Die Integration verschiedener Parameterindikatoren verbessert die Signalzuverlässigkeit und reduziert die Störwahrscheinlichkeit.
Die Strategieparameter sind flexibel eingestellt und können für verschiedene Marktzyklen optimiert werden.
Obwohl die Strategie sehr stabil ist, gibt es einige Risiken, die zu beachten sind:
Es könnte eine heftige Kehrtwende geben, die nicht schnell aufgehalten werden kann und große Verluste verursachen kann.
Die TSIDiff- und CCI-Indikatoren können Falschsignale und Verzögerungen aufweisen und teilweise Eintrittspunkte verpassen.
Die falsche Einstellung der Parameter kann auch zu einer zu hohen Handelsfrequenz oder zu einer geringeren Signalqualität führen.
Gegenmaßnahmen:
Stellungen an den Stop-Loss-Punkten, um Einzelschäden zu kontrollieren;
Verbesserung der Signalgenauigkeit, gegebenenfalls in Verbindung mit anderen Kennzahlen;
Die Strategie ist stabil, wenn sie sich an die Parameter des Marktes anpasst.
Die Strategie kann auch in folgenden Bereichen optimiert werden:
Versuchen Sie, eine Kombination aus verschiedenen Parameterindikatoren zu finden, die am besten übereinstimmen.
Mit Hilfe von Machine Learning-Algorithmen können die Parameter anpassungsoptimiert werden.
Die Einführung eines neuen Moduls für die Vermögensverwaltung, um die Erträge zu stabilisieren.
Mit mehr Filtern erhöht sich die Strategie-Gewinnrate.
Das wird der Schwerpunkt der zukünftigen Optimierung sein.
Die Strategie nutzt die drei Indikatoren TSI, CCI und Hull MA in einer Kombination, um eine stabilere und effizientere Trendverfolgungsstrategie zu bilden. Sie nutzt die Vorteile von mehreren Zeiträumen und verbessert die Signalqualität. Der nächste Schritt besteht darin, die Stabilität und Profitabilität der Strategie durch Parameteroptimierung und Filtererweiterung 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)