Dynamische Trendverfolgungsstrategie mit zwei Mechanismen

Schriftsteller:ChaoZhang, Datum: 2024-01-31 11:13:44
Tags:

img

Übersicht

Die Dual-Mechanism Dynamic Trend Tracking Strategie kombiniert Signale aus zwei verschiedenen Handelsstrategien, um Trends zu verfolgen.

Diese Strategie wird hauptsächlich für die mittelfristige Trendverfolgung verwendet. Durch die Festlegung dynamischer Stop-Loss-Punkte durch doppelte Mechanismen kann sie effektiv Gewinne einfangen und Verluste von der Expansion vermeiden. In der Zwischenzeit hilft die Kombination von Trend- und Umkehrindikatoren zur doppelten Bestätigung, laute Trades zu reduzieren.

Strategie Logik

123 Umkehrstrategie

Die 123 Reversal-Strategie stammt aus Seite 183 des Buches Ulf Jensen How I Tripped My Money in the Futures Market. Sie identifiziert Preisumkehrmuster mit zwei aufeinanderfolgenden Umkehrbalken.

Insbesondere erzeugt es ein Kaufsignal, wenn der Schlusskurs für zwei aufeinanderfolgende Tage höher als der vorherige Schlusskurs ist und der 9-tägige langsame stochastische Oszillator unter 50 liegt. Es erzeugt ein Verkaufssignal, wenn der Schlusskurs für zwei aufeinanderfolgende Tage niedriger als der vorherige Schlusskurs ist und der schnelle stochastische Oszillator über 50 liegt.

Der synthetische Preisindex

Der Indikator für den synthetischen Preis (D_DSP) zeigt die Kursentwicklungsrichtung an und steht in Phase mit dem dominanten Zyklus der tatsächlichen Preisdaten. Der D_DSP wird berechnet, indem ein halbzyklischer exponentieller gleitender Durchschnitt (EMA) von der viertelzyklischen EMA des Preises subtrahiert wird.

Wenn der D_DSP positiv ist, zeigt er einen Preisanstieg an.

Doppelmekanismus

Diese Strategie kombiniert die 123 Reversal-Strategie und die D_DSP-Indexsignale. Wenn beide Signale übereinstimmen (sowohl lang als auch kurz), werden Trades generiert. Wenn Signale nicht übereinstimmen, werden Positionen geschlossen.

Diese doppelte Bestätigung filtert Lärm aus und sperrt den Trendgewinn.

Vorteile

Der größte Vorteil dieser Strategie sind die zwei Stufen des Stop Loss, die sie implementiert. Erstens bilden die schnellen und langsamen Stochastics einen zeitlich gestaffelten Stop Loss. Zweitens enthält die Umkehrstrategie selbst eine Stop Loss-Funktion.

Die zwei Stop-Losses maximieren die Gewinnverbindung und verhindern Crossover-Verluste aus einer einzigen Stop-Loss-Strategie.

Risiken

Das größte Risiko entsteht durch unflexible Parameter-Einstellungen. Zum Beispiel können falsche Zykluslängen zu fehlenden Mainstream-Trends, Verlust von Gewinnen oder zunehmenden Verlusten führen. Eine zu starre Doppelbestätigung kann auch zu verpassten zeitnahen Stop-Verlusten führen.

Auch bei der Kombination von Umkehr- und Trendstrategien kann das Clearing von Positionen, wenn die Signale nicht übereinstimmen, Gelegenheiten verpassen, wenn der Trend in einer Mainstream-Richtung anhält.

Optimierung

Diese Strategie kann auf verschiedene Weise optimiert werden:

  1. Optimieren Sie die Zyklusparameter unter Verwendung von mehr Backtesting-Daten, um optimale Werte zu finden.

  2. Fügen Sie mehr Stop-Loss-Strategien wie Breakout oder Trailing-Stop-Loss hinzu, um dynamischere und vernünftigere Stop-Loss-Punkte festzulegen.

  3. Feinabstimmen der Doppelbestätigungsregeln, um zu viele Positionen zu vermeiden.

  4. Zusätzlich werden Filter wie Volatilitätsfilter hinzugefügt, um Fehleinschätzungen aus der Spätphase der Trendvolatilität zu vermeiden.

Schlussfolgerung

Die Dual-Mechanism Dynamic Trend Tracking Strategy implementiert eine effektive Trendverfolgung und Risikokontrolle durch doppelte Stopp-Verluste von schnellen und langsamen Stochastiken und doppelte Bestätigung von Umkehr- und Trendsignalen.

Eine kontinuierliche Optimierung von Regeln und Parametern wird erwartet, um gute Ergebnisse zu erzielen. Die Optimierung der Strategie erfordert jedoch große Mengen an historischen Daten. Die Filter zur Auswahl von Aktien und die Stop-Loss-Mechanismen müssen ebenfalls kontinuierlich verfeinert werden. Echtzeit-Tracking für einen bestimmten Zeitraum wird empfohlen, um die Strategie weiter zu validieren.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// 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. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

D_DSP(Length) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > 0, 1,
             iff(xEMA1_EMA2 < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mehr