Dies ist eine lange/kurze quantitative Handelsstrategie, die auf der Breakout-Theorie basiert. Sie berechnet den höchsten Schlusskurs in den letzten 100 Handelstagen und bestimmt, ob ein Breakout stattfindet, basierend darauf, ob der letzte Schlusskurs dieses Niveau überschreitet. Wenn ein Breakout erkannt wird, wird ein Long-Signal ausgelöst. Nach dem Eintritt in den Long wird die Position nach 25 Bars durch einen Stop-Loss geschlossen.
Die Kernlogik dieser Strategie nutzt die
Insbesondere diese Strategie verwendet die Pine Script eingebaute Funktionta.highest()
Wenn der Schlusskurs durchbricht und den 100-Tage-Höchstschlusskurs übersteigt, wird ein Long-Entry-Signal ausgelöst.
Nach dem Eintritt in eine Long-Position setzt die Strategie eine Stop-Loss-Bedingung, um die Position zu schließen.ta.barssince()
Um die Anzahl der Bars zu zählen, die seit dem Long-Eintreffen vergangen sind, wird es gezwungen, die Position nach 25 Bars zu schließen.
Die Logik der Eingabe kann wie folgt zusammengefasst werden:
Der größte Vorteil dieser Strategie besteht darin, Preisumkehrpunkte mit einer relativ hohen Erfolgsrate von Trend-nachfolgenden Trades zu erfassen.
Die konkreten Vorteile sind:
1. Trendfolgung, höhere Erfolgsrate
Die Breakout-Theorie geht davon aus, dass nach einer Preisüberschreitung eines Schlüsselniveaus ein neuer Trend ausgelöst werden kann.
2. Kontrollierbares Risiko mit Stop-Loss
Die Strategie setzt einen erzwungenen Stop-Loss-Ausgang nach 25 Bars auf maximale Einzelverluste, wodurch ein großer Verlust vermieden wird.
3. Geeignet für mittelfristige bis langfristige Anlagen
Die Standardaufbewahrungszeit beträgt 25 Bar, etwa 1 Monat. Diese Frequenz eignet sich für mittelfristige bis langfristige Strategien, nicht zu kurz für Whipsaws und nicht zu lang, um das Risiko zu erhöhen.
4. Wenige Parameter, leicht zu optimieren
Es gibt hauptsächlich 2 einstellbare Parameter, mit wenigen Parametern ist es leicht, optimale Parameter für den tatsächlichen Handel zu testen und zu finden.
5. Übertragbar auf verschiedene Produkte
Diese Strategie bezieht sich nicht auf spezifische Indikatoren bestimmter Produkte. Ihre Logik gilt für Aktien, Devisen, Rohstoffe, Kryptowährungen usw. Es ist also flexibel, zwischen Produkten zu wechseln.
Diese Strategie hat zwar einige Vorteile, aber auch einige Risiken, wenn sie im tatsächlichen Handel eingesetzt wird, insbesondere:
1. Risiko, Verlustpositionen zu halten
Die Strategie hat keinen Trailing Stop Loss, um profitablen Positionen zu folgen. Wenn der Kurstrend nicht wie erwartet verläuft oder sich der Ausbruch als falscher Ausbruch herausstellt, kann ein erzwungener Ausstieg an einem vorgegebenen Stop-Loss-Punkt zu einem großen Verlust führen. Dies ist das größte Risiko.
2. Es kann erforderlich sein, die Parameter einzustellen.
Standardparameter sind möglicherweise nicht optimal. Sie müssen während des Live-Handels optimiert werden, um die beste Passform für bestimmte Produkt- und Marktregime zu finden. Dies fügt zusätzliche Arbeit hinzu.
3. Leistungskorelation mit den Märkten
Die Strategie stützt sich zu sehr auf anhaltende Preistrends. Sie funktioniert nicht gut während von Range-bound-Regimes. Wenn auf Whipsaw-Märkte gestoßen wird, tritt häufig ein erzwungener Austritt auf, der zu instabilen Gewinnen/Verlusten führt.
Um diese Strategie für den tatsächlichen Einsatz robuster und rentabler zu gestalten, können einige Verbesserungen in den folgenden Aspekten vorgenommen werden:
1. Hinzufügen von Trailing Stop Loss Mechanismus
Hinzufügen von Stop-Loss-Logik, um profitable Positionen zu verfolgen, indem der Stop-Loss-Punkt dynamisch basierend auf schwebenden Gewinnen aktualisiert wird.
2. Marktorientierte Anpassungsparameter
Parameter wie Breakout-Periode und Holding-Periode anpassungsfähig machen, basierend auf der Marktstärke, quantifiziert mit Metriken wie ATR. Dies kann dynamisch Parameter anpassen.
**3. Kombination von Trendfiltern **
Eine bessere Filterung unklarer Trends bei der Anwendung der Strategie durch eine vorherige Trendanalyse, entweder diskretionär oder quantitativ.
4. Prüfung auf verschiedenen Produkten und in verschiedenen Intervallen
Die Prüfung der optimierten Parameter und Regeln auf verschiedenen Produkten (z. B. Indizes, Rohstoffe, Devisen, Kryptowährungen) und Intervallen (z. B. täglich, 60 Mio. Balken) wird diese Strategie robuster und breiter anwendbar machen.
Diese Breakout-Umkehrstrategie mit Stop-Loss ist mit klaren Regeln für die Trendenkennung und das Positionsmanagement einfach umzusetzen. Wir analysieren ihre Stärke und Risiken, geben Vorschläge zur Verbesserung ihrer Rentabilität und Anwendbarkeit. Mit weiterer Optimierung kann sie zu einer soliden quantitativen Handelsstrategie werden.
/*backtest start: 2023-01-29 00:00:00 end: 2024-02-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © All_Verklempt //@version=5 strategy("Breakout Strategy", overlay=true) // Input variable for breakout period breakoutPeriod = input.int(100, title="Breakout Period", minval=1) // Calculate the highest close of the past breakout period highestClose = ta.highest(close, breakoutPeriod) // Input variables for start and end dates startYear = input.int(2022, title="Start Year", minval=1900) startMonth = input.int(1, title="Start Month", minval=1, maxval=12) startDay = input.int(1, title="Start Day", minval=1, maxval=31) endYear = input.int(2023, title="End Year", minval=1900) endMonth = input.int(12, title="End Month", minval=1, maxval=12) endDay = input.int(31, title="End Day", minval=1, maxval=31) // Convert start and end dates to timestamp startDate = timestamp(startYear, startMonth, startDay, 00, 00) endDate = timestamp(endYear, endMonth, endDay, 23, 59) // Entry condition: Breakout and higher close within the specified date range enterLong = close > highestClose[1] and close > close[1] // Exit condition: Close the long position after twenty-five bars exitLong = ta.barssince(enterLong) >= 25 // Strategy logic if (enterLong) strategy.entry("Long", strategy.long) if (exitLong) strategy.close("Long")