Super-Support- und Resistance-Trendfolgestrategie


Erstellungsdatum: 2024-02-26 10:57:20 zuletzt geändert: 2024-02-26 10:57:20
Kopie: 0 Klicks: 1369
1
konzentrieren Sie sich auf
1617
Anhänger

Super-Support- und Resistance-Trendfolgestrategie

Überblick

Die Super-Support-Resistance-Trend-Tracking-Strategie ist eine innovative Trend-Tracking-Strategie, die die beiden beliebten Indikatoren Support-Resistance-Punkt und Super-Trend kombiniert und einen zusätzlichen Trendfilter für höhere Genauigkeit hinzufügt. Die Strategie wurde von Lonesome TheBlue inspiriert. Die Supertend-Resistance-Supertend-Tracking-Skript wurde entwickelt, um den Händlern ein zuverlässiges Trend-Tracking-Tool zur Verfügung zu stellen und gleichzeitig falsche Signale zu minimieren.

Strategieprinzip

Die Strategie basiert auf der Kombination von Unterstützungswiderstandspunkten und Supertrend-Indikatoren sowie der Hinzufügung eines starken Trendfilters. Es berechnet zunächst Unterstützungshoch- und -tiefpunkte innerhalb eines bestimmten Zeitraums, die als wichtige Referenzpunkte für die Trendanalyse wichtig sind. Durch die Berechnung eines gewichteten Durchschnitts bilden diese Unterstützungswiderstandspunkte eine Mittellinie, die den gesamten Indikator weiter verfeinert.

Als nächstes werden die ATR-Faktoren basierend auf der mittleren Linie und der Benutzerdefinition auf und ab gerollt. Diese Bandbreiten passen sich selbst an Marktbewegungen an, was die Flexibilität der Strategie erhöht. Das Herzstück der Supertrend-Reihe-Strategie liegt in der genauen Identifizierung des dominierenden Trends, der zwischen Mehrkopf- und Leerkopfsignalen glat umschaltet, wenn der Preis mit dem Supertrend-Bereich interagiert.

Die Einführung eines zusätzlichen Trendfilters in die Strategie verbessert ihre Fähigkeiten noch weiter. Das Filter basiert auf einem Moving Average, der die Stärke und Richtung eines Trends dynamisch bewertet. Durch die Kombination dieses Trendfilters mit dem ursprünglichen Supertrendsignal an den Widerstandspunkten soll eine intelligentere und zuverlässigere Handelsentscheidung getroffen werden.

Analyse der Stärken

  1. Erhöhung der Genauigkeit: Ein Trendfilter erhöht die Genauigkeit der Strategie, indem die Richtung des Gesamttrends vor der Erzeugung des Signals bestätigt wird.

  2. Trend-Fortsetzung: Integration von Trend-Filtern, die Widerstandspunkte und Supertrends unterstützen, um den Handel während einer starken Markttrend zu verlängern und so potenziell die Gewinnchancen zu maximieren.

  3. Falschsignale reduzieren: Die Berechnung eines gewichteten Durchschnitts der Strategie in Kombination mit einem Trendfilter hilft bei der Minimierung von Falschsignalen und reduziert die Sprunghöhe bei Unsicherheiten oder Marktbedingungen.

  4. Unterstützungs- und Widerstandsinsichten: Die Strategie bietet weiterhin zusätzliche Unterstützungs- und Widerstandspunkte in Abhängigkeit von den Unterstützungs- und Widerstandspunkten und liefert den Händlern wertvolle kontextuelle Informationen.

Risikoanalyse

  1. Parameterabhängigkeit: Die Strategie ist empfindlich gegenüber den Parametern der ATR-Zyklen und ATR-Multiplikatoren. Eine unangemessene Parameter-Einstellung kann zu überschüssigen Geschäften oder verpassten Chancen führen.

  2. Trendwechsel: In der Nähe des Trendwechselpunkts kann die Strategie falsche Signale erzeugen, was zu unnötigen Verlusten führt. Das Risiko sollte in Verbindung mit Stop-Losses verwaltet werden.

  3. Überoptimierung: Die Parameter können durch Optimierung zu einer optimalen Kombination gebracht werden, sind jedoch nicht vorausschauend. Die Auswirkungen von Situations- und Sortenunterschieden auf die Parameterwahl sollten berücksichtigt werden.

  4. Leerpositionsrisiko: Die Strategie tritt in einen Leerpositionszustand ein, wenn der Preis von der Auf- und Abwärtsbahn abweicht. Dies kann eine Gelegenheit verpassen, wenn sich der Trend erneut bildet.

Optimierungsrichtung

  1. In Kombination mit anderen Indikatoren: Die Einbeziehung von Umsatz- oder Volatilitätsindikatoren kann in Erwägung gezogen werden, um die Stabilität der Strategie zu verbessern.

  2. Dynamische Parameter: Methoden zur automatischen Optimierung oder Anpassung der Parameter an die Marktumgebung können untersucht werden, um die Strategie anpassungsfähiger zu machen.

  3. Stop-Loss-Strategie: Erforschen Sie, wie Sie einen Stop-Loss-Mechanismus entwerfen können, um Einzelschäden effektiv zu kontrollieren, wobei Sie die Strategie-Logik beibehalten.

  4. Sortenanpassung: Bewertungsstrategie Parameter in verschiedenen Stücken und Instrumenten, optimizieren Sie die Parameter in Abhängigkeit von der spezifischen Herkunft.

Zusammenfassen

Die Strategie der Supersupport-Resistance-Trend-Tracking ist eine sehr vielversprechende quantitative Strategie. Sie weist einzigartige Vorteile in mehreren Dimensionen wie Einfachheit und Trend-Tracking-Fähigkeit auf. Gleichzeitig gibt es Raum für Verbesserungen, die sie zu einem allgemeineren und zuverlässigeren quantitativen Instrument machen können, indem sie durch Parameter, Stop-Losses, Varietät-Anpassung und andere Aspekte optimiert wird.

Strategiequellcode
/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Julien_Eche
// Strategy based on "Pivot Point Supertrend" Indicator by LonesomeTheBlue

//@version=4

strategy("PPS", overlay=true, initial_capital=500000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)

prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1)
Pd=input(defval = 10, title = "ATR Period", minval=1)
showpivot = input(defval = false, title="Show Pivot Points")
showlabel = input(defval = true, title="Show Buy/Sell Labels")
showcl = input(defval = false, title="Show PP Center Line")
showsr = input(defval = false, title="Show Support/Resistance")

// get Pivot High/Low
float ph = pivothigh(prd, prd)
float pl = pivotlow(prd, prd)

// drawl Pivot Points if "showpivot" is enabled
plotshape(ph and showpivot, text="H",  style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd)
plotshape(pl and showpivot, text="L",  style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd)

// calculate the Center line using pivot points
var float center = na
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        //weighted calculation
        center := (center * 2 + lastpp) / 3

// upper/lower bands calculation
Up = center - (Factor * atr(Pd))
Dn = center + (Factor * atr(Pd))

// get the trend
float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// plot the trend
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor ,  linewidth = 2, title = "PP SuperTrend")
 
plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na)

// check and plot the signals
bsignal = Trend == 1 and Trend[1] == -1
ssignal = Trend == -1 and Trend[1] == 1
plotshape(bsignal and showlabel ? Trailingsl : na, title="Buy", text="Buy", location = location.absolute, style = shape.labelup, size = size.tiny, color = color.lime, textcolor = color.black, transp = 0)
plotshape(ssignal and showlabel ? Trailingsl : na, title="Sell", text="Sell", location = location.absolute, style = shape.labeldown, size = size.tiny, color = color.red, textcolor = color.white, transp = 0)

//get S/R levels using Pivot Points
float resistance = na
float support = na
support := pl ? pl : support[1]
resistance := ph ? ph : resistance[1]

// if enabled then show S/R levels
plot(showsr and support ? support : na, color = showsr and support ? color.lime : na, style = plot.style_circles, offset = -prd)
plot(showsr and resistance ? resistance : na, color = showsr and resistance ? color.red : na, style = plot.style_circles, offset = -prd)

// Trend Filter from SuperTrend Long Strategy
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)

// Combine the SuperTrend calculations
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)

// Strategy Entry Conditions
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       

window()  => time >= start and time <= finish ? true : false

// Combined entry conditions
longCondition = (trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window())
shortCondition = (trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window())

if (longCondition)
    strategy.entry("BUY", strategy.long)

if (shortCondition)
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short)

buy1 = barssince((trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window()))
sell1 = barssince((trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window()))
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(color1)