Handelsstrategie mit doppelten gleitenden Durchschnitten auf der Grundlage eines gedämpften synthetischen Preises

Schriftsteller:ChaoZhang, Datum: 2023-09-19 17:13:28
Tags:

Übersicht

Dies ist eine doppelte gleitende Durchschnittshandelsstrategie, die auf dem Detrended Synthetic Price (DSP) basiert. DSP ist eine Funktion, die mit dem dominanten Zyklus der realen Preisdaten in Phase ist, die durch Subtrahieren einer Halbzyklus-EMA von der Viertelzyklus-EMA erhalten wird. Wenn DSP über das obere Band oder unter das untere Band kreuzt, werden einseitige Trades getätigt.

Strategie Logik

  1. Berechnen Sie den 1/2-Zyklus-HL-Durchschnitt xHL2 des Preises.

  2. Berechnen Sie die 1/4-Zyklus-EMA (xEMA1) und die 1/2-Zyklus-EMA (xEMA2) von xHL2 anhand der Länge.

  3. Erhalten Sie DSP, indem Sie xEMA2 von xEMA1 subtrahieren.

  4. Setzen Sie die Parameter des oberen und unteren Bandes, gehen Sie lang, wenn DSP über das obere Band überschreitet, und gehen Sie kurz, wenn Sie unter dem unteren Band überschreiten.

  5. Der Umkehrparameter kann zwischen langer und kurzer Richtung wechseln.

Analyse der Vorteile

Vorteile dieser Strategie:

  1. DSP erfasst den vorherrschenden Preiszyklus und vermeidet eine Fehlorientierung durch kleinere Zyklen.

  2. Das Dual EMA-Design verfolgt effektiv die vorherrschenden Zyklusveränderungen.

  3. Einfache obere/untere Bands vermeiden einen Überhandel.

  4. Einfache Umstellung zwischen Long/Short unter Verwendung des umgekehrten Parameters, anpassungsfähig an verschiedene Marktumgebungen.

  5. Keine komplexe Parameteroptimierung erforderlich, einfach und praktisch.

Risikoanalyse

Hauptrisiken:

  1. Eine falsche Einstellung des DSP-Zyklus kann dazu führen, dass der dominierende Zyklus verfehlt wird.

  2. Die Bandbreite muss optimiert werden, sonst kann es zu einem Überhandel kommen.

  3. Das Design eines festen Zyklus hat eine schlechte Anpassungsfähigkeit an gewaltsame Marktveränderungen.

  4. Der Handel mit DSP allein macht die Strategie anfällig für Whipsaws.

  5. Das Fehlen eines Stop-Loss kann zu erheblichen Verlusten führen.

Optimierungsrichtlinien

Verbesserungen

  1. Optimieren Sie die Parameter, um die beste Zykluskombination zu finden.

  2. Hinzufügen dynamischer Bands basierend auf der Volatilität.

  3. Einbeziehung von Trend- und Volatilitätsfiltern zur Verringerung falscher Signale.

  4. Hinzufügen von Stop Loss- oder Trailing Stop-Mechanismen zur Risikokontrolle.

  5. Versuche mit mehreren Instrumenten für die Universalität.

  6. Einführung von maschinellem Lernen für die adaptive DSP-Zyklusoptimierung.

Zusammenfassung

Insgesamt ist dies eine sehr einfache und praktische doppelte gleitende Durchschnittshandelsstrategie. Es basiert auf soliden Zyklusanalyse-Grundlagen, wobei DSP den dominierenden Zyklus effektiv verfolgt. Mit Verfeinerungen bei Parameteroptimierung, Stop-Losses, Filterbedingungen und mehr kann es zu einer zuverlässigen quantitativen Handelsstrategie werden.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/03/2017
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// 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(title="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
	     iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xEMA1_EMA2, color=blue, title="D_DSP")

Mehr