Zweifelhafte schwebende durchschnittliche Crossover-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-07 16:39:01
Tags:

Übersicht

Diese Strategie verwendet das goldene Kreuz und das Todeskreuz von doppelten gleitenden Durchschnitten, um den Trend zu bestimmen und Kauf- und Verkaufssignale zu generieren. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt von unten kreuzt, tritt ein goldenes Kreuz auf und ein Kaufsignal wird generiert. Wenn der schnelle gleitende Durchschnitt unter den langsamen gleitenden Durchschnitt von oben kreuzt, tritt ein Todeskreuz auf und ein Verkaufssignal wird generiert.

Strategie Logik

Die Strategie besteht aus folgenden Bestandteilen:

  1. Berechnen Sie den Oszillatorwert des Preises in Prozentform. Der Oszillatorwert ist der Prozentsatz des Preises minus ein Medianwert. Der Medianwert wird als Durchschnitt der 20-tägigen Höchst- und Tiefpreise berechnet.

  2. Berechnen Sie den gleitenden Durchschnitt der Oszillatorwerte, z. B. den 20-tägigen gleitenden Hull-Durchschnitt.

  3. Berechnen Sie den Verzögerungswert des gleitenden Durchschnitts, z. B. 12 Tage Verzögerung.

  4. Es wird festgestellt, ob der gleitende Durchschnitt über oder unter den rückläufigen gleitenden Durchschnitt kreuzt, wodurch ein goldenes Kreuz oder ein Todeskreuz ausgelöst wird.

  5. Ausgabe von Kauf- und Verkaufssignalen.

Insbesondere berechnet die Strategie zuerst den Oszillatorwert des Preises, dann den gleitenden Durchschnitt des Oszillators und dann den Verzögerungswert des gleitenden Durchschnitts.

Wenn der Oszillator- gleitende Durchschnitt über den rückständigen gleitenden Durchschnitt überschreitet, wird ein goldenes Kreuzsignal erzeugt, wenn er lang geht.

Durch die Beurteilung der Überschneidung der beiden gleitenden Durchschnitte wird die Handelsrichtung bestimmt.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Verwendung von Doppel gleitenden Durchschnitten filtert falsche Signale und verbessert die Signalzuverlässigkeit.

  2. Die Kombination von schnellen und langsamen gleitenden Durchschnitten erfasst mittelfristige Trends. Die schnelle MA ist empfindlich auf Preisänderungen, während die langsame MA eine nachlassende Qualität aufweist. Die Kombination beider Filter filtert kurzfristiges Rauschen aus und erfasst mittelfristige Trendumkehrungen.

  3. Der Oszillator hebt die Ausbruchpunkte hervor und erzeugt klarere Handelssignale.

  4. Anpassbare MA-Algorithmen und -Parameter eignen sich für verschiedene Marktumgebungen.

  5. Einfache und klare Strategie-Logik, leicht zu verstehen und umzusetzen, Anfängerfreundlich.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Dual-MA-Crossovers haben verzögerte Signale, die möglicherweise die besten Einstiegspunkte vermissen.

  2. Anfällig für falsche Signale während der Marktbereiche.

  3. Die Unfähigkeit, die Trendstärke zu bestimmen, riskiert einen frühen Ausstieg während der Bullenmärkte.

  4. Zu viele einstellbare Parameter, schwierig zu optimieren für die besten Parameterkombinationen.

  5. Kein Stop-Loss-Mechanismus, nicht in der Lage, Einzelhandelsverluste zu kontrollieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung von Zulassungsarten und -parametern, Teststabilität in verschiedenen Märkten.

  2. Hinzufügen von Trendindikatoren wie ADX, um unnötige Trades aus falschen Signalen zu vermeiden.

  3. Fügen Sie Stop-Loss-Mechanismen wie Trailing-Stop oder Prozentsatz-Stop hinzu, um Einzelhandelsverluste zu kontrollieren.

  4. Einbeziehen Sie andere Indikatoren wie Volumen, RSI, um die Signalqualität zu verbessern.

  5. Verwenden Sie maschinelles Lernen, um die Parameter automatisch zu optimieren.

  6. Erwägen Sie, die Einstiegsbedingungen etwas zu lockern, um verpasste Trades zu reduzieren.

Zusammenfassung

Diese doppelte gleitende Durchschnitts-Crossover-Strategie erfasst mittelfristige Trendumkehrpunkte, indem sie schnelle und langsame gleitende Durchschnitte kombiniert und kurzfristige Marktgeräusche ausfiltert. Sie hat den Vorteil, einfach, leicht zu verstehen und anfängerfreundlich zu sein. Aber sie hat auch Nachteile wie die Erzeugung falscher Signale und die Unfähigkeit, die Trendstärke zu bestimmen. Die Strategie kann durch Optimierung von MA-Parametern, Hinzufügen von Trendfiltern, Einstellung von Stop-Loss-Bedingungen usw. verbessert werden, um verschiedenen Marktumgebungen zu entsprechen. Insgesamt ist die doppelte MA-Strategie eine praktische technische Indikatorstrategie, die durch Optimierung und Live-Tests überprüft werden sollte.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
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/
// © EvoCrypto

//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")

// INPUTS {
na_1                =   input(false,    title="────────────{ Oscillator }──────────────")

// Osc_Src             =   input(close,    title="Oscillator Source                                ")

Example_Length      =   input(20,       title="Example Length", minval=1)
Osc_Src             =   (highest(Example_Length) + lowest(Example_Length)) / 2

// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example

Osc_Format          =   input("Percent",title="Oscillator Format",              options=["Percent", "Currency"]) 

na_2                =   input(false,    title="─────────────{ Average }──────────────")
Average_Type        =   input("Hull",   title="Average Type",                   options=["Hull", "Sma", "Ema", "Wma"])
Length              =   input(50,       title="Average Length", minval=1)
Lagg                =   input(12,       title="Average Lagg",   minval=1)
Display_MA          =   input(true,     title="Display Average")
// }

// SETTINGS {
Osc_Sum             =   
 Osc_Format == "Percent"  ? (close - Osc_Src) / close * 100 :
 Osc_Format == "Currency" ? (close - Osc_Src)               : na

Osc_MA              =   Display_MA == false ? na:
 Average_Type == "Hull"? hma(Osc_Sum, Length)   :
 Average_Type == "Sma" ? sma(Osc_Sum, Length)   :
 Average_Type == "Ema" ? ema(Osc_Sum, Length)   :
 Average_Type == "Wma" ? wma(Osc_Sum, Length)   : na
Osc_MA_1            =   Osc_MA[Lagg]

Cross_Up            =   crossover( Osc_MA, Osc_MA_1)
Cross_Down          =   crossunder(Osc_MA, Osc_MA_1)

Osc_Color           =   Osc_Sum > 0         ? color.new(#bbdefb, 70)  : Osc_Sum < 0          ? color.new(#000000, 70)  : na
Average_Color       =   Osc_MA  > Osc_MA_1  ? color.new(#311b92, 100) : Osc_MA  < Osc_MA_1   ? color.new(#b71c1c, 100) : na
// }

// PLOT {
plot(Osc_Sum,                           title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)

Plot_0              =   plot(Osc_MA,    title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1              =   plot(Osc_MA_1,  title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1,                    title="Average",    color=Average_Color)

plotshape(Cross_Up   ? Osc_MA_1 : na,   title="Cross Up",   color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na,   title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }

// STRATEGY {
if (Cross_Up)
    strategy.entry("Long", strategy.long)
if (Cross_Down)
    strategy.entry("Short", strategy.short)
// }

Mehr