Gegensätzliche Breakout-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-25 12:09:40
Tags:

img

Übersicht

Die konträre Breakout-Handelsstrategie ist eine Strategie, bei der konträre Signale basierend auf aufeinanderfolgenden Preissteigerungen oder -rückgängen verwendet werden, um bei Erfüllung der Short-Bedingung lang oder kurz zu gehen.

Strategie Logik

Die Strategie wird hauptsächlich durch folgende Teile umgesetzt:

  1. Wenn der Trend der aktuellen Periode die festgelegte Länge erreicht, wird ein Handelssignal ausgelöst.

  2. Berechnen Sie die Länge der aktuellen aufeinanderfolgenden Aufstiegs- oder Fallperioden auf der Grundlage der Aufstiegs- und Fallperioden.

  3. Setzen Sie den Backtesting-Zeitrahmen so, dass die Strategie nur innerhalb der Backtesting-Zeit durch time_cond funktioniert.

  4. Setzen Sie die tägliche Handelszeit ein, um Handelssignale nur innerhalb des festgelegten Zeitrahmens durch timetobuy auszugeben.

  5. Wenn der aufeinanderfolgende steigende Zyklus die eingestellte Länge erreicht, gibt es ein langes Signal über strategy.long. Wenn der aufeinanderfolgende fallende Zyklus die eingestellte Länge erreicht, gibt es ein kurzes Signal über strategy.short.

  6. Sie können Stop-Loss- und Take-Profit-Preise festlegen. Setzen Sie kurzfristige Stops für lange Positionen und langfristige Stops für kurze Positionen. Setzen Sie langfristige Take-Profits für lange Positionen und kurzfristige Take-Profits für kurze Positionen.

  7. Handelssignalbotschaften können während des Versands eingestellt werden.

  8. Ausgabe von Long- oder Short-Signalen, wenn die Bedingungen auf der Grundlage der oben genannten Parameter und Preisniveaus erfüllt sind.

Analyse der Vorteile

Diese entgegengesetzte Ausbruchstrategie hat folgende Vorteile:

  1. Die Operationen in der entgegengesetzten Richtung, wenn der Preis einen Trend bildet, können bei Preisumkehrungen profitieren.

  2. Flexible konfigurierbare Parameter. Parameter wie aufeinanderfolgende Perioden können angepasst werden, Stop-Loss- und Take-Profit-Levels können festgelegt werden, der Handelszeitrahmen kann begrenzt werden. Parameter können entsprechend den Marktbedingungen optimiert werden.

  3. Ein Stop-Loss und ein Take-Profit können Risiken kontrollieren.

  4. Die Einrichtung von Handelssignalnachrichten erleichtert die Integration in automatisierte Handelssysteme.

  5. Das Hinzufügen von Einstellungen für Backtesting-Zeitrahmen ermöglicht eine einfache Beobachtung der Strategieleistung unter verschiedenen Marktbedingungen.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Vermeiden Sie wichtige Nachrichtenereignisse. Preistrends sind bei wichtigen Ankündigungen unberechenbar und verursachen gleichzeitig lange und kurze Signale und Verluste. Große Wirtschaftsberichte sollten vermieden werden.

  2. Weniger wirksam, wenn die Umkehrungen unklar sind. Weniger wirksam, wenn die Trends zweideutig sind, sollte der Gegenhandel mit Vorsicht angewendet werden.

  3. Bei der Optimierung sollte eine übermäßige Abhängigkeit von Backtesting-Daten vermieden werden, die keine künftigen Trends darstellen.

  4. Eine hohe Handelsfrequenz birgt Risiken eines Überhandels. Kurzzyklus-Einstellungen können zu einer übermäßigen Handelsfrequenz und zu Risiken für langfristige stetige Gewinne führen.

  5. Die Stop-Loss- und Take-Profit-Strategien können optimiert werden, um Risiken zu reduzieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Hinzufügen von Trenddetektion, um zufällige Umkehrungen in nicht-trendigen Märkten zu vermeiden, wobei Volatilität, Kanäle usw. verwendet werden, um Trends zu messen und Umkehrungen zu erfassen.

  2. Optimierung von Stops und Takes zur Anpassung an die Marktvolatilität unter Verwendung prozentualer, ATR- oder anderer adaptiver Methoden.

  3. Fügen Sie die Volumenanalyse hinzu, um falsche Signale allein aus den Preismustern zu vermeiden.

  4. Diversifizierung des Portfolios auf mehrere Produkte zur Verringerung des Risikos eines einzelnen Vermögenswerts.

  5. Parameteroptimierung und maschinelles Lernen. Sammeln Sie mehr historische Daten und verwenden Sie maschinelles Lernen, um Parameter automatisch zu optimieren, um robustere Strategien zu entwickeln.

Schlussfolgerung

Die konträre Breakout-Strategie liefert ein gutes Handelssignal, indem sie durch konträre Operationen Preisumkehrungen erfasst. Zu den Vorteilen gehören flexible Konfiguration, Risikokontrolle und Eignung für den automatisierten Handel.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Strategy
strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')

price = close

ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0

dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true

// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100

longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick

plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
    strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
    
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
    strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
    
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size < 0 and enablesltp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size > 0 and enablesltp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)






Mehr