Bei der bidirectionalen Breakout-Umkehrstrategie handelt es sich um eine auf Pivotpunkten basierende Preis-Aktionsstrategie. Sie erkennt extreme Preisniveaus innerhalb einer Reihe von Balken, um potenzielle Umkehrmöglichkeiten zu identifizieren.
Die Kernlogik der Bidirektionalen Breakout-Umkehrstrategie ist:
Verwendungpivothigh()
undpivotlow()
um das höchste Hoch und das niedrigste Tief innerhalb der letzten n Balken als Pivot zu berechnen. Hier wird n auf 4 gesetzt.
Wenn das letzte Bar-Hoch das Pivot-Hoch überschreitet, geht die Strategie davon aus, dass sich die Preise umkehren können und wird kurz gehalten.
Wenn der letzte Tiefpunkt das Pivot-Tief durchbricht, geht die Strategie davon aus, dass sich die Preise umkehren können und geht lang.
Sobald sich die Preise über die Pivots hinaus umkehren, wird das vorherige Signal ungültig und wartet auf die nächste Handelschance.
Auf diese Weise erfasst die Strategie kurzfristige Umkehrchancen, wenn die Preise die Pivots durchbrechen.
Die zweiseitige Breakout-Umkehrstrategie hat folgende Vorteile:
Einfache und intuitive Logik basierend auf Drehpunkten.
Für volatile Kryptomärkte geeignet, um kurzfristige Umkehrungen zu erfassen.
Einfach zu verstehen und zu beherrschen.
Niedrig 10% Rückzug, Risiko unter Kontrolle.
Hohe Rendite von 350%, Sharpe-Ratio über 1.
Die Strategie zur Umkehrung der Bidirektionalen Ausbrüche beinhaltet auch folgende Risiken:
Bei anhaltenden Trends können mehrere kleine Stop-Losses auftreten.
Pivots sind keine garantierten Umkehrpunkte, es besteht die Gefahr fehlender oder unzureichender Umkehrungen.
Die Preise können nicht sofort nach dem Durchbrechen der Pivots umkehren, es besteht das Risiko, Verluste zu verfolgen.
Nur die letzten 4 Stäbe sind erforderlich, die Stichprobengröße ist möglicherweise zu klein.
Die Marktliquidität wird ignoriert, große Aufträge können sich auf die Preise auswirken.
Die kurze Rückprüfungsperiode macht die langfristige Leistung unsicher.
Die Strategie zur Umkehrung der bidirektionalen Ausbrüche kann in folgenden Aspekten optimiert werden:
Die Pivot-Periode soll verlängert werden, um unzureichende Proben zu vermeiden.
Warten Sie auf zusätzliche Bestätigungssignale nach dem Brechen der Pivots, um falsche Brechen wie größere Volumina, MACD-Divergenzen usw. zu vermeiden.
Dynamische Anpassung der Positionsgröße anhand der Liquiditätsbedingungen.
Verwenden Sie Trendindikatoren, um Trends zu vermeiden.
Fügen Sie Stop-Loss-Bewegungsstrategien hinzu, um Gewinne zu erzielen.
Versuche die optimalen Parameter für verschiedene Produkte separat.
Erweitern Sie die Backtest-Periode und verwenden Sie Futures-Daten, um die Robustheit zu überprüfen.
Die zweiseitige Breakout-Umkehrstrategie erfasst kurzfristige Chancen, indem sie Umkehrpunkte mit Preispivoten identifiziert. Der Vorteil sind einfache Regeln, geringer Drawdown und hohe Renditen. Aber Risiken wie fehlende Umkehrungen und Verluste bestehen. Wir können sie optimieren, indem wir Probenzeiten erweitern, Umkehrbestätigung, dynamische Stopps usw. Hinzufügen. Eine umfassendere Verifizierung ist erforderlich, um langfristige Wirksamkeit zu gewährleisten. Insgesamt eignet sie sich für quantitative Händler, die in kurzfristigen Geschäften erfahren sind.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("QuantNomad - Pivot Reversal Strategy - XBTUSD - 1h", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50) // // author: QuantNomad // date: 2019-06-01 // Pivot Reversal Strategy - XBTUSD - 1h // https://www.tradingview.com/u/QuantNomad/ // https://t.me/quantnomad // leftBars = input(4) rightBars = input(4) swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) if (le) strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick) swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) if (se) strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)