- Quadrat
- Strategie zur Pivot-Umkehrung mit Pivot-Ausgang
Strategie zur Pivot-Umkehrung mit Pivot-Ausgang
Schriftsteller:
ChaoZhang, Datum: 2024-04-30 15:57:54
Tags:
Übersicht
Diese Strategie verwendet Pivot Points, um Marktumkehrpunkte zu identifizieren und auf der Grundlage davon Handelsentscheidungen zu treffen. Wenn ein Pivot High innerhalb der letzten 4 Kerzen links gebildet wird, tritt die Strategie in eine Long-Position ein; wenn ein Pivot Low innerhalb der letzten 4 Kerzen links gebildet wird, tritt die Strategie in eine Short-Position ein. Der Stop-Loss wird auf eine Tick-Größe (syminfo.mintick) über oder unter dem Einstiegspreis gesetzt. Es gibt zwei Ausstiegsbedingungen: 1) Ausstieg, wenn der nächste entgegengesetzte Pivot-Punkt erscheint; 2) Ausstieg, wenn der schwimmende Verlust 30% erreicht.
Strategieprinzipien
- Verwenden Sie die Funktionen ta.pivothigh (() und ta.pivotlow (()) zur Berechnung des Pivot High (swh) und des Pivot Low (swl) im Bereich von 4 Kerzen links und 2 Kerzen rechts.
- Wenn ein Pivot-Hoch (swh_second) vorhanden ist, aktualisieren Sie den höchsten Preis (hprice) und wenn der aktuelle Höchststand höher als der vorherige Höchststand ist, aktivieren Sie die lange Eingabebedingung (le).
- Bei Erfüllung der Long-Eintrittsbedingung (le) wird eine Long-Position mit einer Tickgröße (syminfo.mintick) über dem Pivot-High eingegeben.
- Wenn ein Pivot-Low (swl_cond) vorhanden ist, aktualisieren Sie den niedrigsten Preis (lprice) und wenn der aktuelle Tief niedriger als der vorherige Tief ist, aktivieren Sie die Short-Eintrittsbedingung (se).
- Bei Erfüllung der kurzfristigen Eintrittsbedingung (se) wird eine kurzfristige Position mit einer Tickgröße (syminfo.mintick) unter dem Pivot-Low eingegeben.
- In der Funktion exitAtNextPivot() wird bei Halte einer Long-Position der Stop-Loss auf eine Tick-Größe unter dem nächsten Pivot-Low gesetzt; bei Halte einer Short-Position wird der Stop-Loss auf eine Tick-Größe über dem nächsten Pivot-High gesetzt.
- In der Funktion IfProfitLessThanThirtyPercent (IfProfitLessThanThirtyPercent) aussteigen, berechnen Sie den Prozentsatz der Gewinne und Verluste für Long- und Short-Positionen und schließen Sie die Position, wenn der Verlust 30% übersteigt.
Strategische Vorteile
- Pivot Points können die Unterstützungs- und Widerstandsniveaus auf dem Markt gut widerspiegeln und sind ein häufig verwendeter Indikator für technische Analyse mit einer gewissen Marktanerkennung.
- Eintritt bei Ausbruch der Pivot Points kann Marktumkehrmöglichkeiten erfassen.
- Zwei Ausstiegsbedingungen werden festgelegt, eine basiert auf dem nächsten entgegengesetzten Drehpunkt für den technischen Ausstieg und die andere auf dem Verlustprozentsatz für den Risikokontroll-Ausstieg, der den Strategieabzug bis zu einem gewissen Grad steuern kann.
Strategische Risiken
- Der Pivot Point-Indikator selbst hat eine gewisse Verzögerung und häufige Signalprobleme und kann in einem schwankenden Markt nicht gut funktionieren.
- Die festgelegten Berechnungsparameter für 4 Kerzen und 2 Kerzen sind möglicherweise nicht für alle Marktbedingungen anwendbar, da ihnen eine gewisse Anpassungsfähigkeit und Flexibilität fehlt.
- Der Stop-Loss wird in der Nähe des Einstiegspreises (eine Tick-Größe) festgelegt, der bei heftigen Marktschwankungen weggeworfen werden kann.
- Die Einstellung des Stopverlustes von 30% ist möglicherweise zu locker mit einer großen Abzugsamplitude.
Strategieoptimierungsrichtlinien
- Versuchen Sie, andere Arten von Pivotpoint-Indikatoren wie Faktor-Pivotpoints, gewichtete Pivotpoints usw. zu verwenden, um die Empfindlichkeit und Aktualität der Indikatoren zu verbessern.
- Die Anzahl der linken und rechten Kerzen kann als Eingabeparameter verwendet werden, und die optimalen Werte können durch Parameteroptimierung gefunden werden.
- Die Stop-Loss-Position kann auf ATR oder Prozentsatz-Stop-Loss optimiert werden. Die erstere kann sich anpassungsfähig an Änderungen der Marktvolatilität anpassen, während die letztere die Risiken innerhalb eines kontrollierbaren Bereichs begrenzen kann.
- Die 30-prozentige Stop-Loss-Bedingung kann verschärft werden, um den Strategie-Drawdown zu reduzieren.
- Andere Filterbedingungen, wie z. B. Trendfilterung und Volatilitätsfilterung, können auf der Grundlage des Pivotpoint-Ausbruchs überlagert werden, um die Signalqualität zu verbessern.
Zusammenfassung
Diese Strategie baut ein bidirektionales Handelssystem auf der Grundlage des Pivot Point-Indikators auf und erfasst Marktumkehrchancen, indem sie bei Pivot-Hochs lang und bei Pivot-Tiefs kurz geht. Die Strategie hat eine gewisse theoretische Grundlage und praktischen Wert, aber aufgrund der Einschränkungen des Pivot Point-Indikators selbst kann die Strategie in der tatsächlichen Funktion einigen Risiken und Herausforderungen ausgesetzt sein. Durch die Optimierung der Pivot Point-Indikatortyp, Parameter, Filterbedingungen, Stop-Loss und Gewinnentnahme usw. wird erwartet, dass die Robustheit und Rentabilität der Strategie weiter verbessert wird.
/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)
leftBars = input(4)
rightBars = input(2)
var float dailyEquity = na
// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
dailyEquity := 10000
// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)
// Define long entry condition
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])
// Enter long position if long entry condition is met
if (le)
strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)
// Define short entry condition
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])
// Enter short position if short entry condition is met
if (se)
strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)
// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
if strategy.opentrades > 0
if strategy.position_size > 0
// Exiting long position at next pivot low
if not na(swl)
strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
else
// Exiting short position at next pivot high
if not na(swh)
strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)
// Call exitAtNextPivot function
exitAtNextPivot()
// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
if strategy.opentrades > 0
if strategy.position_size > 0
// Calculate profit percentage for long position
profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
// Exiting long position if profit is less than 30%
if profit_percentage_long < -30
strategy.close("PivRevLE")
else
// Calculate profit percentage for short position
profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
// Exiting short position if profit is less than 30%
if profit_percentage_short < -30
strategy.close("PivRevSE")
// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()
Mehr