Die Ressourcen sind geladen. Beförderung...

Strategie für eine doppelte Kreuzung von gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie basiert auf dem goldenen Kreuz und dem Todeskreuz von doppelten gleitenden Durchschnitten. Sie geht lang, wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt geht, und schließt die Position, wenn der kurzfristige gleitende Durchschnitt unter den langfristigen gleitenden Durchschnitt geht. Die Strategie ist einfach und leicht zu verstehen, geeignet für Anfänger zu lernen.

Strategie Logik

Die Strategie basiert hauptsächlich auf den Indikatoren sma (close, 14) und sma (close, 28).

Zuerst definieren Sie die kurzen und langen gleitenden Durchschnitte:

short_ma = sma(close, 14)  
long_ma = sma(close, 28)

Dann bestimmen Sie Ein- und Ausstieg nach dem goldenen Kreuz und dem Todeskreuz:

longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma) 

Verlängern, wenn der kurze MA über den langen MA kreuzt:

strategy.entry("Buy", strategy.long, when = longCondition)

Schließungsposition, wenn der kurze MA unter den langen MA fällt:

strategy.close_all(when = shortCondition) 

Die Logik ist einfach und klar, wobei die Kreuzungen von doppelten MAs zur Bestimmung von Eingängen und Ausgängen verwendet werden.

Analyse der Vorteile

  • Einfache Logik, leicht für Anfänger zu bedienen
  • Verwenden von MA-Kreuzungen zur Ermittlung von Trends
  • Anpassbare MA-Perioden für die Optimierung von Parametern
  • Ermöglicht den Stop-Loss zur Kontrolle von Einzelhandelsverlusten

Risikoanalyse

  • Anfällig für Marktschwankungen, kann mehrere Verlustgeschäfte auslösen
  • Verzögerung der Vermarktungsbeihilfen kann zu Preisumkehrpunkten führen
  • Anfällig für die Verstopfung in der Nähe von MA-Übergangsstellen
  • Notwendigkeit der Optimierung von MA-Perioden, verschiedene Perioden können zu unterschiedlichen Ergebnissen führen
  • Nicht in der Lage, Verluste schnell zu reduzieren, wenn sich der Trend heftig ändert

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren von MA-Perioden, um die beste Kombination zu finden

Versuche verschiedene kurze und lange MA-Perioden, wie (5, 10), (10, 20), (20, 60) usw., um die optimale Kombination zu finden.

  1. Fügen Sie Filter hinzu, um falsche Signale zu vermeiden

Hinzufügen von Filtern wie Handelsvolumen, Preisunterschiede usw. in der Nähe von MA-Kreuzungen, um übermäßige Transaktionen in verschiedenen Märkten zu vermeiden.

  1. Einbeziehung von Stop-Loss

Sie können den Stop-Loss-Preis festlegen oder die MA als Stop-Loss-Linie verwenden, um Einzelhandelsverluste zu kontrollieren.

  1. Kombination mit anderen Indikatoren

Zusätzliche Indikatoren wie MACD, KDJ usw. werden hinzugefügt, um die Strategieleistung zu verbessern.

  1. Optimierung der Einstiegspunkte

Finden Sie bessere Einstiegspunkte in der Nähe von MA, anstatt direkt an der Kreuzung einzutreten.

Zusammenfassung

Die Dual-MA-Strategie ist für Anfänger einfach zu verwenden. Aber sie ist empfindlich gegenüber Marktschwankungen und birgt Verlustrisiken. Wir können sie verbessern, indem wir Parameter optimieren, Filter hinzufügen, Stop Loss integrieren, andere Indikatoren kombinieren usw. Sie kann bei starken Trends gut funktionieren, sollte aber mit Vorsicht oder angemessenem Stop Loss in den unterschiedlichen Märkten verwendet werden.
[/trans]


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)

minGainPercent = input(0.6)
gainMultiplier = minGainPercent * 0.01 + 1


longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))


avg_protection = input(1)
gain_protection = input(1)


strategy.entry("Buy", strategy.long, when = longCondition    and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition  and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Mehr