
Eine Trend-Tracking-Strategie basiert auf einer Whirlpool-Indikator-Strategie. Sie nutzt bewegliche Durchschnitte aus mehreren verschiedenen Perioden, um einen Whirlpool-Indikator zu erstellen, um potenzielle Trends in den Preisen zu identifizieren, und kombiniert mit beweglichen Durchschnitten aus kürzeren Perioden, um eine risikoarme Trend-Tracking-Operation zu ermöglichen.
Der Kern der Strategie ist der Whirlpool-Indikator. Der Whirlpool-Indikator besteht aus kurz-, mittelfristigen und langfristigen Moving Averages aus mehreren verschiedenen Perioden. Insbesondere verwendet die Strategie vier Perioden von 6, 27, 72 und 234 Tagen. Der kurzfristige Moving Average spiegelt die neueste Trendentwicklung der Preise wider, der langfristige Moving Average spiegelt die langfristige Trendentwicklung der Preise wider.
Der Vorteil des Whirlpools besteht darin, dass der Trend genau beurteilt und die Marktgeräusche wirksam filtert. Die Strategie hat jedoch nicht genügend Reaktionssensibilität, um die Wendepunkte rechtzeitig zu erfassen. Daher wurde ein empfindlicherer 6-Tage-Moving Average hinzugefügt, um ein Hilfs-Urteil zu erstellen.
Der größte Vorteil dieser Strategie liegt in der Genauigkeit der Beurteilung und der Handlungsempfindlichkeit. Die Kombination von Wirbelindikatoren und Hilfsindikatoren ermöglicht eine organische Einheit der Trendbeurteilung und der Festlegung spezifischer Kauf- und Verkaufspunkte und vermeidet gegenseitige Interferenzen zwischen den Sektoren. Die Mehrfachbestätigungsmechanismen filtern effektiv Marktlärm und verhindern Fehlhandlungen. Die Einbeziehung von Hilfsindikatoren gewährleistet auch die Handlungsempfindlichkeit der Strategie.
Im Vergleich zu einer einzigen Indikatorstrategie hat diese Strategie die Vorteile mehrerer Indikatoren und ist besser in der Lage, Marktveränderungen zu erkennen und darauf zu reagieren. Die Strategie kann bei gleichbleibender großer Trends stabile Gewinne erzielen; Wenn sich die großen Trends ändern, kann die Strategie auch schnell reagieren und Verluste reduzieren.
Das Hauptrisiko dieser Strategie besteht in der falschen Einstellung der Indikatorparameter und den Auswirkungen von Unvorhergesehenen. Die Einstellung der Moving-Average-Parameter erfordert eine Waage zwischen Sensitivität und Geräuschunterdrückungskapazität. Eine falsche Einstellung der Parameter führt zu abnormalen Verhaltensweisen.
Um diese Risiken zu verringern, empfiehlt es sich, die Parameterkombinationen zu optimieren und zurückzuprüfen, um die Indikatorleistung stabiler zu machen. Darüber hinaus ist es notwendig, die Auswirkungen von wichtigen Ereignissen auf den Markt zu beachten, die Strategie bei Bedarf auszusetzen und Fehlhandlungen in außergewöhnlichen Schwankungen zu vermeiden.
Die Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der Moving-Average-Parameter zur Verbesserung der Störungsresistenz und der Bedienungsempfindlichkeit des Indikators. Es ist möglich, Kombinationen verschiedener Längeparameter auszuprobieren und einen gleichmäßigen und empfindlichen Indikator zu wählen.
Steigerung der Stop-Loss-Mechanismen. Setzen Sie einen Stop-Loss-Punkt, um weitere Verluste zu vermeiden, wenn der Preis die kritische Unterstützung in eine nachteilige Richtung durchbricht.
In Kombination mit anderen Indikatoren, um die strategische Stabilität zu erhöhen. Zum Beispiel die Aufnahme von Handelsvolumen-Indikatoren, die nur dann ein Handelssignal erzeugen, wenn der Handelsvolumen erhöht wird.
Es werden verschiedene Parameterkombinationen verwendet, je nachdem, in welcher Marktphase man sich befindet. Zum Beispiel wird ein positiveres Parameter für einen Bullenmarkt verwendet, während ein stabileres für einen Bärenmarkt verwendet wird.
Die Strategie kombiniert erfolgreich die beiden Ebenen der Trendentscheidung und der Handelsausführung und gewährleistet sowohl die Stabilität der Operationen als auch die Flexibilität der Strategie. Durch die Optimierung der Parameter, die Stop-Loss-Einstellungen und die Einführung von Status-Mechanismen wird erwartet, dass die Risikobereitschaft der Strategie weiter erhöht wird, um eine bessere Rückmessung und reale Leistung zu erzielen.
/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//swap strategy line for study line to enable backtesting
strategy(title="Vortex Ocillator" )
//study(title = "Vortex Oscillator", precision = 6)
// Component Code Start
// Example usage:
// if testPeriod()
// strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2048, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
//vortex histogram
short_input = input(6, minval = 1)
long_input = input(27, minval = 1)
longer_input = input(72, minval = 1)
longest_input = input(234, minval = 1)
short = sma(close, short_input)
long = sma(close, long_input)
longer = sma(close, longer_input)
longest = sma(close, longest_input)
hist = short - long
longhist = short - longer
longesthist = short - longest
hist_fractal = input(3, minval = 0)
longhist_fractal = input(2, minval = 0)
longesthist_fractal = input(4, minval = 0)
vortexhist = avg((hist / hist_fractal), (longhist / longhist_fractal), (longesthist / longesthist_fractal))
crossover_calc = vortexhist > 0 and vortexhist[1] < 0
crossunder_calc = vortexhist < 0 and vortexhist[1] > 0
crossover2 = crossover(vortexhist, 0)
crossunder2 = crossunder(vortexhist, 0)
hist_color = hist > 0? fuchsia : purple
longhist_color = longhist > 0? olive : orange
longesthist_color = longesthist > 0? teal : blue
vortexhist_color = vortexhist >= 0? green : red
plot(longesthist, "Longest Ocillator", style = histogram, color = longesthist_color, transp = 5)
plot(longhist, "Longer Ocillator", style = histogram, color = longhist_color, transp = 30)
plot(hist, "Short Ocillator", style = histogram, color = hist_color, transp = 30)
plot(vortexhist, "Vortex Ocillator", style = columns, color = vortexhist_color, transp = 40)
plotshape(crossover_calc,title = "Crossover",location = location.bottom, style = shape.triangleup, size = size.small, color = green)
plotshape(crossunder_calc,title = "Crossunder",location = location.bottom, style = shape.triangledown, size = size.small, color = red)
//micro
micro_ema_length = input(6,"Micro EMA Length")
micro = ema(vortexhist, micro_ema_length)
plot(micro, title = "micro", linewidth = 1, color = white)
microup = crossover(vortexhist, micro)
microdown = crossunder(vortexhist, micro)
//new micro signals
xmicroup = microup and vortexhist >=0 or crossover_calc
xmicrodown = microdown and vortexhist >=0 or crossunder_calc
plotshape(xmicroup, title = "Micro up", style = shape.circle, color = olive, location = location.bottom, size = size.tiny)
plotshape(xmicrodown, title = "Micro down", style = shape.circle, color = fuchsia, location = location.bottom, size = size.tiny)
//optional strategy options for backtesting, comment out the alertcondition rows and swap the top study row for the strategy row to compile as strategy
if testPeriod()
strategy.entry("buy", true, 1, when = xmicroup, limit = low)
if testPeriod()
strategy.close("buy", when = xmicrodown)
//if (xmicroup)
//strategy.entry("My Long Entry Id", strategy.long)
//if (xmicroup)
//strategy.exit("My Short Exit Id", "My Short Entry Id")
//if (xmicrodown)
//strategy.exit("My Long Exit Id", "My Long Entry Id")