Die Ressourcen sind geladen. Beförderung...

Breakout-Handelsstrategie mit Skalierbarkeit

Schriftsteller:ChaoZhang, Datum: 2023-10-30 17:25:17
Tags:

img

Übersicht

Die skalierbare Breakout-Handelsstrategie erzeugt Handelssignale, wenn der Preis durch wichtige Unterstützungs- und Widerstandsniveaus durchbricht, die durch die Kursschwankungen identifiziert werden.

Wie es funktioniert

Die Strategie verwendet zunächst dieswings()Der Rückblick wird mit derswingLookbackLange Signale werden ausgelöst, wenn der Preis über das Swing-Hoch und kurze Signale werden ausgelöst, wenn der Preis unter das Swing-Tief bricht.

Insbesondere wird ein Long-Signal ausgelöst, wenn der Schlusskurs größer oder gleich dem Swing-High-Preis ist. Ein Short-Signal wird ausgelöst, wenn der Schlusskurs kleiner oder gleich dem Swing-Low-Preis ist.

Die Strategie legt außerdem ein Stoppziel fest, das auf derstopTargetPercentDer Stop-Loss kann beispielsweise auf 5% unter dem Swing-Hoch und der Short-Stop-Loss auf 5% über dem Swing-Tief eingestellt werden.

Der Vorteil dieser Strategie besteht in der Flexibilität, die Lookback-Periode anzupassen, um die Handelsfrequenz zu kontrollieren. Eine kürzere Lookback-Periode macht sie empfindlicher auf Ausbrüche und erhöht die Handelsfrequenz. Eine längere Lookback-Periode verringert die Sensibilität und Handelsfrequenz, kann aber Chancen verpassen. Die Suche nach der optimalen Lookback-Periode ist entscheidend für die Optimierung der Strategie.

Vorteile

  • Einfache Logik, leicht zu verstehen und umzusetzen
  • Rückblick ermöglicht die Optimierung von Parametern und die Kontrolle der Handelsfrequenz
  • Einfache Integration von Stop Loss, Trailing Stop und anderem Risikomanagement
  • Sehr erweiterbar, um Filter hinzuzufügen und die Rentabilität zu verbessern
  • Anwendbar für jeden Zeitrahmen für den Intraday- oder Swinghandel

Risiken und Minderungsmaßnahmen

  • Zu kurze Rückblicksperiode kann zu Überhandelungen führen
  • Zu lange Rückblicksperiode kann Handelschancen verpassen
  • Zu großer Stop-Loss verringert das Gewinnpotenzial
  • Stopp-Loss zu eng kann häufig gestoppt werden

Abmilderung:

  • Testen Sie verschiedene Lookback-Perioden, um optimale Parameter zu finden
  • Optimierung des Stop-Loss-Niveaus, um Gewinn und Risikokontrolle auszugleichen
  • Hinzufügen von Trailing Stop oder Kronleuchter-Ausgang, um Gewinne zu erzielen
  • Hinzufügen von Filtern zur Verbesserung der Qualität von Handelssignalen
  • Optimierung der Parameter durch Backtesting

Möglichkeiten zur Verbesserung

Die Strategie kann auf verschiedene Weise verbessert werden:

  1. Verschiedene Rückblickzeitenwerte testen, um optimale Parameter zu finden.

  2. Verschiedene Zeitrahmen wie 5m, 15m, 1h testen, um den besten Zeitrahmen zu bestimmen.

  3. Optimieren Sie den Stop-Loss-Prozentsatz, um das Gewinnpotenzial gegenüber dem Risikomanagement auszugleichen.

  4. Fügen Sie Filter wie Lautstärke, Volatilität hinzu, um minderwertige Einstellungen zu reduzieren.

  5. Integrieren Sie mehr Risikomanagement-Mechanismen wie Trailing Stop, Gewinnnahme.

  6. Optimierung der Parameter durch Walk-Forward-Analyse und maschinelles Lernen.

  7. Einführung von KI/Maschinenlernen zur automatischen Optimierung von Parametern.

Schlussfolgerung

Die skalierbare Breakout-Handelsstrategie ist ein robustes und anpassbares Breakout-System. Es ist einfach zu bedienen und sehr anpassungsfähig, indem Lookback angepasst und Filter hinzugefügt werden. Es kann leicht das Risikomanagement für die Risikokontrolle integrieren. Mit Parameteroptimierung und Maschinenlernintegration kann sich die Strategie im Laufe der Zeit entwickeln, um sich an sich ändernde Märkte anzupassen. Insgesamt ist es eine empfohlene universelle Breakout-Strategie.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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/
// © deperp

//@version=5
// strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

// Backtest Time Period

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2020"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

swingLookback = input.int(20, title="Swing Lookback", minval=3)
stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1)

// Calculate lockback swings
swings(len) =>
    var highIndex = bar_index
    var lowIndex = bar_index
    var swingHigh = float(na)
    var swingLow = float(na)
    
    upper = ta.highest(len)
    lower = ta.lowest(len)
    
    if high[len] > upper
        highIndex := bar_index[len]
        swingHigh := high[len]

    if low[len] < lower
        lowIndex := bar_index[len]
        swingLow := low[len]

    [swingHigh, swingLow, highIndex, lowIndex]


// Strategy logic
[swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback)
longCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortCondition = inTradeWindow and (ta.crossunder(close, swingLow))

if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

longStopTarget = close * (1 + stopTargetPercent / 100)
shortStopTarget = close * (1 - stopTargetPercent / 100)

strategy.exit("Long Stop Target", "Long", limit=longStopTarget)
strategy.exit("Short Stop Target", "Short", limit=shortStopTarget)

// Plot break lines
// line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right)
// line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right)


// Alert conditions for entry and exit
longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow))

longExitCondition = close >= longStopTarget
shortExitCondition = close <= shortStopTarget

alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position")
alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position")
alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position")
alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")

Mehr