Dynamische SMMA- und SMA-Kreuzstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-02 11:38:08
Tags:

img

Übersicht

Diese Strategie verwendet die Crossover-Signale zwischen dem 50-Perioden Smoothed Moving Average (SMMA) und dem 20-Perioden Simple Moving Average (SMA) zur Bestimmung von Ein- und Ausstiegen. Sie erzeugt Kaufsignale, wenn die schnelle SMA-Linie über die langsame SMMA-Linie überschreitet, und Verkaufssignale, wenn die SMA unter die SMMA überschreitet. Zur gleichen Zeit setzt die Strategie feste Gewinn- und dynamische Stop-Loss-Level fest, um Gewinne zu erzielen und das Risiko zu kontrollieren.

Strategie Logik

  1. Berechnen und zeichnen Sie den 50-Perioden-SMMA und den 20-Perioden-SMA.
  2. Wenn die SMA von unten über die SMMA überschreitet, wird ein Kaufsignal erzeugt. Umgekehrt, wenn die SMA von oben unter die SMMA überschreitet, wird ein Verkaufssignal erzeugt.
  3. Bei Auftreten von Kauf- und Verkaufssignalen werden Kauf bzw. Verkauf-Positionen festgelegt.
  4. Setzen Sie für jede Position eine feste Gewinnspanne von 150 Ticks.
  5. Ein dynamischer Stop-Loss-Level am Schlusskurs der nächsten Bar nach der Signalbar.
  6. Wenn der Preis das Take-Profit-Niveau erreicht, tritt der Take-Profit ein.

Stärken

  1. Die Strategie der doppelten gleitenden Durchschnitte ist mit einfachen Prinzipien einfach zu bedienen und leicht zu verstehen.
  2. SMMA ist eine Verbesserung gegenüber SMA, um Trends besser zu erfassen.
  3. Die Kombination von SMA und SMMA aus verschiedenen Perioden hilft dabei, Geräusche zu filtern und Trends zu erfassen.
  4. Durch die Einführung dynamischer Stop-Loss-Verfahren kann der Stop-Level anhand von Marktveränderungen angepasst werden, um Risiken wirksam zu kontrollieren.
  5. Vordefinierte Gewinnspanne hilft, die Gewinne rechtzeitig einzuschließen.

Risiken

  1. Bei einer doppelten gleitenden Durchschnittsstrategie werden oft falsche Signale generiert und sie werden durch eine Filterung der Signale verfälscht, um einen Überhandel zu vermeiden.
  2. Bei einem festgelegten Take Profit kann ein starker Trend vermieden werden.
  3. Dynamische Stop-Loss-Möglichkeiten können sich bei volatilem Zustand zu nahe am Marktpreis befinden.
  4. Unterschiede zwischen Produkten und Zeitrahmen bedürfen Beachtung.

Optimierungsrichtlinien

  1. Versuche Kombinationen verschiedener Parameter (Zykluszeiten, Filterkriterien usw.) zur Ermittlung des Optimums.

  2. Einbeziehen Sie andere Faktoren wie Lautstärken, um Signale zu filtern.

  3. Verwenden Sie Tools zur Optimierung von Parametern, um optimale Parameter zu finden.

  4. Überlegen Sie, ob Sie auch andere Take-Profit-Methoden wie Trailing Stop oder Profit-Ratio-basierte Exits integrieren.

  5. Berechnung des dynamischen Stop-Loss-Bereichs auf der Grundlage der Marktvolatilität.

Schlussfolgerung

Diese Strategie hat eine relativ einfache Logik, die Trendrichtungen über doppelte gleitende Durchschnitte erfasst. Die flexible Verwendung von festen Take-Profit und dynamischen Stop-Loss für die Gewinnentnahme und Risikokontrolle schafft ein Gleichgewicht zwischen Risiko und Belohnung. Eine weitere Parameter- und Logikoptimierung kann diese Strategie an eine breitere Palette von Marktbedingungen anpassen.


/*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)


Mehr