Strategie mit doppelter Dynamik

Schriftsteller:ChaoZhang, Datum: 2023-09-28 15:03:57
Tags:

Übersicht

Die Dual Momentum-Strategie verwendet schnelle und langsame Momentum-Indikatoren, um Ein- und Ausstiegssignale zu generieren.

Die Strategie erlaubt die Konfiguration des Long/Short- oder Long-only-Modus. Sie erlaubt auch, den festen Stop-Loss zu aktivieren oder zu ignorieren, so dass die Strategie ausschließlich auf Ein- und Ausstiegssignale wirkt.

Strategie Logik

Die Strategie verwendet eine schnelle Periodendynamik (Standstillstellung von 5 Tagen) und eine langsame Periodendynamik (Standstillstellung von 10 Tagen).

Wenn die langsame und die schnelle Schwungstärke beide über 0 liegen, wird ein langes Eingangssignal erzeugt.

Wenn der langsame oder der schnelle Impuls unter 0 fällt, wird ein Ausstiegssignal erzeugt.

Ähnlich wird ein kurzes Eingangssignal erzeugt, wenn die langsame und schnelle Bewegung unter 0 liegen, wenn die langsame oder schnelle Bewegung über 0 liegt.

Die Strategie erfasst somit Trendänderungen anhand der Überschneidung von zwei Dynamikindikatoren mit unterschiedlichen Perioden.

Analyse der Vorteile

  • Die Verwendung von Dual-Impuls ermöglicht eine genauere Erkennung von Trendänderungen und weniger falsche Signale.

  • Schnelle Perioden reagieren schnell auf Marktveränderungen, während langsame Perioden Lärm filtern.

  • Flexible Längen-/Kurz- oder nur Längen-Modi entsprechen unterschiedlichen Handelspräferenzen.

  • Optionale Stop-Loss-Risikokontrollen.

  • Die schnelle Reaktionsfähigkeit macht sie für den Trendhandel in Tages- oder längeren Zeitrahmen geeignet, um große Gewinne zu erzielen.

Risikoanalyse

  • Die doppelte Dynamik beruht auf Indikatorwerten über/unter 0, die eine gewisse Verzögerung aufweisen.

  • Die Strategie hängt stärker vom Trend ab und kann auf den Märkten mit mehr Whipsaws unterdurchschnittlich abschneiden.

  • Nicht mit Stop Loss zu rechnen, führt zu großen Verlusten.

  • Eine falsche Wahl von Symbolen oder Zeitrahmen kann zu schlechten Ergebnissen führen.

Um Risiken zu kontrollieren, müssen die Momentumperioden abgestimmt werden, ein angemessener, fester Stop-Loss-Prozentsatz verwendet, stark trendige Symbole ausgewählt und auf täglichen oder höheren Zeitrahmen ausgeführt werden.

Möglichkeiten zur Verbesserung

Die Strategie kann auf verschiedene Weise verbessert werden:

  1. Fügen Sie Filter wie MACD oder RSI hinzu, um falsche Trades an Trendwendepunkten zu vermeiden.

  2. Zusätzlich wird der Adaptive Stop Loss hinzugefügt, um die Stoppdistanz anhand der Marktvolatilität anzupassen.

  3. Optimieren Sie die Impulsparameter für verschiedene Symbole durch schrittweise Optimierung, Fortschrittsanalyse usw.

  4. Hinzufügen von Positionsgrößenregeln zur Anpassung neuer Positionsgrößen anhand früherer Leistungen.

  5. Unterscheidung zwischen langen und kurzen Marktbedingungen für asymmetrische Ein- und Ausstiege.

Schlussfolgerung

Die Dual Momentum-Strategie erfasst die Trendrichtung durch schnelles und langsames Momentum-Crossover. Mit einfachen Indikatoren zur Erkennung von Trendveränderungen eignet sie sich für Intraday- oder Multi-Day-Trends und die Erzeugung von überschüssigen Renditen. Eine angemessene Risikokontrolle durch Stop-Loss, Symbol-/Parameteroptimierung kann die Konsistenz verbessern.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
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/
// © QuantCT

//@version=4
strategy("Momentum Strategy Idea",
         shorttitle="Momentum", 
         overlay=false,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)

// ____ Inputs

fast_period = input(title="Fast Period", defval=5) 
slow_period = input(title="Slow Period", defval=10)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

mom_fast = mom(close, fast_period)
mom_slow = mom(close, slow_period)
    
enter_long = (mom_slow > 0 and mom_fast > 0)
exit_long = (mom_slow < 0 or mom_fast < 0)
enter_short = (mom_slow < 0 and mom_fast < 0)
exit_short = (mom_slow > 0 or mom_fast > 0)

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 
   
// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)
    
// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

mom_fast_plot = plot(mom_fast, color=colors)
mom_slow_plot = plot(mom_slow, color=colors)
fill(mom_fast_plot, mom_slow_plot, color=colors, transp=50)








Mehr