
Die Supertrend Trading Strategy ist eine Trendverfolgungsstrategie, die auf der durchschnittlichen realen Bandbreite (ATR) und dem Moving Average (MA) basiert. Sie kombiniert die Vorteile von Trendfollowing und Breakout-Trading, um die mittelfristige Trendrichtung zu identifizieren und Handelssignale nach Trendänderungen zu erzeugen.
Die Hauptidee dieser Strategie ist, dass ein Trendwechsel stattfindet, wenn der Preis den Supertrendkanal durchbricht, was zum Kauf oder Verkauf führt. Es wird gleichzeitig ein Stop-Loss- und ein Stop-Stop-Level gesetzt, um Gewinne zu sichern und Risiken zu kontrollieren.
Die Berechnung der Supertrend-Strategie besteht aus folgenden Schritten:
Der Vorteil dieser Strategie besteht darin, dass sie sowohl den Trend als auch die Trendwende kombiniert. Sie kann sowohl die Richtung der großen Trends ermitteln als auch die Umkehrmöglichkeiten rechtzeitig erfassen. Darüber hinaus bietet sie eine Stop-Loss-Stop-Mechanismus zur Risikokontrolle.
Die Supertrend-Strategie hat folgende Vorteile:
1. Halten Sie sich auf mittelfristige Trends
Der Supertrend-Kanal basiert auf der ATR-Berechnung und ist in der Lage, die mittelfristige Bandbreite der Preisbewegungen effektiv abzubilden. Es ist besser geeignet, die mittelfristigen Trends zu verfolgen als ein normaler Moving Average.
2. Die Umkehr der Trends rechtzeitig erfassen
Wenn der Preis den Kanal durchbricht, wird ein schnelles Handelssignal ausgesendet, um die Umkehrung des großen Trends rechtzeitig zu erfassen. Dies bietet die Garantie für eine angemessene Anpassung der Position und die Verringerung der Überschreitung der Haltung.
3. Schadensbegrenzungsmechanismus
Die Strategie bietet eine gleichzeitige Einstellung der Stop-Loss- und Stop-Off-Positionen, die automatisch die Stop-Loss-Platte einstellen können. Dies reduziert das Risiko von Überschwemmungsstop-Losses erheblich und hilft, die Trends zu erfassen.
4. Einfache Umsetzung
Die Strategie basiert auf der Durchschnittslinie und den ATR-Indikatoren und ist einfacher und leichter zu erfassen. Dies reduziert die Schwierigkeit der Festplattenoperationen.
5. Effiziente Nutzung der Mittel
Die Supertrend-Strategie verfolgt die mittelfristigen Trends und steuert die einzelnen Slippings, was zu einer höheren Effizienz der Gesamtkapitalnutzung führt.
Es gibt einige potenzielle Risiken bei einer Supertrend-Strategie:
1. Die Chancenkosten von Trendschwankungen sind höher
Die Supertrend-Strategie konzentriert sich auf die Verfolgung von mittleren und langen Trends, die in einem wackligen Markt mit höheren Kosten verbunden sind und möglicherweise einige Leerlauf-Gelegenheiten verpassen.
2. Parameteroptimierung wirkt sich aus
Die Wahl des ATR-Zyklus und des ATR-Multiplikators hat einen großen Einfluss auf die Wirksamkeit der Handelsstrategie. Wenn die Parameter falsch eingestellt sind, wird die Wirksamkeit des Handelssignals abgewertet.
3. Eine gewisse Rückständigkeit
Die Berechnung der Supertrend-Kanäle kann eine gewisse Verzögerung aufweisen, die dazu führen kann, dass die Signale nicht rechtzeitig erzeugt werden. Dies ist das Hauptproblem, das die Strategie lösen muss.
4. Strenge Schadensbegrenzung erforderlich
Wenn die Stop-Loss-Position zu groß eingestellt oder die Windkontrolle nicht perfekt umgangen wird, kann dies in extremen Fällen zu größeren Verlusten führen. Daher muss die Stop-Loss-Strategie streng ausgeführt werden, um einen stabilen Gewinn zu erzielen.
Die Supertrends-Strategie bietet Raum für weitere Optimierungen, insbesondere in Bezug auf:
1. Kombination von mehreren ATR-Zyklen
Es können mehrere ATR-Zyklen, z. B. 10 und 20 Tage, kombiniert werden, um einen kombinierten ATR-Indikator zu bilden. Dadurch kann die Sensitivität des Indikators erhöht und das Problem der Rückstandszeit verbessert werden.
2. Hinzufügen von Stop-Loss-Strategie-Modulen
Darüber hinaus kann die Stop-Loss-Kontrolle durch die Erweiterung der Strategie-Module wie Triple Stop, Oscillating Stop und Sequential Stop weiter gestärkt werden, um das Risiko von Verlusten zu verringern.
3. Optimierung der Parameter
Optimieren Sie die Einstellung von Parametern wie ATR-Zyklen, ATR-Multiplikationen und andere, um die optimale Kombination von Parametern zu finden, um die strategischen Gewinne weiter zu steigern. Darüber hinaus können die Parameter dynamisch optimiert werden, um die richtigen Werte für verschiedene Sorten und Marktphasen zu wählen.
4. Integrierte Modelle für maschinelles Lernen
Schließlich kann auch versucht werden, Machine-Learning-Modelle zu integrieren, um Trend-Erkenntnisse und Signal-Erzeugung zu automatisieren. Dies kann die Störung durch subjektive Faktoren reduzieren und die Stabilität der Strategie-Systeme möglicherweise weiter verbessern.
Die Supertrend-Handelsstrategie verwendet die mittelfristige Tendenz durch die Kombination von Mittellinien- und ATR-Indikatoren und erzeugt Handelssignale an Trendwendepunkten, um automatische Stop-Losses zu erzielen. Die Strategie fängt den großen Trend ein und kann auch die Umkehrmöglichkeiten zeitnah ergreifen.
Aber es gibt auch einige Mängel in dieser Strategie, hauptsächlich die mangelnde Vorstellung und das Verzögerungsproblem der Erschütterung. Dies erfordert Optimierungen aus mehreren Bereichen, wie z. B. die Kombination von ATR-Zyklen, die Erweiterung von Stop-Loss-Modulen, die Optimierung von Parametern und die Einführung von maschinellem Lernen. Dies kann zweifellos die Stabilität und die Goldrate der Supertrendstrategie weiter verbessern.
/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Supertrend V1.0 - Buy or Sell Signal",overlay=true)
Factor=input(3, minval=1,maxval = 100)
Pd=input(7, minval=1,maxval = 100)
//Calculating ATR
atrLength = input(title="ATR Length:", defval=14, minval=1)
Stop_Loss_Factor = input(1.5, minval=0,step=0.01)
factor_profit = input(1.0, minval=0,step=0.01)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 10, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2016, title = "From Year", minval = 2009)
ToMonth = input(defval = 4, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 10, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2039, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculate ATR
atrValue=atr(atrLength)
decimals = abs(log(syminfo.mintick) / log(10))
Atr = atrValue
if(decimals == 5)
Atr := atrValue * 10000
if(decimals == 4)
Atr := atrValue * 1000
if(decimals == 3)
Atr := atrValue * 100
if(decimals == 2)
Atr := atrValue * 10
//VJ2 Supertrend
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp = 0.0
TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown = 0.0
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend = 0.0
Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = 0.0
Tsl := Trend==1? TrendUp: TrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
//plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend")
plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
//Strategy
Trend_buy = Trend == 1
Trend_buy_prev = Trend[1] == -1
algo_buy_pre = Trend_buy and Trend_buy_prev
algo_buy = algo_buy_pre == 1 ? 1 : na
Trend_sell= Trend == -1
Trend_sell_prev = Trend[1] == 1
algo_sell_pre = Trend_sell and Trend_sell_prev
algo_sell = algo_sell_pre == 1 ? 1:na
strategy.entry("Long1", strategy.long, when= window() and algo_buy==1)
strategy.entry("Short1", strategy.short, when=window() and algo_sell==1)
bought = strategy.position_size > strategy.position_size
sold = strategy.position_size < strategy.position_size
longStop = Stop_Loss_Factor * valuewhen(bought, Atr, 0)
shortStop = Stop_Loss_Factor * valuewhen(sold, Atr, 0)
longProfit = factor_profit * longStop
shortProfit = factor_profit * shortStop
if(decimals == 5)
longStop := longStop *100000
longProfit := longProfit *100000
if(decimals == 4)
longStop := longStop * 10000
longProfit := longProfit * 10000
if(decimals == 3)
longStop := longStop * 1000
longProfit := longProfit * 1000
if(decimals == 2)
longStop := longStop * 100
longProfit := longProfit *100
if(decimals == 5)
shortStop := shortStop * 100000
shortProfit := shortProfit * 100000
if(decimals == 4)
shortStop := shortStop * 10000
shortProfit := shortProfit * 10000
if(decimals == 3)
shortStop := shortStop * 1000
shortProfit := shortProfit * 1000
if(decimals == 2)
shortStop := shortStop * 100
shortProfit := shortProfit * 100
strategy.exit("Exit Long", from_entry = "Long1", loss =longStop, profit = longProfit)
strategy.exit("Exit Short", from_entry = "Short1", loss =shortStop, profit = shortProfit)