Die Ressourcen sind geladen. Beförderung...

Strategie zur Pivot-Umkehrung mit Pivot-Ausgang

Schriftsteller:ChaoZhang, Datum: 2024-04-30 15:57:54
Tags:

img

Ü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

  1. 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.
  2. 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).
  3. Bei Erfüllung der Long-Eintrittsbedingung (le) wird eine Long-Position mit einer Tickgröße (syminfo.mintick) über dem Pivot-High eingegeben.
  4. 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).
  5. Bei Erfüllung der kurzfristigen Eintrittsbedingung (se) wird eine kurzfristige Position mit einer Tickgröße (syminfo.mintick) unter dem Pivot-Low eingegeben.
  6. 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.
  7. 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

  1. 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.
  2. Eintritt bei Ausbruch der Pivot Points kann Marktumkehrmöglichkeiten erfassen.
  3. 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

  1. Der Pivot Point-Indikator selbst hat eine gewisse Verzögerung und häufige Signalprobleme und kann in einem schwankenden Markt nicht gut funktionieren.
  2. 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.
  3. Der Stop-Loss wird in der Nähe des Einstiegspreises (eine Tick-Größe) festgelegt, der bei heftigen Marktschwankungen weggeworfen werden kann.
  4. Die Einstellung des Stopverlustes von 30% ist möglicherweise zu locker mit einer großen Abzugsamplitude.

Strategieoptimierungsrichtlinien

  1. 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.
  2. Die Anzahl der linken und rechten Kerzen kann als Eingabeparameter verwendet werden, und die optimalen Werte können durch Parameteroptimierung gefunden werden.
  3. 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.
  4. Die 30-prozentige Stop-Loss-Bedingung kann verschärft werden, um den Strategie-Drawdown zu reduzieren.
  5. 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