Strategie für eine doppelte Kreuzung von gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2023-11-22 16:10:21
Tags:

img

Übersicht

Dies ist eine einfache quantitative Handelsstrategie, die auf gleitenden Durchschnittsindikatoren basiert. Sie verwendet das goldene Kreuz und das Todeskreuz von schnellen und langsamen gleitenden Durchschnitten, um Ein- und Ausstiegssignale zu bestimmen. Wenn der schnelle MA über den langsamen MA von unten überschreitet, wird ein Kaufsignal generiert. Wenn der schnelle MA unter den langsamen MA von oben überschreitet, wird ein Verkaufssignal generiert.

Strategie Logik

Die Strategie nutzt hauptsächlich die Trendverfolgungsfähigkeit von gleitenden Durchschnitten. Der schnelle MA hat einen kleineren Parameter und kann schnell auf Preisänderungen reagieren, während der langsame MA einen größeren Parameter hat und den langfristigen Trend darstellt. Die schnelle MA-Kreuzung über den langsamen MA signalisiert eine Umkehr in kurzfristigen Bewegungen und den Beginn eines Aufwärtstrends. Die schnelle MA-Kreuzung unter dem langsamen MA signalisiert eine Umkehr in einen Abwärtstrend. Indem wir diese Signale erfassen, können wir mit der Dynamik handeln.

Insbesondere definiert diese Strategie einen 5-tägigen (schnellen) und 34-tägigen (langsamen) doppelten gleitenden Durchschnitt. Sie berechnet diese beiden MA täglich und prüft, ob der schnelle MA über oder unter dem langsamen MA überschreitet. Wenn ein goldenes Kreuz passiert, geht es lang. Wenn ein Todeskreuz passiert, tritt es aus.

Analyse der Vorteile

Dies ist eine einfache und leicht verständliche Strategie, die für Anfänger des Quant-Tradings geeignet ist.

Durch die Anpassung der MA-Tageparameter kann sie sich an Preisschwankungen in verschiedenen Zeitrahmen anpassen.

Wenn die Preise anfangen, die Richtung umzukehren und das Todeskreuz des MA passiert, wird es die Positionen rechtzeitig verlassen, um Risiken zu kontrollieren.

Risikoanalyse

Die doppelte MA-Strategie birgt Risiken wie fehlgeschlagene Stop-Losses oder Kurvenanpassungsausfälle.

  1. MAs haben Verzögerungseffekte und können erst dann Signale erzeugen, wenn sich der Trend bereits umgekehrt hat.

  2. In den unterschiedlichen Märkten kann es viele falsche Signale geben, was zu unnötigen Trades, erhöhten Kosten und Verschiebungen führt.

  3. Es stützt sich ausschließlich auf technische Indikatoren, ohne die Fundamentalanalyse zu kombinieren.

  4. Es berücksichtigt nicht die Positionsgröße und das Risikomanagement.

Optimierungsrichtlinien

Um seine Stärken besser zu nutzen und Risiken zu reduzieren, können Optimierungen wie folgt vorgenommen werden:

  1. Fügen Sie Trendindikatoren wie MACD und Volatilitätsindikatoren wie KDJ hinzu, um strengere Einstiegsregeln festzulegen und falsche Signale auszufiltern.

  2. Einbeziehen Sie geeignete Stop-Loss-Mechanismen, z. B. Ausstieg, nachdem die Preise einen bestimmten Prozentsatz nach dem goldenen Kreuz fallen oder nachdem die Preise einen bestimmten Bereich von neuen Höchst-/Tiefstwerten abnehmen.

  3. Optimieren Sie Kombinationen von schnellen und langsamen MA-Tagen, um sich an Preisschwankungen in verschiedenen Zeitrahmen anzupassen.

  4. Referenzbreite Marktindizes zur Bestimmung des allgemeinen Marktregimes und zur Vermeidung von Überhandelungen auf verschiedenen Märkten.

  5. Einbeziehen von Handelsvolumenänderungen, um die Zuverlässigkeit von Trendsignalen zu überprüfen.

Schlussfolgerung

Die doppelte gleitende Durchschnitts-Crossover-Strategie ist eine sehr typische quantitative Handelsstrategie. Sie hat Vorteile wie Einfachheit, Intuitivität und Einfachheit der Implementierung. Mit kontinuierlichem Testen und Parameter-Tuning kann sie anständige Ergebnisse liefern. Allerdings gibt es Probleme wie die Identifizierung von Nachlasssignalen und falschen Signalen. Zusätzliche Filter und Risikomanagementmechanismen müssen integriert werden, um es zu einer stabilen Gewinngenerierungsstrategie zu machen.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
// This strategy is a modification to the "Bill Williams, Awesome Oscillator
// (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016)
//
// This version of the strategy by Midnight Mouse. 10/4/2018
//
// DESCRIPTION
//
// This indicator plots the oscillator as a column where periods fit for buying
// are marked as green, and periods fit for selling as orange/brown. If the
// current value of AO (Awesome Oscillator) is > the previous, the period is
// deemed fit for buying and the indicator is marked green. If the AO values is
// not over the previous, the period is deemed fit for selling and the indicator 
// is marked orange/brown.
//
// You can change long to short in the Input Settings
//
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy("Awesome Oscillator.MMouse_Lager_BCE")

// === SETTINGS ===

// Strategy start date
FromMonth   = input(defval = 1,    title = "From Month", minval = 1)
FromDay     = input(defval = 1,    title = "From Day",   minval = 1)
FromYear    = input(defval = 2017, title = "From Year",  minval = 2014)

// Strategy settings
nLengthSlow = input(34, minval=1,  title="Length Slow")
nLengthFast = input(5,  minval=1,  title="Length Fast")
allowShorts = input(false,         title="Include Short Trades")
reverse     = input(false,         title="Trade reverse")


// === BODY ===

// Use Heikin-Ashi candles for the buy/sell signal
ha_t        = heikinashi(syminfo.tickerid)
ha_high     = security(ha_t, timeframe.period, high)
ha_low      = security(ha_t, timeframe.period, low)
length      = input( 14 )
price       = open
vrsi        = rsi(price, length)

// Calc (H+L)/2 for each length
xSMA1_hl2   = sma((ha_high + ha_low)/2, nLengthFast)
xSMA2_hl2   = sma((ha_high + ha_low)/2, nLengthSlow)

// Get SMA difference (Fast - Slow)
xSMA1_SMA2  = xSMA1_hl2 - xSMA2_hl2

// Derive the color of the column
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d

// Determine the position to take (Long vs. Short)
pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1],  1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos))

// Only apply strategy from the start date
if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00))
    if (possig == 1)
        // Market is currently fit for a Long position
        strategy.entry("Long", strategy.long)

    if (possig == -1)
        // Market is currently fit for a Short position
        if(allowShorts)
            // Shorts are allowed. Record a Short position
            strategy.entry("Short", strategy.short)	   	    
        else
            // Shorts are not allowed. Closec the Long position.
            strategy.close("Long")

// Define the candle colors
//barcolor(possig == -1 ? red : 
//         possig ==  1 ? green : 
//         blue )

// Plot the oscillator
plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)

Mehr