Die SuperTrend-Strategie ist eine Trend-folgende Strategie, die auf der Berechnung des durchschnittlichen wahren Bereichs basiert. Sie verwendet ATR, um Stop-Loss-Linien festzulegen und die Trendrichtung zu bestimmen, indem beurteilt wird, ob der Preis die Stop-Loss-Linien durchbricht und somit Handelssignale erzeugt.
Die Strategie berechnet zunächst den Durchschnittlichen Wahren Bereich (ATR) über einen bestimmten Zeitraum. Dann verwendet sie den ATR-Wert multipliziert mit einem Skalierungsfaktor, um die lange Stop-Loss-Linie und die kurze Stop-Loss-Linie zu berechnen. Die spezifische Berechnung ist wie folgt:
atr = mult * atr(length)
longStop = hl2 - atr
shortStop = hl2 + atr
Wo Länge der Zeitraum ist, für den ATR berechnet wird, und Mult der Skalierungsfaktor für ATR ist.
Nach der Berechnung der Stop-Loss-Linien beurteilt die Strategie weiterhin, ob der Preis die Stop-Loss-Line des vorherigen Balkens durchbricht, um die Trendrichtung zu bestimmen:
dir := dir == -1 and close > shortStopPrev ? 1 :
dir == 1 and close < longStopPrev ? -1 : dir
Wenn die lange Stop-Loss-Linie gebrochen wird, gilt der Trend als bullisch.
Gemäß der Änderung der Trendrichtung werden Kauf- und Verkaufssignale erzeugt:
buySignal = dir == 1 and dir[1] == -1
sellSignal = dir == -1 and dir[1] == 1
Schließlich werden entsprechende Handelsmaßnahmen ergriffen, wenn Kauf- oder Verkaufssignale erscheinen.
Die Verwendung von ATR zur Berechnung von Stop-Loss-Linien kann Marktlärm effektiv filtern und zuverlässigere Trendsignale erfassen.
Die Strategie hat nur wenige Parameter, die leicht zu verstehen und zu bedienen sind.
Der Einsatz eines Stop-Loss-Line-Breakouts zur Bestimmung der Trendrichtung kann die Risiken effektiv kontrollieren und den Stop-Loss rechtzeitig beenden.
Konfigurierbar für den Handel mit nur langen oder zwei Richtungen, um unterschiedlichen Handelsstilen gerecht zu werden.
Sie kann in jedem Zeitrahmen und für verschiedene Handelsinstrumente verwendet werden.
In den Märkten mit unterschiedlichen Kursbereichen kann der ATR höher gezogen werden, was zu einem breiteren Stop-Loss und mehr falschen Signalen führt.
Die optimale Kombination der Parameter ist unsicher. ATR-Periode und Multiplikator müssen basierend auf den Marktbedingungen optimiert werden.
Der optimale Zeitrahmen für jedes Handelsinstrument ist unbekannt und muss getestet werden.
Der beste Einstiegszeitpunkt ist unklar und es gibt eine gewisse Verzögerung.
Es besteht die Gefahr, nicht auf dem Markt zu sein, wenn der Trend schwach ist.
Es besteht die Gefahr, dass ein Stop-Loss getroffen wird.
Andere Indikatoren wie MACD, RSI können zur Filtration eingesetzt werden, um falsche Signale in den verschiedenen Märkten zu vermeiden.
Maschinelles Lernen oder genetische Algorithmen können verwendet werden, um die optimalen Parametermengen zu finden.
Die Parameteroptimierung kann für jedes Instrument durchgeführt werden, um die beste ATR-Periode und den besten Multiplikator zu finden.
Volumenindikatoren können verwendet werden, um einen besseren Eintrittszeitpunkt zu bestimmen und einen vorzeitigen Eintritt zu vermeiden.
Überlegen Sie, ob Sie Verriegelungsstrategien verwenden, um Positionen zu halten, wenn Sie nicht auf dem Markt sind.
Die Stop-Loss-Breite kann mit Trendstärke-Indikatoren entspannt und optimiert werden.
Die SuperTrend-Strategie verwendet dynamische Stop-Loss-Linien, die von ATR berechnet werden, um Trendänderungen zu erkennen, wenn ein Preisbruch auftritt. Es ist ein relativ zuverlässiges und risikokontrolliertes Trendfolgensystem. Die Strategie ist einfach zu bedienen und auf verschiedene Instrumente anwendbar, aber Parameter und Regeln müssen für eine bessere Leistung auf verschiedenen Märkten optimiert werden. Die Kombination mit anderen technischen Indikatoren und Strategien kann die Handelsergebnisse weiter verbessern. Im Allgemeinen basiert SuperTrend auf wissenschaftlich fundierten Konzepten und ist für weitere Forschung und Anwendung durch Händler wert.
/*backtest start: 2023-09-12 00:00:00 end: 2023-10-12 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy("SuperTrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000) LongOnly = input(title="Long Only ?", type=input.bool, defval=true) length = input(title="ATR Period", type=input.integer, defval=22) mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval=1, title="From Day", minval=1, maxval=31) fromMonth = input(defval=1, title="From Month", minval=1, maxval=12) fromYear = input(defval=2019, title="From Year", minval=1970) // To Date Inputs toDay = input(defval=1, title="To Day", minval=1, maxval=31) toMonth = input(defval=1, title="To Month", minval=1, maxval=12) toYear = input(defval=2020, title="To Year", minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// atr = mult * atr(length) longStop = hl2 - atr longStopPrev = nz(longStop[1], longStop) longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop = hl2 + atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and close > shortStopPrev ? 1 : dir == 1 and close < longStopPrev ? -1 : dir longColor = color.green shortColor = color.red plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) buySignal = dir == 1 and dir[1] == -1 plotshape(buySignal ? longStop : na, title="Long Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) plotshape(buySignal and showLabels ? longStop : na, title="Buy Label", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=color.white, transp=0) plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) sellSignal = dir == -1 and dir[1] == 1 plotshape(sellSignal ? shortStop : na, title="Short Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) plotshape(sellSignal and showLabels ? shortStop : na, title="Sell Label", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=color.white, transp=0) if LongOnly if buySignal and time_cond strategy.entry("Long", strategy.long, comment="Long") if(sellSignal and time_cond) strategy.close("Long") else if buySignal and time_cond strategy.entry("Long", strategy.long, comment="Long") else strategy.cancel("Long") if sellSignal and time_cond strategy.entry("Short", strategy.short, comment="Short") else strategy.cancel("Short") if not time_cond strategy.close_all()