
Überblick
Die Strategie basiert auf Pivot Points, um Marktwendepunkte zu identifizieren und auf dieser Grundlage zu handeln. Die Strategie eröffnet eine Position, wenn der Markt einen Pivot-High (Pivot High) innerhalb der linken 4 K-Linien aufweist. Die Strategie eröffnet eine Position, wenn der Markt einen Pivot-Low (Pivot Low) innerhalb der linken 4 K-Linien aufweist.
Strategieprinzip
- Mit den Funktionen ta.pivothigh () und ta.pivotlow () berechnen Sie die höchsten und niedrigsten Achsenpunkte (swh) und die niedrigsten (swl) innerhalb der 4 K-Linien auf der linken und 2 K-Linien auf der rechten Seite.
- Wenn der Pivot-Hochpunkt {{swh_second}} vorhanden ist, wird der Höchstpreis {{hprice}} aktualisiert, und wenn der aktuelle Höchstpreis höher ist als der vorherige Höchstpreis, wird die Mehrfachbetriebsbedingung {{le}} eingeschaltet.
- Wenn die Einstiegsbedingung ((le) besteht, wird eine Position mit der geringsten Veränderung einer Einheit (syminfo.mintick) oberhalb der Höhe des Drehkreuzpunkts eröffnet.
- Ähnlich wie bei der Übernahme wird der Minimumpreis (lprice) aktualisiert, wenn der Pivot-Low-Punkt (swl_cond) vorhanden ist, und die Eintrittsbedingung (se) wird aktiviert, wenn der aktuelle Minimumpreis niedriger als der vorherige ist.
- Wenn die Eintrittsbedingung für den Leerverkauf (se) besteht, eröffnet der Leerverkauf (syminfo.mintick) eine Position, die eine kleinste Veränderungseinheit unter dem Pivot-Low-Punkt (syminfo.mintick) hat.
- In der ExitAtNextPivot () -Funktion wird ein Minimum der Veränderung unter dem niedrigsten Punkt des nächsten Pivotpunkts verbucht, wenn mehrere Positionen gehalten werden; ein Minimum der Veränderung oberhalb des höchsten Punkts des nächsten Pivotpunkts wird verbucht, wenn keine Positionen gehalten werden.
- In der ExitIfProfitLessThanThirtyPercent () -Funktion wird der Prozentsatz der Ertrags- und Verluststeigerungen für überschüssige und leere Positionen berechnet. Wenn der Verlust über 30% liegt, wird die Position platziert.
Strategische Vorteile
- Die Pivot-Punkte spiegeln die Unterstützung und den Druck des Marktes besser wider. Sie sind ein häufig verwendeter Indikator für die technische Analyse und haben eine gewisse Marktakzeptanz.
- Wenn Sie bei einem Durchbruch in den Eckpunkten einsteigen, können Sie die Chance auf eine Marktumkehr ergreifen.
- Zwei Ausstiegsbedingungen sind festgelegt, einer ist ein technischer Ausstieg, der auf dem nächsten umgekehrten Achselpunkt basiert, und der andere ist ein windkontrollierter Ausstieg, der auf dem Verlustprozentsatz basiert und die Rücknahme der Strategie bis zu einem gewissen Grad kontrolliert.
Strategisches Risiko
- Auch die Pivot-Point-Indikatoren selbst haben Probleme mit Verzögerung und Signalfrequenz, die in einem wackligen Markt schlechter abschneiden können.
- Die festgelegten Parameter für die Berechnung von 4 K- und 2 K-Linien sind möglicherweise nicht für alle Marktsituationen geeignet und verfügen nicht über eine gewisse Anpassungsfähigkeit und Flexibilität.
- Die Stop-Loss-Position ist näher am Einstiegspreis ((ein Minimum der Veränderungseinheit)) und kann bei starken Marktschwankungen verworfen werden.
- Die Einstellungen, bei denen der Verlust bei 30% eingestellt wird, sind möglicherweise zu locker, und die Rücknahme ist zu groß.
Richtung der Strategieoptimierung
- Andere Arten von Pivot-Punkt-Indikatoren, wie Faktor-Punkt-Punkte, Gewichts-Punkt-Punkte usw., können ausprobiert werden, um die Sensitivität und Echtzeit der Indikatoren zu verbessern.
- Die linke K-Zahl kann als Eingabeparameter verwendet werden, um durch Optimierung der Parameter nach optimalen Werten zu suchen.
- Die Stop-Loss-Position kann als ATR oder Stop-Percentage optimiert werden, wobei die erstere sich an die Veränderungen der Marktfluktuation anpasst, während die letztere das Risiko in kontrollierbare Grenzen hält.
- Die 30%-Loss-Plating-Bedingung kann verschärft werden, um die strategische Rücknahme zu verringern. Darüber hinaus kann die Profit-Percentage-Plating-Bedingung erhöht werden, so dass Aufschwung und Aufschwung gleichzeitig verwaltet werden können.
- Auf der Basis von Axialbreaking können andere Filterbedingungen wie Trendfilter, Schwankungsratefilter usw. überlagert werden, um die Signalqualität zu verbessern.
Zusammenfassen
Die Strategie basiert auf Pivot-Points, um ein Zwei-Wege-Trading-System zu erstellen, um die Chancen auf eine Marktumkehr zu ergreifen, indem sie in den Pivot-Points hohe und niedrige Positionen überschreitet. Die Strategie hat eine gewisse theoretische Grundlage und praktische Wert, aber aufgrund der Einschränkungen der Pivot-Points selbst kann die Strategie in der Praxis mit einigen Risiken und Herausforderungen konfrontiert werden.
Strategiequellcode
/*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()