Momentum-Swing-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-05 10:44:19
Tags:

img

Übersicht

Dies ist eine tägliche Intervall-Swing-Handelsstrategie, die auf Momentum-Techniken basiert, die ATR Stops verwenden.

Die Strategie ermittelt die Trendrichtung anhand von Dynamikindikatoren und legt auf der Grundlage von ATR Stop-Loss-Linien fest, um einen Low-Buy-High-Sell-Swing-Trading umzusetzen.

Strategie Logik

Der Code legt zuerst den Zeitrahmen für das Backtesting fest.

Im Abschnitt Indikatoren werden dann folgende Indikatoren berechnet:

  • atr(): ATR für den Stop-Loss berechnen;
  • max_/min_: höchster/niedrigster Preis der vorherigen Bar;
  • ist_uptrend: Beurteilen Sie, ob es sich um einen Aufwärtstrend handelt;
  • Zufall: Stop-Loss-Linie;

Die Hauptlogik für die Beurteilung des Trends ist:

Wenn der Schluß höher als die vorherige nach unten gerichtete Stop-Loss-Linie ist, wird er als Aufwärtstrend beurteilt; wenn der Schluß niedriger als die vorherige nach oben gerichtete Stop-Loss-Linie ist, wird er als Abwärtstrend beurteilt.

Wenn sich der Trend ändert, passen Sie die Stop-Loss-Line-Position an.

Im Falle eines Aufwärtstrends wird die Stop-Loss-Linie auf den höchsten Preis des vorhergehenden Balkens abzüglich des ATR-Wertes festgelegt; im Fall eines Abwärtstrends wird die Stop-Loss-Linie auf den niedrigsten Preis des vorhergehenden Balkens plus den ATR-Wert festgelegt.

Dies zeigt den Trend nach dem Stop-Loss.

Im Abschnitt Handelsregeln eröffnen Sie Long/Short-Positionen, wenn der Preis die Stop-Loss-Linie überschreitet.

Analyse der Vorteile

Die Vorteile dieser Strategie:

  1. Beurteilen Sie die Trendrichtung mit Hilfe von Impulstechniken, fangen Sie die Wendepunkte rechtzeitig auf und vermeiden Sie falsche Ausbrüche.
  2. ATR Stop-Loss verfolgt höchsten/niedrigsten Preis, kann das Risiko gut kontrollieren.
  3. Einfache und klare Strategie-Logik, leicht zu verstehen und umzusetzen.
  4. Kann zwischen den Schwingen niedrige Kauf-hohe Verkauf Trades machen.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Ein unsachgemäßer ATR-Parameter kann dazu führen, dass der Stoppverlust zu locker oder zu eng ist.
  2. In den Trendbereichen können heftige Whipsaws auftreten, die zu aufeinanderfolgenden Stop-Loss führen.
  3. Hohe Handelsfrequenz, höhere Provisionen.

Einige Optimierungen:

  1. Versuche verschiedene ATR-Parameter, um das Optimum zu finden.
  2. Optimieren Sie den Stop-Loss, indem Sie Volatilitätsmetriken zusätzlich zum ATR kombinieren.
  3. Fügen Sie einen Trendfilter hinzu, um unnötige Trades während unruhiger Märkte zu vermeiden.

Optimierungsrichtlinien

Einige Richtungen zur Optimierung dieser Strategie:

  1. Verschiedene ATR-Parameter testen, um das Optimum zu finden, mehrere Parametermengen zurücktesten und das Rendite-Risiko-Verhältnis bewerten.

  2. Optimieren Sie den Stop-Loss, indem Sie Volatilitätsmetriken zusätzlich zum ATR kombinieren.

  3. Fügen Sie Trendfilter hinzu, um Trades während des unruhigen Marktes zu vermeiden. Fügen Sie Trendbeurteilungsindikatoren hinzu, handeln nur, wenn der Trend klar ist.

  4. Adjustieren Sie die Positionsgröße basierend auf der Kontoauslastungsquote, aufeinanderfolgenden Stop-Loss-Zeiten usw.

  5. Verluste vor Marktschließung aktiv zu reduzieren, um das Risiko einer Übernachtung zu vermeiden.

Schlussfolgerung

Als grundlegende tägliche Swing-Handelsstrategie ist die allgemeine Logik klar. Es beurteilt den Trend mit Impulstechniken und nutzt ATR für Trailing-Stop-Loss, um das Risiko effektiv zu kontrollieren.

Es gibt immer noch großen Raum für Optimierung, kann von Aspekten wie Trendbeurteilung, Stop-Loss-Methode, Position Größe usw. verbessern, um die Strategie praktischer zu machen.


/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES

Mehr