SuperTrend-Strategie für den Ethereum-Handel

Schriftsteller:ChaoZhang, Datum: 2024-01-08 14:35:37
Tags:

img

Übersicht

Diese Strategie basiert auf dem SuperTrend-Indikator und verwendet ATR, um Stop-Loss-Linien dynamisch festzulegen, um von starken Trends in Ethereum zu profitieren.

Strategie Logik

Die Strategie verwendet einen klassischen Trendindikator - den SuperTrend-Indikator, um die Trendrichtung zu bestimmen.

  1. Aufwärtstrend-Stop-Loss-Linie zur Halte von Long-Positionen bei Aufwärtstrends;
  2. Abwärtstrend-Stop-Loss-Linie, um Short-Positionen in Abwärtstrends zu halten.

Wenn der Preis von einem Aufwärtstrend in einen Abwärtstrend wechselt, eröffnen Sie eine Short-Position.

Darüber hinaus nutzt die Strategie den ATR-Indikator, um die Stop-Loss-Linie dynamisch anzupassen. Insbesondere ist die Aufwärtstrend-Stop-Loss-Position der Durchschnitt des höchsten Höchst- und niedrigsten Tiefpunkts minus ATR multipliziert mit einem Koeffizienten; die Abwärtstrend-Stop-Loss-Position ist der Durchschnitt des höchsten Höchst- und niedrigsten Tiefpunkts plus ATR multipliziert mit einem Koeffizienten. Dies ermöglicht die Anpassung des Stop-Loss basierend auf der Marktvolatilität.

Wenn der Preis nach dem Eintritt der Eintrittssignale über die Stop-Loss-Linie zurückbricht, stoppt man mit dem Verlust.

Vorteile

Dies ist ein relativ ausgereifter Trend, der der Strategie folgt und folgende Vorteile hat:

  1. Verwenden Sie den SuperTrend-Indikator, um die Trendrichtung zuverlässig zu bestimmen;
  2. Anwendungen für die Anpassung von ATR-Stoppverlusten zur wirksamen Risikokontrolle;
  3. Einfache und klare Strategie-Logik, leicht verständlich und anpassungsfähig;
  4. Gewinnbringend auf dem volatilen Kryptowährungsmarkt.

Risiken

Diese Strategie birgt auch einige Risiken:

  1. Wahrscheinlichkeit, dass der Indikator SuperTrend falsch beurteilt wird, kann zu unnötigen Verlusten führen;
  2. ATR-Stopp-Loss kann zu aggressiv sein und durch Kursumkehrungen gestoppt werden;
  3. Eine hohe Volatilität auf den Kryptomärkten erhöht die Wahrscheinlichkeit, dass ein Stop-Loss getroffen wird.
  4. Höhere Transaktionsgebühren auf einigen Börsen wirken sich auf die endgültige Rentabilität aus.

Um die oben genannten Risiken zu mindern, kann der ATR-Koeffizient angepasst oder Filter mit anderen Indikatoren hinzugefügt werden.

Verbesserungsrichtlinien

Weitere Verbesserungsmöglichkeiten bestehen:

  1. Einführung mehrerer Indikatoren zur Verbesserung der Signalgenauigkeit;
  2. Erforschung der optimalen Werte für ATR-Länge und -Koeffizienten;
  3. Implementieren dynamischer Positionsgrößen auf der Grundlage des Risiko-Rendite-Verhältnisses;
  4. Testen Sie die Effektivität der Strategie in mehreren Krypto-Handelspaaren.

Schlussfolgerung

Insgesamt ist dies eine ausgereifte und zuverlässige Trendfolgestrategie. Es verwendet den SuperTrend-Indikator, um die Trendrichtung zu bestimmen, und passt den Stop-Loss mit ATR an, um Risiken zu kontrollieren, während man profitiert. Die Strategie funktioniert gut für hochvolatile Kryptowährungen wie Ethereum. Weitere Optimierungen können ihre Anwendung auf mehr Märkte für eine stetige Überleistung erweitern.


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

//@version=4 
strategy("SuperTrend Strategy", 
     overlay=true, 
     initial_capital=2e3, 
     process_orders_on_close=true, 
     commission_type=strategy.commission.percent, 
     commission_value=0.1 
     ) 
  
length = input(title="ATR Period", type=input.integer, defval=21) 
mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) 
wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) 
  
useDate = input(title="Start from Specific Date ?", defval=false) 
yearStart = input(title="Start Year", defval=2019) 
monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) 
dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) 
  
startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) 
startFrom = useDate ? time(timeframe.period) >= startTime : true 
  
atr = mult * ta.atr(length) 
  
longStop = hl2 - atr 
longStopPrev = nz(longStop[1], longStop) 
longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop 
  
shortStop = hl2 + atr 
shortStopPrev = nz(shortStop[1], shortStop) 
shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop 
  
dir = 1 
dir := nz(dir[1], dir) 
dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : 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) 
plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) 
  
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) 
plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) 
  
longCondition = dir[1] == -1 and dir == 1 
if longCondition and startFrom 
    strategy.entry("Long", strategy.long, stop=longStop) 
else 
    strategy.cancel("Long") 
  
shortCondition = dir[1] == 1 and dir == -1 
if shortCondition and startFrom 
    strategy.entry("Short", strategy.short, stop=shortStop) 
else 
    strategy.cancel("Short")
    

Mehr