Langfristige Trend-SMA-Gleitende-Durchschnitt-Crossover-Quantitative-Strategie

SMA EMA
Erstellungsdatum: 2025-01-06 17:01:08 zuletzt geändert: 2025-01-06 17:01:08
Kopie: 3 Klicks: 432
1
konzentrieren Sie sich auf
1617
Anhänger

Langfristige Trend-SMA-Gleitende-Durchschnitt-Crossover-Quantitative-Strategie

Überblick

Bei der Strategie handelt es sich um ein quantitatives Handelssystem, das auf mehrperiodischen SMA-Crossover-Signalen (Simple Moving Average) basiert. Der Handel erfolgt in erster Linie durch die Identifizierung kurzfristiger Rückzugsmöglichkeiten innerhalb eines langfristigen Aufwärtstrends. Die Strategie verwendet SMA-Indikatoren mit fünf Perioden von 5 Tagen, 10 Tagen, 20 Tagen, 60 Tagen und 120 Tagen, um Markttrends und Handelsmöglichkeiten anhand der Positionsbeziehungen und Crossover-Signale der gleitenden Durchschnitte zu beurteilen.

Strategieprinzip

Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:

  1. Der langfristige Trend kann anhand der relativen Positionsbeziehung zwischen SMA20 und SMA60 beurteilt werden. Wenn SMA20 über SMA60 liegt, wird bestätigt, dass sich der Markt in einem Aufwärtstrend befindet.
  2. Unter der Voraussetzung der Bestätigung des langfristigen Aufwärtstrends wird ein Kaufsignal ausgelöst, wenn der kurzfristige SMA5 von unter SMA20 nach oben zurückprallt. Dies deutet darauf hin, dass sich der Markt nach einem kurzfristigen Rückgang in einem Aufwärtstrend erholt.
  3. Wenn SMA20 SMA5 kreuzt, wird ein Schlusssignal ausgelöst. Dies deutet darauf hin, dass die kurzfristige Aufwärtsdynamik nachgelassen hat und möglicherweise eine Anpassungsphase eintreten wird.
  4. Die Strategie beinhaltet außerdem eine Zeitfilterfunktion, welche den Zeitbereich des Backtests einschränken und die Flexibilität der Strategie erhöhen kann.

Strategische Vorteile

  1. Die Strategielogik ist klar und einfach, leicht zu verstehen und umzusetzen und beinhaltet keine komplexen Berechnungsprozesse.
  2. Durch die koordinierte Verwendung gleitender Durchschnitte mehrerer Perioden können wir Marktrauschen wirksam herausfiltern und die Zuverlässigkeit von Handelssignalen verbessern.
  3. Die Strategie konzentriert sich auf Rückzugsmöglichkeiten in Trendmärkten, was dem Kernkonzept des „Trendhandels“ entspricht.
  4. Die Verwendung von SMA anstelle von EMA verringert die Empfindlichkeit gegenüber Preisänderungen und reduziert falsche Signale.
  5. Die Ein- und Ausstiegslogik ist klar, was die Ausführung und Risikokontrolle erleichtert.

Strategisches Risiko

  1. Das gleitende Durchschnittssystem weist Verzögerungen auf, die zu nicht optimalen Ein- und Ausstiegszeitpunkten führen können.
  2. In einem volatilen Markt können häufige Überkreuzungen des gleitenden Durchschnitts zu viele falsche Signale erzeugen.
  3. Der Strategie fehlt ein Volatilitätsfiltermechanismus, und in Zeiten hoher Volatilität kann es zu größeren Drawdown-Risiken kommen.
  4. Ohne die Zusammenarbeit mit anderen technischen Indikatoren wie dem Handelsvolumen zu berücksichtigen, muss die Zuverlässigkeit des Signals verbessert werden.
  5. Feste gleitende Durchschnittsparameter sind möglicherweise nicht für alle Marktumgebungen geeignet.

Richtung der Strategieoptimierung

  1. Führen Sie den ATR-Indikator zur Volatilitätsfilterung ein und vermeiden Sie den Handel bei zu hoher Volatilität.
  2. Fügen Sie einen Volumenbestätigungsmechanismus hinzu, um die Zuverlässigkeit von Handelssignalen zu verbessern.
  3. Entwickeln Sie einen adaptiven Mechanismus für gleitende Durchschnittszyklen, um eine bessere Anpassung der Strategie an unterschiedliche Marktumgebungen zu ermöglichen.
  4. Fügen Sie einen Trendstärkefilter wie den ADX-Indikator hinzu, um den Handel mit starken Trends sicherzustellen.
  5. Verbessern Sie den Stop-Loss-Mechanismus, beispielsweise durch das Hinzufügen eines Trailing-Stops, um die Risiken besser zu kontrollieren.

Zusammenfassen

Diese Strategie verwendet gleitende SMA-Durchschnitte über mehrere Perioden, um ein Handelssystem aufzubauen, das sich auf die Nutzung von Rückzugsmöglichkeiten in langfristigen Aufwärtstrends konzentriert. Der Strategieentwurf ist prägnant und praxisnah, mit guter Verständlichkeit und Umsetzbarkeit. Durch die Einführung von Optimierungsmaßnahmen wie Volatilitätsfilterung und Volumenbestätigung sollen die Robustheit und Zuverlässigkeit der Strategie weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Long-Term Growing Stock Strategy", overlay=true)
// Date Range
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2014"),title="Start Date", group="Backtest Time Period",tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " +"zone of the chart or of your computer.")
backtestEndDate = input(timestamp("31 Dec 2024"), title="End Date", group="Backtest Time Period")
// STEP 2. See if current bar falls inside the date range
inTradeWindow = true


// Calculate EMAs
// ema20 = ta.ema(close, ema20_length)
// ema60 = ta.ema(close, ema60_length)
// ema120 = ta.ema(close, ema120_length)
sma5 = ta.sma(close, 5)
sma10 = ta.sma(close, 10)
sma20 = ta.sma(close, 20)
sma60 = ta.sma(close, 60)
sma120 = ta.sma(close, 120)

// Long-term growth condition: EMA 20 > EMA 60 > EMA 120
longTermGrowth = sma20 > sma60
//  and ema60 > ema120

// Entry condition: Stock closes below EMA 20 and then rises back above EMA 10

// entryCondition = ta.crossover(close, ema20) or (close[1] < ema20[1] and close > ema20)
entryCondition =  sma5[1] <= sma20[1] and sma5 > sma20
// ta.crossover(sma5, sma20)

// Exit condition: EMA 20 drops below EMA 60
// exitCondition = ema5 < ema60 or (year == 2024 and month == 12 and dayofmonth == 30)
exitCondition = ta.crossover(sma20, sma5)

// Execute trades
if entryCondition and inTradeWindow
    strategy.entry("Long Entry", strategy.long)

if exitCondition and inTradeWindow
    strategy.close("Long Entry")
// plotchar(true, char="sma5: " + str.tostring(sma5))
// plotchar(true, char="sma5: " + sma20)
// label.new(x=bar_index, y=high + 10, text="SMA 5: " + str.tostring(sma5), color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.small)
// label.new(x=bar_index, y=low, text="SMA 20: " + str.tostring(sma20), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)


// x = time + (time - time[1]) * offset_x

//     var label lab = na
//     label.delete(lab)
//     lab := label.new(x=x, y=0, text=txt, xloc=xloc.bar_time, yloc=yloc.belowbar, color=color.red, textcolor=color.black, size=size.normal, style=label.style_label_up)
//     label.set_x(lab, x)



// Plot EMAs for visualization
// plot(ema20, color=color.red, title="EMA 20")
// plot(ema60, color=color.green, title="EMA 60")
// plot(ema120, color=color.blue, title="EMA 120")