Diese Strategie ist eine Trend-Handelsstrategie, die auf gleitenden Durchschnitten basiert. Sie verwendet 3 gleitende Durchschnitte mit verschiedenen Parametern, um Handelssignale zu generieren. Sie geht lang, wenn der Preis über den gleitenden Durchschnitt überschreitet, und geht kurz, wenn der Preis darunter überschreitet. Die Strategie hat 3 gleitende Durchschnittslinien für einen stufenweisen Eintrag lang oder kurz, wodurch sie dem Trend folgen kann.
Die Strategie berechnet die gleitende Durchschnittslinie ma mit der Länge len mit der Funktion sma. Dann berechnet sie 3 weitere gleitende Durchschnittslinien longline1, longline2, longline3, die je nach ma um -4%, -5%, -6% verschoben werden.
Für die Langsignalgenerierung geht, wenn die aktuelle Position flach ist, mit 1 Lot lang, wenn der Preis über die Longline geht1. Wenn bereits 1 Lot lang ist, fügt es 1 weiteres Lot hinzu, wenn der Preis über die Longline geht2. Wenn bereits 2 Lots lang sind, fügt es 1 weiteres Lot hinzu, wenn der Preis über die Longline geht3. Die maximale Longposition beträgt 3 Lots.
Für die Kurzsignalgenerierung, wenn sie bereits lang ist, tritt sie aus allen Long-Positionen aus, wenn der Preis unter ma fällt.
Der stufenweise Einstieg ermöglicht es der Strategie, dem Trend zu folgen.
Risikolösungen:
Die Strategie kann in folgenden Aspekten optimiert werden:
Hinzufügen anderer Indikatoren wie MACD zur Bestimmung der Trendstärke
Optimieren Sie gleitende Durchschnittsparameter, um die beste Kombination zu finden
Anpassung der Größe und des Verhältnisses der Stufenartige, um zu verhindern, dass hohe Preise gejagt werden
Hinzufügen eines auf ATR basierenden Bewegungsstop Loss Mechanismus
Dynamische Anpassung der Positionsgröße anhand der Marktvolatilität, Reduzierung der Größe bei hoher Volatilität
Versuchsparameter für verschiedene Produkte zur Ermittlung des optimalen Symbols
Entwicklung eines Exit-Moduls zur Gewinngewinnung bei bestimmten Mustern
Insgesamt handelt die Strategie basierend auf der Trendrichtung, die durch gleitende Durchschnitte bestimmt wird, und profitiert von Trends über abgestufte Einträge. Aber sie hat einige Verzögerungsprobleme und Risiken, hohe Preise zu verfolgen. Wir können sie optimieren, indem wir Hilfsindikatoren hinzufügen, Parameter optimieren, die Positionsgröße anpassen, Stop-Loss hinzufügen usw., um uns an verschiedene Marktbedingungen anzupassen und stetige Gewinne zu erzielen.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Lenghs") src = input(ohlc4, title = "MA Source") longlevel1 = input(-4.0, title = "Long line 1") longlevel2 = input(-5.0, title = "Long line 2") longlevel3 = input(-6.0, title = "Long line 3") needoffset = input(true, title = "Offset") //Variables size = strategy.position_size mult = 1 / syminfo.mintick //MA ma = sma(src, len) longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult //Lines offset = needoffset ? 1 : 0 plot(ma, color = color.blue) plot(longline1, offset = offset, color = color.lime) plot(longline2, offset = offset, color = color.lime) plot(longline3, offset = offset, color = color.lime) //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2)) if size > 0 strategy.entry("TP", strategy.short, 0, limit = ma)