Dynamische SMMA- und SMA-Crossover-Strategie


Erstellungsdatum: 2024-02-02 11:38:08 zuletzt geändert: 2024-02-02 11:38:08
Kopie: 0 Klicks: 788
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische SMMA- und SMA-Crossover-Strategie

Überblick

Die Strategie nutzt ein Kreuzsignal aus einem 50-Zyklus-Schleif-Moving-Average (SMMA) und einem 20-Zyklus-Simple-Moving-Average (SMA), um zu entscheiden, wann man kauft und verkauft. Es erzeugt ein Kaufsignal, wenn ein schneller SMA einen Aufwärtstrend über den langsameren SMA aufweist. Es erzeugt ein Verkaufsignal, wenn ein schneller SMA einen Abwärtstrend über den SMMA aufweist.

Strategieprinzip

  1. Berechnen und zeichnen Sie 50-Zyklus-SMMA und 20-Zyklus-SMA.
  2. Wenn der SMA von unten nach oben durch die SMMA bricht, erzeugt er ein Kaufsignal. Wenn der SMA von oben nach unten durch die SMMA bricht, erzeugt er ein Verkaufsignal.
  3. Wenn ein Kauf- und ein Verkaufssignal auftritt, werden Positionen für “Buy” und “Sell” eingerichtet.
  4. Für jede Position wurden 150 Fixpunkte gesetzt.
  5. Setzen Sie einen dynamischen Stop-Loss auf die nächste K-Linie, die das Signal erzeugt.
  6. Wenn der Preis die Stop-Loss-Liste berührt, wird der Preis gestoppt; wenn er die Stop-Loss-Liste berührt, wird der Preis gestoppt.

Analyse der Stärken

  1. Die Doppel-Einheit-Strategie ist einfach zu bedienen, die Prinzipien sind einfach und leicht zu verstehen.
  2. SMMA ist eine Verbesserung des SMA, um Trends besser zu erfassen.
  3. Die Kombination von SMA und SMMA in verschiedenen Phasen ermöglicht es, Trends gleichzeitig mit den Wellen zu erfassen.
  4. Die Verwendung von dynamischen Stop-Losses ermöglicht die Anpassung der Stop-Loss-Position an die Veränderung der Marktlage und wirksame Risikokontrolle.
  5. Die vorgefertigte Stop-Login hilft, die Gewinne rechtzeitig zu sperren.

Risikoanalyse

  1. Die Doppel-Einheit-Strategie kann leicht zu falschen Signalen führen und wird arbitragiert. Sie kann die Signale angemessen filtern und zu häufigen Transaktionen vermeiden.
  2. Der Fixstop kann leicht verpasst werden. Es ist möglich, einen mobilen Stop oder einen Profit-Ratio-Stop einzustellen.
  3. Die dynamischen Stop-Losses können bei starken Schwankungen zu eng sein, und die Stop-Loss-Marge sollte entsprechend gelockert werden.
  4. Die Unterschiede zwischen den verschiedenen Sorten und den Periodiparametern sind zu beachten.

Optimierungsrichtung

  1. Kombinationen verschiedener Parameter (Zykluszahl, Filterbedingungen usw.) getestet werden können, um die optimale Parameter zu finden;

  2. Das Filtersignal kann mit anderen Faktoren kombiniert werden, wie z. B. einem Anstieg des Umsatzes;

  3. Optimierung der Parameter mit Hilfe eines Parameteroptimierungstools;

  4. Alternative Stoppmethoden, z. B. in Kombination mit Bewegungsstopp, Proportionsstopp und anderen Stoppmethoden, können in Betracht gezogen werden.

  5. Die dynamische Stop-Loss-Marge kann in Verbindung mit der Marktfluktuation berechnet werden.

Zusammenfassen

Die Strategie funktioniert einfach und erfasst die Richtung der Trends durch eine doppelte Gleichgewichtung. Die Strategie nutzt flexible Fix-Stopps und dynamische Stop-Losses, um Gewinne zu sichern und Risiken, nennbare Risiken und Gewinne zu kontrollieren. Die Strategie kann durch Optimierung von Parametern und Regeln weiter an die breitere Marktumgebung angepasst werden.

Strategiequellcode
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)

// Define 50 SMMA
smma50 = sma(close, 50)

// Define 20 SMA
sma20 = sma(close, 20)

// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")

// Initialize TP and SL variables
tp = 150
var float sl_price = na

// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)

// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)

// Update stop loss level on every crossover
if (buySignal or sellSignal)
    sl_price := close[bar_index + 1]

// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)