
Die Multiple-Mean-Line-Multi-Head-Trend-Strategie ist eine Trend-Tracking-Strategie, bei der die Indikator-Moving Averages (EMA) für mehrere verschiedene Perioden beurteilt werden. Sie wird ausgeführt, wenn der Preis die 10-Tage-EMA überschreitet und andere EMA-Linien mit längeren Perioden mehrere Heads aufweisen; dann wird ein Stop-Loss von 8% verwendet, um Gewinne zu sichern.
Die Strategie verwendet sechs EMA-Linien mit unterschiedlichen Perioden von 10, 20, 50, 100, 150 und 200 Tagen. Diese EMA-Linien werden verwendet, um zu beurteilen, in welcher Phase der Markt sich befindet. Wenn die kurzfristige EMA-Linie (z. B. die 10-Tage-Linie) über die längerperiodische EMA-Linie (z. B. die 20-Tage- und 50-Tage-Linie) fällt, wird dies als Markup-Phase angesehen, in der der Markt in einen mehrköpfigen Trend eintritt.
Insbesondere wird eine Strategie ausgeführt, wenn die folgenden Bedingungen erfüllt sind:
Nach dem Überschreiten der Position wird die Strategie mit einem Stop-Loss von 8% verwendet, um Gewinne zu sichern. Das heißt, die Position wird gehalten, solange der Aktienpreis nicht um mehr als 8% des Kaufpreises zurückfällt.
Insgesamt ist die Kernidee der Strategie: Nach dem Eintritt in einen Mehrspur-Trend mit Hilfe von EMA-Mehrfachfilterbedingungen wird ein Stop-Loss eingesetzt, um Gewinne zu sichern.
Die wichtigsten Vorteile einer Multiple-Mean-Line-Multiple-Trend-Strategie sind:
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Für die oben genannten Risiken können wir optimieren und verbessern, indem wir die EMA-Zyklusparameter entsprechend anpassen oder andere Indikatoren als Hilfsurteile einführen.
In Anbetracht der Besonderheiten dieser Strategie können in Zukunft Optimierungen in folgenden Bereichen vorgenommen werden:
Die Multiple-Mean-Line-Multiple-Head-Trend-Strategie ist insgesamt eine robuste und zuverlässige Trendverfolgungs-Strategie. Sie berücksichtigt sowohl die Trendentscheidung als auch die Risikokontrolle. Durch die Optimierung von Parametern und Algorithmen gibt es noch viel Raum für Verbesserungen. Insgesamt ist dies eine effektive Strategie, die es wert ist, ausprobiert und untersucht zu werden.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01
longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
stopValue = close * (1 - trailStop)
math.max(stopValue, longStopPrice[1])
else
0
//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))
//OPEN
longCondition = ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
strategy.entry("BUY1", strategy.long)
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
strategy.entry("BUY2'", strategy.long)
//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
strategy.exit(id='TSP', stop=longStopPrice)