Golden Cross Death Cross Strategie


Erstellungsdatum: 2023-10-11 16:33:18 zuletzt geändert: 2023-10-11 16:33:18
Kopie: 0 Klicks: 676
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie nutzt die Gold-Cross- und Dead-Fork-Prinzipien eines einfachen Moving Averages, um eine Long-Shoring-Position zu realisieren. Wenn die Fast-Line von unten die Slow-Line durchbricht, machen Sie mehr; wenn die Fast-Line von oben nach unten die Slow-Line durchbricht, machen Sie weniger.

Strategieprinzip

Die Strategie definiert zunächst die Start- und Endzeit der Rückmessung und setzt dann die Berechnungsparameter für die beiden Mittelwerte ein, einschließlich der Mittelwertart und der Periodenlänge.

Berechnen Sie die Werte der beiden Mittelwerte mit der Funktion getMAType ((). FastMA ist der Kurz- und SlowMA der Langzeit-Mittelwert.

Die Kernlogik der Strategie lautet:

  • Wenn fastMA auf slowMA übertragen wird, wird ein Mehrsignal lang ausgesendet;

  • Wenn ein schneller MA unter einem langsameren MA liegt, wird ein Short-Signal ausgesendet.

Schließlich wird in der Rückmessphase eine Long-Position-Strategie bei einem Mehr-Signal und eine Leer-Position-Strategie bei einem Leer-Signal angewendet.

Analyse der Stärken

  • Die Strategie ist klar, einfach und leicht zu verstehen.
  • Die Verwendung eines weit verbreiteten linear-gleichförmigen Kreuzungsprinzips ist für die meisten Aktienarten geeignet.
  • Anpassungsfähige Mittelwerttypen und -parameter.
  • Die Strategie basiert auf einer Schachtelstruktur, wobei die Funktionen der einzelnen Teile klar definiert sind, um eine spätere Optimierung zu ermöglichen.

Risikoanalyse

  • Die Durchschnittslinie hat eine gewisse Verzögerung, was dazu führt, dass man einige Handelschancen verpasst.
  • Es gibt keine wirksamen Filter für die schwankenden Märkte, sie sind leicht zu erwischen.
  • Die Optimierung der Parameter ist nicht umfassend genug und erfordert die Hilfe von Experten.
  • Die Risiken und Verluste eines einzelnen Handels sind nicht effektiv zu kontrollieren.

Die Optimierung von Risiken kann weiter vorangetrieben werden durch:

  1. Das Programm wurde in den letzten Jahren von der Regierung der Vereinigten Staaten von Amerika unterstützt.

  2. Erhöhung der Stop-Loss-Strategie und Kontrolle von Einmalverlusten.

  3. Die Einführung von Quantitätsindikatoren und ähnlichem, um Schwankungen auf den Märkten zu vermeiden.

  4. Ein Parameter-Optimierungsmechanismus, der automatisch die optimale Parameterkombination sucht.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Erhöhung der Stop-Loss-Strategie, z. B. durch Festlegung eines festen Stop-Loss-Punktes oder durch Verfolgung von Stop-Losses.

  2. Steigerung der Strategie zur Positionsverwaltung, wie z. B. Fixed Positions, Dynamic Positions und die Kontrolle des Handelsrisikos.

  3. Die Einführung von Filtern, die in Kombination mit anderen technischen Indikatoren Trends erkennen, erhöht die Gewinnquote.

  4. Optimieren Sie die Parameter-Einstellungen und suchen Sie nach den optimalen Parametern durch eine Gittersuche, eine lineare Regression usw.

  5. Erweitern Sie die Strategie, mehr Devisen zu tätigen, wie z. B. Breakout-Umkehrungen, Lagerstücksbau in Chargen usw., um den Handel zu bereichern.

  6. Die Zunahme der Energiemesswerte verhindert, dass sie bei Erschütterungen eingeschlossen werden.

  7. Die Handelsvariante wurde erweitert und umfasst Aktienindex-Futures, Devisen und digitale Währungen.

Zusammenfassen

Diese Strategie basiert auf dem Kreuzungsprinzip des Moving Averages, um die Auswahl von Aktien zu realisieren. Die Strategie ist einfach, klar, breit verbreitet, anpassungsfähig und hat einen gewissen praktischen Wert. Die Strategie hat jedoch auch eine gewisse Verzögerung und kann keine wirksamen Schwingungen filtern. In Zukunft kann die Strategie optimiert werden, indem sie die Stop-Loss-Parameter verbessert, optimiert und Filter hinzugefügt wird.

Strategiequellcode
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() =>  true

///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)

source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    res
    
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)

long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)

/////////////// Plotting /////////////// 
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)