Basierend auf der Golden Cross- und Death Cross-Strategie mit doppeltem gleitendem Durchschnitt


Erstellungsdatum: 2024-02-27 16:21:02 zuletzt geändert: 2024-02-27 16:21:02
Kopie: 0 Klicks: 686
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf der Golden Cross- und Death Cross-Strategie mit doppeltem gleitendem Durchschnitt

Überblick

Diese Strategie ist eine typische Moving Average Crossover-Strategie, die zwei Gruppen von Mittellinien, eine Gruppe von schnellen Mittellinien und eine Gruppe von langsamen Mittellinien gleichzeitig verwendet. Wenn eine schnelle Mittellinie über die langsame Mittellinie geht, erzeugt sie ein Kaufsignal. Wenn eine schnelle Mittellinie unter die langsame Mittellinie geht, erzeugt sie ein Verkaufsignal.

Strategieprinzip

Die Hauptlogik der Strategie ist die Bestimmung der Einstiegs- und Ausstiegszeiten auf der Grundlage der Kreuzung zweier Gruppen von schnellen Mittelwerten.

Zuerst berechnen wir zwei Gruppen von schnellen Durchschnittslinien:

  • Die erste Gruppe schneller EMAs dauerte 8 Tage.
  • Zweite schnelle EMA, 21 Tage lang
  • Die erste Gruppe, die langsamere SMA, dauert 50 Tage.
  • Die zweite Gruppe, die Slow SMA, dauerte 200 Tage.

Dann wird beurteilt, ob die schnelle EMA Gold- oder Dead-Fork-Slow-SMA ist:

  • Wenn die EMA am 8. Tag über dem 50-Tage-SMA liegt, ist das Goldfork-Signal
  • Wenn der 8-Tage-EMA unter dem 50-Tage-SMA liegt, ist dies ein Tiefzweigsignal.

Um falsche Signale zu filtern, wurde eine zweite Gruppe von EMA- und SMA-Bestätigungen hinzugefügt:

  • Die Handelssignale werden nur dann gesendet, wenn die 21-Tage-EMA auch über oder unter dem 50-Tage-SMA liegt

Auf diese Weise können viele falsche Signale durch die Bestätigung von zwei Gruppen von schnellen Gleichlinien gefiltert und somit die Zuverlässigkeit der Signale verbessert werden.

Wenn die Beurteilung ein Kaufsignal erzeugt, machen Sie einen Auftritt; Wenn die Beurteilung ein Verkaufsignal erzeugt, machen Sie einen Auftritt.

Darüber hinaus hat die Strategie eine Stop-Stop-Loss-Logik eingerichtet. Die Stop-Stop- und Stop-Loss-Preise werden auf der Grundlage der eingestellten Gewinn- und Verlustquote verfolgt, wenn Positionen gehalten werden.

Analyse der Stärken

Die Strategie hat folgende Vorteile:

  1. Die Verwendung von Doppel-Einheit-Kombinationen kann falsche Signale effektiv filtern und die Signalgenauigkeit verbessern
  2. Kombination aus EMA und SMA, kombiniert mit EMA-Sensitivität für aktuelle Preisveränderungen und SMA-Glattheit
  3. Stop-Loss-Einstellungen, die Gewinne und Risiken kontrollieren
  4. Einfach zu verstehen und zu ändern
  5. Anpassbare Parameter für verschiedene Marktumgebungen

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Eine durchschnittliche Strategie ist anfällig für mehr Schwankungen, kleine Gewinne und kleine Verluste.
  2. In einer abrupten Trendwende kann es zu größeren Verlusten kommen
  3. Die falsche Einstellung der Parameter kann auch zu einer schlechten Ertragsleistung führen

Um das Risiko zu kontrollieren, empfiehlt es sich:

  1. Anpassung der Parameterpalette an unterschiedliche Marktumstände
  2. Optimierung der Parameter auf Basis der Rückmeldungsergebnisse, um die Strategie besser auf den Zielmarkt abzustimmen
  3. Stop-Loss-Einstellungen, um die Größe des Einzelschadens zu kontrollieren

Optimierungsrichtung

Die Strategie kann auch in folgenden Bereichen optimiert werden:

  1. Versuchen Sie, mehr schnelle und langsame Mittellinienkombinationen zu testen, um die beste Kombination zu finden.
  2. Automatische Optimierungsparameter mit Hilfe von maschinellem Lernen oder genetischen Algorithmen
  3. Der Trend-Anzeige-Indikator wird erhöht, um einen Abweichhandel zu vermeiden.
  4. Erhöhung der Bewegungs- oder Bewegungsstopps, um die Gewinne besser zu sperren
  5. Signalzuverlässigkeit in Verbindung mit Handelsvolumen oder Volatilitätsindikatoren
  6. Multi-Strategie/Multi-Variante-Kombinationen, die unabhängige Risikoverteilung nutzen

Zusammenfassen

Insgesamt bietet die Binary Equilibrium-Strategie die Möglichkeit, die Handelssignale durch die Kreuzung von schnellen und langsamen Ebenen zu erzeugen und das Stop-Loss-Risiko zu kontrollieren. Die Strategie ist einfach, intuitiv und leicht umsetzbar. Die Strategie kann nach Markt- und Bedarfparametern optimiert werden.

Strategiequellcode
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 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/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)