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.
Die Strategie wird hauptsächlich durch folgende Teile umgesetzt:
Wenn der Trend der aktuellen Periode die festgelegte Länge erreicht, wird ein Handelssignal ausgelöst.
Berechnen Sie die Länge der aktuellen aufeinanderfolgenden Aufstiegs- oder Fallperioden auf der Grundlage der Aufstiegs- und Fallperioden.
Setzen Sie den Backtesting-Zeitrahmen so, dass die Strategie nur innerhalb der Backtesting-Zeit durch time_cond funktioniert.
Setzen Sie die tägliche Handelszeit ein, um Handelssignale nur innerhalb des festgelegten Zeitrahmens durch timetobuy auszugeben.
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.
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.
Handelssignalbotschaften können während des Versands eingestellt werden.
Ausgabe von Long- oder Short-Signalen, wenn die Bedingungen auf der Grundlage der oben genannten Parameter und Preisniveaus erfüllt sind.
Diese entgegengesetzte Ausbruchstrategie hat folgende Vorteile:
Die Operationen in der entgegengesetzten Richtung, wenn der Preis einen Trend bildet, können bei Preisumkehrungen profitieren.
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.
Ein Stop-Loss und ein Take-Profit können Risiken kontrollieren.
Die Einrichtung von Handelssignalnachrichten erleichtert die Integration in automatisierte Handelssysteme.
Das Hinzufügen von Einstellungen für Backtesting-Zeitrahmen ermöglicht eine einfache Beobachtung der Strategieleistung unter verschiedenen Marktbedingungen.
Die Strategie birgt auch einige Risiken:
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.
Weniger wirksam, wenn die Umkehrungen unklar sind. Weniger wirksam, wenn die Trends zweideutig sind, sollte der Gegenhandel mit Vorsicht angewendet werden.
Bei der Optimierung sollte eine übermäßige Abhängigkeit von Backtesting-Daten vermieden werden, die keine künftigen Trends darstellen.
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.
Die Stop-Loss- und Take-Profit-Strategien können optimiert werden, um Risiken zu reduzieren.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
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.
Optimierung von Stops und Takes zur Anpassung an die Marktvolatilität unter Verwendung prozentualer, ATR- oder anderer adaptiver Methoden.
Fügen Sie die Volumenanalyse hinzu, um falsche Signale allein aus den Preismustern zu vermeiden.
Diversifizierung des Portfolios auf mehrere Produkte zur Verringerung des Risikos eines einzelnen Vermögenswerts.
Parameteroptimierung und maschinelles Lernen. Sammeln Sie mehr historische Daten und verwenden Sie maschinelles Lernen, um Parameter automatisch zu optimieren, um robustere Strategien zu entwickeln.
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)