Skalierbare Breakout-Handelsstrategie


Erstellungsdatum: 2023-10-30 17:25:17 zuletzt geändert: 2023-10-30 17:25:17
Kopie: 0 Klicks: 630
1
konzentrieren Sie sich auf
1617
Anhänger

Skalierbare Breakout-Handelsstrategie

Überblick

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.

Strategieprinzip

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.

Strategische Vorteile

  • Einfache, bahnbrechende Ideen, die leicht zu verstehen sind
  • Die Frequenz des Handels kann durch die Optimierung der Rücklauf-Parameter gesteuert werden.
  • Einfach integrierbare Risikomanagementmechanismen wie Stop-Loss und Mobile Stop-Loss
  • Skalierbar, mit unterschiedlichen Filterbedingungen, um die Gewinnquote zu erhöhen
  • Anwendbar in jedem Zeitrahmen, geeignet für Intra- und Langzeitransaktionen

Risiken und Gegenmaßnahmen

  • Eine zu kurze Rücklaufzeit könnte zu einem Überhandel führen.
  • Eine zu lange Rückschau kann zu verpassten Handelschancen führen.
  • Eine übergroße Stop-Loss-Einstellung kann den Gewinnraum einschränken
  • Zu enges Stoppen kann dazu führen, dass das Stoppen häufig ausgelöst wird

Gegenmaßnahmen:

  • Verschiedene Revisionszeiten testen, um die beste Kombination zu finden
  • Optimierung der Stop-Loss-Marge und Balance zwischen Gewinnspielraum und Risikokontrolle
  • Sie können ein bewegtes Stop-Loss oder ein Loop-Loss hinzufügen, um Gewinne zu sperren.
  • Erhöhung der Filterbedingungen, um die Wahrscheinlichkeit von profitablen Transaktionen zu erhöhen

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Tests mit verschiedenen Revisions-Parametern, um die optimale Kombination zu finden;

  2. Verschiedene Handelszyklen, wie 5 Minuten, 15 Minuten, 1 Stunde usw. zu testen, um die optimale Periode zu wählen;

  3. Optimierung der Stop-Loss-Marge und Ausgleich von Gewinnspielraum und Risikokontrolle;

  4. 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;

  5. Die Integration von mehr Risikomanagementmechanismen wie Stop-Loss-Movement und Gewinnsperrung;

  6. Parameteroptimierung, die Verwendung von Schritt-für-Schritt-Optimierung, die Suche nach optimalen Parametern und so weiter;

  7. Integrierte Maschinelle Lerntechnik, die AI nutzt, um Parameter automatisch zu optimieren.

Zusammenfassen

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.

Strategiequellcode
/*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")