Super Trend ATR-Strategie


Erstellungsdatum: 2024-03-29 11:29:15 zuletzt geändert: 2024-03-29 11:29:15
Kopie: 2 Klicks: 707
1
konzentrieren Sie sich auf
1617
Anhänger

Super Trend ATR-Strategie

Überblick

Es ist eine Strategie, die auf Supertrend-Indikatoren und ATR-Indikatoren basiert. Die Hauptidee dieser Strategie ist: Die Verwendung von Supertrend-Indikatoren, um die Richtung des aktuellen Marktes zu bestimmen und zu handeln, wenn sich die Supertrend-Indikatoren ändern. Die Strategie verwendet gleichzeitig die ATR-Indikatoren, um den Stop-Loss- und Stop-Stop-Preis zu berechnen und die Positionsgröße in einem bestimmten Verhältnis zum Kontosaldo zu berechnen, um das Risiko zu kontrollieren.

Strategieprinzip

Die Grundlagen dieser Strategie lauten wie folgt:

  1. Berechnen Sie die Werte der Supertrend-Indikatoren, die ein Kauf- oder Verkaufssignal erzeugen, wenn sich der Supertrend-Indikator ändert.
  2. Die Stop-Loss- und Stop-Off-Preise werden mit dem ATR-Indikator berechnet. Der Stop-Off-Preis wird mit dem aktuellen Preis plus oder minus dem ATR-Wert multipliziert und der Stop-Off-Preis wird mit dem Stop-Off-Preis multipliziert.
  3. Die Positionsgröße wird anhand eines bestimmten Prozentsatzes des Kontostandes und des Stop-Loss-Preises berechnet, um das Risiko für jeden Handel zu kontrollieren.
  4. Wenn ein Kaufsignal erzeugt wird, eröffnet die Position mehr, der Stop-Preis ist der Preis, wenn das Signal erzeugt wird, abzüglich des ATR-Wertes, multipliziert mit einem Vielfachen, der Stop-Preis ist der Preis, wenn das Signal erzeugt wird, plus der ATR-Wert, multipliziert mit einem Vielfachen, multipliziert mit dem Risiko-Gewinn-Verhältnis.
  5. Wenn ein Verkaufssignal erzeugt wird, wird die Position aufgelöst. Der Stop-Price ist der Preis, zu dem das Signal erzeugt wurde, plus der ATR-Wert, multipliziert mit einem Vielfachen. Der Stop-Price ist der Preis, zu dem das Signal erzeugt wurde, minus der ATR-Wert, multipliziert mit einem Vielfachen, multipliziert mit dem Risiko-Gewinn-Verhältnis.

Strategische Vorteile

Die Vorteile dieser Strategie sind:

  1. Die Kombination von Trend-Tracking und Volatilitätsindikatoren erlaubt es, Trends effektiv zu erfassen und gleichzeitig Risiken zu kontrollieren.
  2. Die Positionsgröße wird automatisch berechnet, basierend auf dem Kontostand und dem Risikograd, ohne manuelle Anpassung und einfach umzusetzen.
  3. Die Parameter können flexibel angepasst werden, um für verschiedene Märkte und Sorten zu arbeiten.

Strategisches Risiko

Die Risiken dieser Strategie lauten:

  1. Häufige Kauf- und Verkaufssignale können zu höheren Handelskosten und Schlupfpunkten führen.
  2. Die festen Stop-Loss- und Stop-Out-Ratio können sich nicht an Veränderungen am Markt anpassen, was zu frühzeitigem Stop-Loss oder zu geringen Gewinnen führt.
  3. Die Berechnung der Positionsgröße hängt von der historischen Volatilität ab, die bei einem plötzlichen Anstieg der Volatilität zu einem größeren Rückzug führen kann.

Die folgenden Maßnahmen können gegen diese Risiken eingesetzt werden:

  1. Erhöhung der Signalfilterbedingungen und Verringerung der Handelsfrequenz.
  2. Optimierung der Berechnungsmethoden für Stopps und Stopps, z. B. durch Verwendung von beweglichen Stopps oder dynamischen Stopps.
  3. Risikokontrollfaktoren in die Positionsberechnung einfließen, z. B. die Reduzierung von Positionen bei einem Durchbruch der Volatilität.

Richtung der Strategieoptimierung

Die Strategie kann in folgenden Bereichen optimiert werden:

  1. Die Einführung von mehr technischen Indikatoren wie MACD, RSI usw. als zusätzliche Voraussetzungen für Trendbeurteilung und Signalfilterung verbessert die Genauigkeit der Signale.
  2. Optimierung der Parameter des Supertrend-Indikators und des ATR-Indikators, um die optimale Kombination von Parametern für verschiedene Märkte und Sorten zu finden.
  3. Die Einführung von mehr Risikofaktoren in die Berechnung der Position, wie z. B. maximale Rücknahme des Kontos, maximale Risiken für einzelne Geschäfte, erhöht die Stabilität der Strategie.
  4. Erhöhung der Stop-Off-Strategien, z. B. partielle Stop-Off, mobile Stop-Off, um die Gewinnentwicklung aufrechtzuerhalten

Diese Optimierungen können die Profitabilität und Stabilität der Strategie erhöhen, während die Risiken der Strategie verringert werden, so dass die Strategie besser an unterschiedliche Marktbedingungen angepasst ist.

Zusammenfassen

Die Strategie kombiniert Supertrend-Indikatoren und ATR-Indikatoren, um Trends effektiv zu erfassen und gleichzeitig Risiken zu kontrollieren. Durch die Berechnung der optimalen Positionsgröße ist das Risiko für jeden Handel kontrollierbar. Die Strategie kann jedoch zu höheren Handelskosten und Rückzugszahlen in turbulenten Märkten führen.

Strategiequellcode
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradez99

//@version=5
strategy('Supertrend', overlay=true, format=format.price, precision=2)

Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.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
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
//fill(mPlot, upPlot, title='UpTrend Highligter', color=longFillColor)
//fill(mPlot, dnPlot, title='DownTrend Highligter', color=shortFillColor)

multiplier = input.float(title="ATR multiplier", defval = 1.5)
rr           = input.float(title="Risk:Reward", defval=1.0)
riskPerTrade = input.float(title="Risk Per Trade %", defval=1.0)
atr3 = ta.atr(14)

//calculate stops and targets 
longstop = close - (atr3 * multiplier)
shortstop = close + (atr3 * multiplier)
longStopDistance  = close - longstop
shortStopDistance = shortstop - close
longTarget  = close + (longStopDistance * rr)
shortTarget = close - (shortStopDistance * rr)

// Save stops & targets
var t_stop = 0.0
var t_target = 0.0

longCondition = buySignal 
if (longCondition)
    t_stop := longstop
    t_target := longTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (close - t_stop))
    strategy.entry("Long", strategy.long, qty = positionSize)

shortCondition = sellSignal 
if (shortCondition)
    t_stop := shortstop
    t_target := shortTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (t_stop - close))  
    strategy.entry("Short", strategy.short, qty = positionSize)

strategy.exit(id="Long Exit", from_entry="Long", limit=t_target, stop=t_stop)
strategy.exit(id="Short Exit", from_entry="Short", limit=t_target, stop=t_stop)