Die Strategie heißt
Die Kernlogik dieser Strategie besteht darin, den Preis-Crossover mit einem 21-tägigen einfachen gleitenden Durchschnitt (SMA) zu verfolgen. Inzwischen berechnet sie auch einen 50-tägigen SMA und einen 200-tägigen SMA, um den allgemeinen Trend zu bestimmen.
Insbesondere fordert die Strategie den Schlusskurs innerhalb eines gegebenen Datumsbereichs an und berechnet verschiedene SMAs basierend auf Eingabeperioden. Wenn der Preis den 21-Tage-SMA nach oben bricht, setzt er ein Kaufsignal. Wenn der Preis den 21-Tage-SMA nach unten bricht, setzt er ein Verkaufssignal.
Neben der Berechnung von SMAs und der Bestimmung von Crossovers verfolgt die Strategie auch die aktuelle Position. Sie tritt bei Kaufsignal-Triggern in die Position ein und ebnet die Position bei Verkaufsignal-Triggern. Auf diese Weise realisiert sie ein automatisiertes Handelssystem, das auf SMA-Crossover basiert.
Der größte Vorteil dieser Strategie ist, dass sie einfach und leicht zu verstehen und umzusetzen ist. SMA ist ein häufig verwendeter technischer Indikator und SMA-Crossover ist eines der häufigsten Handelssignale. Diese Art von Indikator-Crossover-Strategien kann leicht auf verschiedene Aktien und Zeitrahmen für den automatisierten Handel angewendet werden.
Ein weiterer Vorteil ist, dass diese Strategie durch Anpassung der SMA-Parameter optimiert werden kann. Zum Beispiel können wir verschiedene Kombinationen von SMA-Perioden testen, um die optimale für bestimmte Aktien zu finden. Außerdem kann die Strategie verbessert werden, indem andere Indikatoren zur Bestätigung und Optimierung hinzugefügt werden.
Das größte Risiko dieser Strategie besteht darin, dass Indikatorbasierte Strategien dazu neigen, übermäßige falsche Signale zu erzeugen.
Zu den gängigen Lösungen gehören die Einstellung von Stop Loss, das Abstimmen von Parametern oder das Hinzufügen von Filterbedingungen. Zum Beispiel können wir die maximale Verlustquote festlegen, um das Risiko zu begrenzen, die SMA-Perioden anpassen, um stabilere Parameter zu finden, oder andere Indikatoren verwenden, um einige Handelssignale zu filtern.
Die Strategie kann in folgenden Aspekten optimiert werden:
Testen und wählen Sie optimale SMA-Parameterkombinationen aus.
Hinzufügen anderer Indikatoren zur Filter-Signal-Bestätigung, wie RSI, MACD usw. Dies hilft, falsche Signale zu filtern.
Einbeziehung von Stop-Loss-Logik. Setzen Sie maximal verträglichen Verlust oder Trailing-Stop, um Risiken besser zu kontrollieren.
Optimieren Sie den Eintrittszeitpunkt und ziehen Sie es in Betracht, um große Ausbrüche zu gehen, anstatt dem SMA-Crossover streng zu folgen.
Testen Sie zusammengesetzte Strategien und kombinieren Sie sie mit anderen Strategientypen wie dem Trend folgen.
Die Strategie realisiert automatisierten Handel mit einfachen SMA-Crossover-Signalen. Die Vorteile sind einfach zu verstehen und umzusetzen. Die Nachteile sind übermäßige Signale und anfällig für Whipsaws. Wir können es durch Parameter-Tuning, Hinzufügen von Filtern, Stop-Loss usw. verbessern.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true) // Define start and end year inputs start_year = input.int(2022, title="Start Year") end_year = input.int(2022, title="End Year") // Define start and end month inputs start_month = input.int(1, title="Start Month", minval=1, maxval=12) end_month = input.int(12, title="End Month", minval=1, maxval=12) // Define SMA length inputs sma_length = input.int(21, title="SMA Length") sma_length_50 = input.int(50, title="50 SMA Length") sma_length_200 = input.int(200, title="200 SMA Length") // Filter data within the specified date range filter_condition = true filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on) // Define SMAs using the input lengths sma = ta.sma(filtered_close, sma_length) sma_50 = ta.sma(filtered_close, sma_length_50) sma_200 = ta.sma(filtered_close, sma_length_200) // Initialize position var bool in_position = false // Condition for a price cross above SMA within the date range cross_above = filter_condition and ta.crossover(filtered_close, sma) // Condition for a price cross below SMA within the date range cross_below = filter_condition and ta.crossunder(filtered_close, sma) // Buy condition if cross_above in_position := true // Sell condition if cross_below in_position := false // Strategy entry and exit if cross_above strategy.entry("Buy", strategy.long) if cross_below strategy.close("Buy") // Plot the SMAs on the chart plot(sma, color=color.blue, title="21 SMA") plot(sma_50, color=color.red, title="50 SMA") plot(sma_200, color=color.orange, title="200 SMA") // Plot the Buy and Sell signals with "tiny" size plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal") plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")