Strategie für den Crossover-Handel mit gleitendem Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2023-11-06 16:38:22
Tags:

img

Übersicht

Diese Strategie basiert auf dem Crossover-Prinzip von gleitenden Durchschnitten zum Handel. Sie verwendet zwei gleitende Durchschnitte und erzeugt Kaufsignale, wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt von unten kreuzt. Verkaufssignale werden erzeugt, wenn der Preis unter einen anderen gleitenden Durchschnitt bricht. Diese Strategie eignet sich für Trending-Märkte, die in der Lage sind, einige Lärmgeschäfte effektiv auszufiltern und den Haupttrend zu erfassen.

Strategie Logik

Diese Strategie verwendet benutzerdefinierte kurzfristige und langfristige gleitende Durchschnittszeiten, Ausgangsgliederungszeiten und gleitende Durchschnittsberechnungsmethoden.

Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt von unten kreuzt, wird ein Kaufsignal generiert. Dies zeigt an, dass der kurzfristige Trend in einen Aufwärtstrend umgestellt wurde und wir kaufen können.

Wenn der Schlusskurs unter den Exit-Drehdurchschnitt fällt, wird ein Verkaufssignal generiert. Dies zeigt eine Trendumkehr an, so dass wir die Position verlassen sollten.

Daher stammen die Handelssignale der Strategie aus der Überschneidung von kurzfristigen und langfristigen gleitenden Durchschnitten und der Beziehung zwischen dem Schlusskurs und dem Ausgangsgliederungsdurchschnitt.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Einfach und einfach umzusetzen.

  2. Anpassungsfähige Parameter passen sich unterschiedlichen Marktbedingungen an.

  3. Die gleitenden Durchschnitte filtern das Geräusch aus und erfassen den Haupttrend.

  4. Kann andere technische Indikatoren wie Trend, Unterstützung/Widerstand zur weiteren Optimierung enthalten.

  5. Kontrollierbares Risiko-Rendite-Verhältnis, hat einen Stop-Loss-Mechanismus.

Risikoanalyse

Die Risiken sind:

  1. Anfällig für falsche Signale auf nicht-trendigen Konsolidierungsmärkten.

  2. Eine falsche Einstellung der Parameter kann zu fehlenden Trends oder zu vielen ungültigen Trades führen.

  3. Eine unsachgemäße Stop-Loss-Platzierung könnte die Verluste erhöhen.

  4. Versagte Ausbrüche können Verluste verursachen.

  5. Die Parameter müssen rechtzeitig angepasst werden, um den Marktveränderungen gerecht zu werden.

Lösungen umfassen die Optimierung von Parametern, die Einbeziehung anderer Filter, die Anpassung von Stops, das Warten auf eine Trendbestätigung vor dem Handel usw.

Optimierungsrichtlinien

Diese Strategie kann verbessert werden, indem

  1. Entwicklung von Mechanismen zur Tendenzbestimmung und Handel nur nach Tendenzbestätigung.

  2. Filter wie Lautstärke oder Volatilität hinzufügen, um Signale zu filtern.

  3. Dynamische Optimierung der gleitenden Durchschnittsperioden.

  4. Optimierung des Stop-Loss-Mechanismus für einen Trailing-Stop.

  5. Einbeziehung von Unterstützung/Widerstand und anderen Indikatoren zur weiteren Bestätigung der Signale.

  6. Anpassung der Parameter anhand verschiedener Produkte und Zeitrahmen.

Schlussfolgerung

Insgesamt ist diese gleitende Durchschnitts-Crossover-Strategie ein einfaches und praktisches Trendfolgensystem. Sie kann an die Marktbedingungen angepasst werden, indem Parameter angepasst werden und die Haupttrendrichtung in den Trending-Märkten erfasst wird. Allerdings sollten Risiken wie Trendfehlidentifikation beachtet werden, und eine ständige Optimierung ist erforderlich, um sich an sich ändernde Märkte anzupassen. Im Allgemeinen hat diese Strategie eine gute Lebensfähigkeit.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 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/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()


Mehr