Quantitative Handelsstrategie auf der Grundlage von Preis-Crossover mit SMA

Schriftsteller:ChaoZhang, Datum: 2024-02-22 17:34:09
Tags:

img

Übersicht

Die Strategie heißt Quantitative Trading Strategy Based on Price Crossover with SMA. Sie erzeugt hauptsächlich Handelssignale, indem sie SMAs verschiedener Perioden berechnet und den Preis-Crossover mit SMAs verfolgt. Wenn der Preis den SMA nach oben bricht, löst sie ein Kaufsignal aus. Wenn der Preis den SMA nach unten bricht, löst sie ein Verkaufssignal aus.

Strategie Logik

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.

Analyse der Vorteile

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.

Risiken und Lösungen

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.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Testen und wählen Sie optimale SMA-Parameterkombinationen aus.

  2. Hinzufügen anderer Indikatoren zur Filter-Signal-Bestätigung, wie RSI, MACD usw. Dies hilft, falsche Signale zu filtern.

  3. Einbeziehung von Stop-Loss-Logik. Setzen Sie maximal verträglichen Verlust oder Trailing-Stop, um Risiken besser zu kontrollieren.

  4. Optimieren Sie den Eintrittszeitpunkt und ziehen Sie es in Betracht, um große Ausbrüche zu gehen, anstatt dem SMA-Crossover streng zu folgen.

  5. Testen Sie zusammengesetzte Strategien und kombinieren Sie sie mit anderen Strategientypen wie dem Trend folgen.

Schlussfolgerung

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")


Mehr