
Eine erweiterbare Breakout-Strategie ist eine sehr flexible und erweiterbare Breakout-Strategie, die durch die Identifizierung der wichtigsten Unterstützungs- und Widerstandsbereiche des Preises und die Erzeugung von Handelssignalen, wenn der Preis diese Bereiche überschreitet. Die Strategie kann durch die Anpassung der Parameter für verschiedene Zeiträume angewendet werden und kann auch leicht in verschiedene zusätzliche Filterbedingungen und Risikomanagementmechanismen integriert werden, um für bestimmte Vermögenswerte optimiert zu werden.
Die Strategie nutzt zunächstswings()Die Funktion berechnet die Hochs und Tiefs des aktuellen Preises auf Basis der Rückschauperiode.swingLookbackDie Parameter werden so eingestellt, dass 20 K-Linien vorhanden sind. Wenn der Preis die Hochpunkte der Schwankungen überschreitet, wird eine Zunahme vorgenommen.
Die spezifische Logik eines Overschaltsignals besteht darin, wenn der Schlusskurs größer ist als der Schwankungshochpreis, Overschalt zu machen. Die spezifische Logik eines Overschaltsignals besteht darin, wenn der Schlusskurs kleiner ist als der Schwankungstiefpreis, Overschalt zu machen.
Die Strategie beinhaltet außerdem eine Stop-Loss-Position, bei der der Betrag des Verlustes durch den Verlust des Vermögens ausgeschüttet wird.stopTargetPercentParameter, die den Stop-Loss-Wert festlegen. Zum Beispiel wird der Plus-Stop-Preis auf weniger als 5% des höchsten Preises und der Short-Stop-Preis auf mehr als 5% des niedrigsten Preises gesetzt.
Der Vorteil dieser Strategie besteht darin, dass die Handelsfrequenz durch Anpassung der Rückschauzeit kontrolliert werden kann. Je kürzer die Rückschauzeit ist, desto empfindlicher ist sie für Durchbrüche und desto höher ist die Handelsfrequenz. Eine zu lange Rückschauzeit hingegen verringert die Handelsfrequenz, kann aber die Gelegenheit verpassen.
Gegenmaßnahmen:
Diese Strategie kann in folgenden Bereichen optimiert werden:
Tests mit verschiedenen Revisions-Parametern, um die optimale Kombination zu finden;
Verschiedene Handelszyklen, wie 5 Minuten, 15 Minuten, 1 Stunde usw. zu testen, um die optimale Periode zu wählen;
Optimierung der Stop-Loss-Marge und Ausgleich von Gewinnspielraum und Risikokontrolle;
Erhöhung der Filterbedingungen, z. B. Filter für die Anzahl der Geschäfte, Filter für die Zunahme der Preise usw., um minderwertige Signale zu reduzieren;
Die Integration von mehr Risikomanagementmechanismen wie Stop-Loss-Movement und Gewinnsperrung;
Parameteroptimierung, die Verwendung von Schritt-für-Schritt-Optimierung, die Suche nach optimalen Parametern und so weiter;
Integrierte Maschinelle Lerntechnik, die AI nutzt, um Parameter automatisch zu optimieren.
Eine erweiterbare Durchbruchstrategie ist ein sehr praktisches Durchbruchssystem. Sie ist einfach und benutzerfreundlich und kann durch Anpassung der Rücklaufphase und Integration verschiedener Filterbedingungen für verschiedene Vermögenswerte optimiert werden. Gleichzeitig können verschiedene Risikomanagementmechanismen leicht integriert werden, um das Handelsrisiko zu kontrollieren. Durch die Einführung von Technologien wie Parameteroptimierung und Maschinelles Lernen kann die Strategie fortlaufend aufgerüstet werden, um sich den Veränderungen des Marktes anzupassen.
/*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")