Die skalierbare Breakout-Handelsstrategie erzeugt Handelssignale, wenn der Preis durch wichtige Unterstützungs- und Widerstandsniveaus durchbricht, die durch die Kursschwankungen identifiziert werden.
Die Strategie verwendet zunächst dieswings()
Der Rückblick wird mit derswingLookback
Lange 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 derstopTargetPercent
Der 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.
Abmilderung:
Die Strategie kann auf verschiedene Weise verbessert werden:
Verschiedene Rückblickzeitenwerte testen, um optimale Parameter zu finden.
Verschiedene Zeitrahmen wie 5m, 15m, 1h testen, um den besten Zeitrahmen zu bestimmen.
Optimieren Sie den Stop-Loss-Prozentsatz, um das Gewinnpotenzial gegenüber dem Risikomanagement auszugleichen.
Fügen Sie Filter wie Lautstärke, Volatilität hinzu, um minderwertige Einstellungen zu reduzieren.
Integrieren Sie mehr Risikomanagement-Mechanismen wie Trailing Stop, Gewinnnahme.
Optimierung der Parameter durch Walk-Forward-Analyse und maschinelles Lernen.
Einführung von KI/Maschinenlernen zur automatischen Optimierung von Parametern.
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")