
Eine Trend-Tracking-Stopp-Loss-Reversal-Strategie ist eine Strategie, die den Parabolic SAR-Indikator verwendet, um Trends zu identifizieren und bei einer Trendwende in eine umgekehrte Position einzutreten. Die Strategie kombiniert Stop-Loss- und Stop-Stop-Mechanismen zur Risikokontrolle.
Die Strategie verwendet den Parabolic SAR-Indikator, um den aktuellen Markttrend zu beurteilen. Der Parabolic SAR-Vollname ist Parabolic Stop and Reverse, was bedeutet, dass die Parallax-Stopp- und Reverse-Linie umgekehrt ist.
Wenn der SAR-Punkt unter dem Preis fällt, ist dies ein bullish Trend; wenn der SAR-Punkt steigt und über dem Preis liegt, ist dies ein bearish Trend. Die Strategie besteht darin, die aktuelle Trendrichtung anhand der Position des SAR-Punktes zu bestimmen.
Konkret wird die Strategie ausgebucht, wenn der SAR-Punkt im Aufwärtstrend und über dem Preis ist; die Strategie wird mehr als ein Position ausgebucht, wenn der SAR-Punkt im Abwärtstrend und unter dem Preis ist. Das heißt, ein Umkehrposition wird eingegeben, wenn der SAR-Punkt eine Trendwende zeigt.
Darüber hinaus bietet die Strategie auch eine Stop-Loss- und Stop-Stop-Mechanismen. Bei Überschreitung ist es möglich, einen Stop-Loss-Preis zu setzen, um Verluste zu begrenzen. Es ist auch möglich, einen Stop-Stop-Preis zu setzen, um nach Erreichen eines bestimmten Zielgewinns eine Position zu platzieren.
Die Strategie kombiniert Trendindikatoren mit Stop-Loss-Mechanismen und bietet folgende Hauptvorteile:
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Diese Risiken können durch die Optimierung der Parameter oder durch die Filterung anderer Indikatoren behoben werden.
Die Strategie kann in folgenden Richtungen optimiert werden:
Die Trend-Tracking-Stopp-Loss-Reversal-Strategie ist eine eher klassische Handelsstrategie. Sie dient der Erkennung von Trendreversalen und der Risikokontrolle durch Stop-Loss- und Stop-Stopp-Methoden. Durch die Optimierung kann sie zu einer lohnenden Strategie werden.
/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Parabolic SAR Strategy", overlay=true)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
firstTrendBar = false
SAR := nextBarSAR
if bar_index == 1
float prevSAR = na
float prevEP = na
lowPrev = low[1]
highPrev = high[1]
closeCur = close
closePrev = close[1]
if closeCur > closePrev
uptrend := true
EP := high
prevSAR := lowPrev
prevEP := high
else
uptrend := false
EP := low
prevSAR := highPrev
prevEP := low
firstTrendBar := true
SAR := prevSAR + start * (prevEP - prevSAR)
if uptrend
if SAR > low
firstTrendBar := true
uptrend := false
SAR := max(EP, high)
EP := low
AF := start
else
if SAR < high
firstTrendBar := true
uptrend := true
SAR := min(EP, low)
EP := high
AF := start
if not firstTrendBar
if uptrend
if high > EP
EP := high
AF := min(AF + increment, maximum)
else
if low < EP
EP := low
AF := min(AF + increment, maximum)
if uptrend
SAR := min(SAR, low[1])
if bar_index > 1
SAR := min(SAR, low[2])
else
SAR := max(SAR, high[1])
if bar_index > 1
SAR := max(SAR, high[2])
nextBarSAR := SAR + AF * (EP - SAR)
if barstate.isconfirmed
if uptrend
strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
strategy.cancel("ParLE")
else
strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
strategy.cancel("ParSE")
plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua)
//Stop Loss Inputs
use_short_stop_loss = input(false, title="Short Stop Loss", group="Stop Loss and Take Profit", inline="Short_SL")
short_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1,
defval=5, group="Stop Loss and Take Profit", inline="Short_SL") * 0.01
use_long_stop_loss = input(false, title="Long Stop Loss", group="Stop Loss and Take Profit", inline="Long_SL")
long_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1,
defval=5, group="Stop Loss and Take Profit", inline="Long_SL") * 0.01
//Take Profit Inputs
use_short_take_profit = input(false, title="Short Take Profit", group="Stop Loss and Take Profit", inline="Short_TP")
short_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
defval = 20, group="Stop Loss and Take Profit", inline="Short_TP") * .01
use_long_take_profit = input(false, title="Long Take Profit", group="Stop Loss and Take Profit", inline="Long_TP")
long_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
defval = 20, group="Stop Loss and Take Profit", inline="Long_TP") * .01
longStopPrice = strategy.position_avg_price * (1 - long_stop_loss)
shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss)
longLimitPrice = strategy.position_avg_price * (1 + long_take_profit)
shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit)
if (strategy.position_size > 0.0)
if (use_long_stop_loss and not use_long_take_profit)
strategy.exit("Long", stop = longStopPrice)
if (use_long_take_profit and not use_long_stop_loss)
strategy.exit("Long", limit = longLimitPrice)
if (use_long_take_profit and use_long_stop_loss)
strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice)
if (strategy.position_size < 0.0)
if (use_short_stop_loss and not use_short_take_profit)
strategy.exit("Short", stop = shortStopPrice)
if (use_short_take_profit and not use_short_stop_loss)
strategy.exit("Short", limit = shortLimitPrice)
if (use_short_take_profit and use_short_stop_loss)
strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)