Golden Cross- und Death Cross-Strategie basierend auf dem gleitenden Durchschnitt


Erstellungsdatum: 2024-01-29 16:02:08 zuletzt geändert: 2024-01-29 16:02:08
Kopie: 0 Klicks: 592
1
konzentrieren Sie sich auf
1617
Anhänger

Golden Cross- und Death Cross-Strategie basierend auf dem gleitenden Durchschnitt

Überblick

Die Strategie basiert auf dem Prinzip der Gold- und Diebstapel-Signalbildung von Moving Averages. Sie kombiniert drei verschiedene Parameter-Sätze von Moving Averages in der kurz-, mittleren und langfristigen Periode, um durch den Vergleich der hohen und niedrigen Beziehungen zwischen den drei Ebenen zu ermitteln, ob der Markt leer ist, und erzeugt Handelssignale.

Strategieprinzip

Die Strategie setzt drei Moving Averages ein: einen kurzfristigen einfachen Moving Average, einen mittelfristigen gewichteten Moving Average und einen langfristigen Index Moving Average. Konkret werden jeweils SMA-Linien mit einer Länge von 1, WMA-Linien mit einer Länge von 20 und EMA-Linien mit einer Länge von 25 verwendet.

Wenn die kurzfristige SMA-Linie die mittlere WMA-Linie durchbricht und der Schlusskurs höher als die WMA-Linie ist, zeigt dies, dass der Markt von unten nach oben umkehrt und ein Mehrkopfsignal bildet. Wenn die kurzfristige SMA-Linie die mittlere WMA-Linie durchbricht oder der Schlusskurs niedriger als die WMA-Linie ist, ist dies ein Hohlkopfsignal.

Analyse der Stärken

Die Strategie kombiniert drei verschiedene Gleichlinien, kurz, mittel und lang, um auf Marktveränderungen in verschiedenen Zyklen zu reagieren und die Genauigkeit der Trendfangung zu verbessern. Besonders die mittelfristige WMA hat einen besseren Effekt, um die Schwankungen zu entschärfen, und kann Fehlsignale effektiv filtern. Außerdem gibt die Strategie nur dann ein Positionssignal aus, wenn die Mehrkopfsignale von SMA und Schlusskurs hoch konsistent sind, was Whipsaws vermeidet und die Effizienz bei jedem Einstieg gewährleistet.

Risikoanalyse

Die Strategie kann mit einem Risiko von Fehlmeldungen verbunden sein. Es kann zu unnötigen Verlusten führen, da die Strategie streng auf die Signale der SMA-Linien angewiesen ist, wenn ein kurzfristiger SMA ein Fehlsignal erzeugt. Außerdem ist die Strategie sehr empfindlich auf die Parameter, und es kann zu einer großen Anzahl von falschen Transaktionen führen, wenn die Parameter nicht zum richtigen Zeitpunkt eingestellt werden, wenn der Markt in eine Schwankungszone eintritt.

Um diese Risiken abzuwenden, empfiehlt es sich, die Länge der Mittellinie anzupassen, die Handelsbedingungen angemessen zu lockern und Stop-Losses einzurichten, um einzelne Verluste zu kontrollieren. Strategiehandel kann auch vorübergehend gestoppt werden, wenn die Markttrends nicht sichtbar sind.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Hinzufügen von mehr Arten von Durchschnittslinienindikatoren, wie KC-Linien, um eine Sammlung von Indikatoren zu bilden und die Genauigkeit der Beurteilung zu verbessern

  2. Faktoren, die den Umsatz erhöhen, wie z. B. der Umsatzrückgang

  3. In Kombination mit Volatilitätsindikatoren verhindern Sie die Wirkung von Erschütterungen

  4. Die Parameter werden mit Hilfe von Machine Learning trainiert und optimiert.

Zusammenfassen

Die Strategie beurteilt die Marktrückstände anhand der realen Beziehung zwischen den Kreuzungen und den Schlusspreisen der drei Durchschnittslinien. Sie ist einfach und zuverlässig. Sie kombiniert die Durchschnittslinien in verschiedenen Längenräumen und kann Trends effektiv erkennen. Die Signalqualität ist hoch.

Strategiequellcode
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len1 = input.int(1, title="SMA #1 Length", minval=1)
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1)

len2 = input.int(20, title="HMA #2 Length", minval=1)
src2 = input(close, title="HMA Source #2")
out2 = ta.hma(src2, len2)
plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1)

len3 = input.int(25, title="EMA #3 Length", minval=1)
src3 = input(close, title="EMA Source #3")
out3 = ta.ema(src3, len3)
plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1)

// Define the long condition
longCondition = (out1 > out2 and close > out2)

// Define the short condition
shortCondition = (out1 < out2 or close < out2)

// Entry conditions
if (longCondition)
    strategy.entry("Long",strategy.long)
else if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trade channel plot
PeriodLookBack = input(55, title="Period Look Back")
xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack))
xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack))
plot(xHighest55[1], color=color.red, title="HH")
plot(xLowest55[1], color=color.green, title="LL")



//@version=5
//indicator("Custom Moving Averages", shorttitle="CMA", overlay=true)

shortLength = input(defval=40, title="Short Length")
longLength = input(defval=80, title="Long Length")

// Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D"
shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength))
shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength))

longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength))
longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength))

shortAverageLine = (shortTopBorder + shortBottomBorder) / 2
longAverageLine = (longTopBorder + longBottomBorder) / 2

plot(shortAverageLine, color=color.new(#fc0000, 0))
plot(longAverageLine, color=color.new(#01ff27, 0))