Die Dual Moving Average Trend Tracking Strategie ist eine quantitative Handelsstrategie, die zwei gleitende Durchschnitte mit verschiedenen Perioden verwendet, um die Trendrichtung des Marktes zu bestimmen.
Die Strategie verwendet zwei gleitende Durchschnitte, darunter einen schnellen gleitenden Durchschnitt (z. B. 10-Periode) und einen langsamen gleitenden Durchschnitt (z. B. 30-Periode). Wenn beide gleitenden Durchschnitte nach oben zeigen, zeigt sie einen Aufwärtstrend an. Wenn beide gleitenden Durchschnitte nach unten zeigen, zeigt sie einen Abwärtstrend an.
Die Strategie berechnet zunächst die schnellen und langsamen gleitenden Durchschnitte. Dann vergleicht sie den aktuellen schnellen gleitenden Durchschnitt mit dem vorherigen Zeitraum, um zu sehen, ob der aktuelle größer ist als der vorherige. Wenn ja, geben Sie den Wert 1 an, der den Aufwärtstrend anzeigt. Andernfalls geben Sie -1 für den Abwärtstrend zu. Tun Sie dasselbe für den langsamen gleitenden Durchschnitt.
Schließlich bestimmen Sie den Trend anhand der Werte der beiden gleitenden Durchschnitte. Wenn beide Werte 1 sind, ist die endgültige Entscheidung 1, was einen Aufwärtstrend anzeigt. Wenn beide -1 sind, ist die endgültige Entscheidung -1, was einen Abwärtstrend anzeigt. Wenn die Werte unterschiedlich sind, behalten Sie die vorherige Trendentscheidung.
Nach Feststellung der Trendrichtung wird die Strategie bei Aufwärtstrend lang und bei Abwärtstrend kurz sein.
Die Strategie umfaßt folgende Bereiche:
Die Strategie birgt auch einige Risiken:
Um die Risiken zu verringern, können die Parameter der gleitenden Durchschnitte vernünftiger festgelegt, andere Indikatoren eingeführt, Stop-Loss und Take-Profit festgelegt und die Positionsgröße entsprechend angepasst werden.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Die Dual Moving Average Trend Tracking Strategie hat eine klare Logik der Verwendung von Dual Moving Averages, um Lärm zu filtern und den Trend zu identifizieren und entlang der Trendrichtung zu handeln. Es handelt sich um eine typische Trendfolgsstrategie. Händler können nur lang oder nur kurz basierend auf der Präferenz wählen. Es gibt immer noch einige Risiken der Strategie. Zusätzliche Indikatoren, Stop Loss / Take Profit sollten hinzugefügt werden, um Risiken zu kontrollieren. Dadurch kann langfristig ein stetiger Gewinn erzielt werden.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © noro // 2020 //@version=4 strategy(title = "Noro's TrendMA Strategy", shorttitle = "TrendMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1) //Settings needlong = input(true, title = "Long") needshort = input(true, title = "Short") fast = input(10, minval = 1, title = "MA Fast (red)") slow = input(30, minval = 2, title = "MA Slow (blue)") type = input(defval = "SMA", options = ["SMA", "EMA"], title = "MA Type") src = input(ohlc4, title = "MA Source") showma = input(true, title = "Show MAs") showbg = input(false, title = "Show Background") //MAs fastma = type == "EMA" ? ema(src, fast) : sma(src, fast) slowma = type == "EMA" ? ema(src, slow) : sma(src, slow) //Lines colorfast = showma ? color.red : na colorslow = showma ? color.blue : na plot(fastma, color = colorfast, title = "MA Fast") plot(slowma, color = colorslow, title = "MA Slow") //Trend trend1 = fastma > fastma[1] ? 1 : -1 trend2 = slowma > slowma[1] ? 1 : -1 trend = 0 trend := trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : trend[1] //Backgrouns colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na bgcolor(colbg, transp = 80) //Trading if trend == 1 if needlong strategy.entry("Long", strategy.long) if needlong == false strategy.close_all() if trend == -1 if needshort strategy.entry("Short", strategy.short) if needshort == false strategy.close_all()