Die Parabolic SAR Trend Tracking Stop Loss Reversal Strategy ist eine Strategie, die den Parabolic SAR Indikator verwendet, um Trends zu identifizieren und Gegentrendpositionen einzugeben, wenn sich der Trend umkehrt.
Die Strategie verwendet den Parabolic SAR-Indikator, um den aktuellen Markttrend zu beurteilen. Parabolic SAR steht für
Wenn die SAR-Punkte sinken und unter den Preis liegen, stellt dies einen bullischen Trend dar; wenn die SAR-Punkte steigen und über dem Preis liegen, stellt sie einen bärischen Trend dar. Die Strategie beurteilt die aktuelle Trendrichtung anhand der Position der SAR-Punkte
Insbesondere, wenn SAR-Punkte einen Aufwärtstrend zeigen und über den Preisen liegen, wird die Strategie kurz gehen; wenn SAR-Punkte einen Abwärtstrend zeigen und unter den Preisen liegen, wird die Strategie lang gehen. Das heißt, wenn SAR-Punkte eine Trendumkehr anzeigen, tritt man in Gegentrendpositionen ein.
Darüber hinaus legt die Strategie auch Stop-Loss- und Take-Profit-Mechanismen fest. Beim Long gehen kann sie einen Stop-Loss-Preis festlegen, um Verluste zu begrenzen; zur gleichen Zeit kann sie einen Take-Profit-Preis festlegen, um Positionen nach Erreichen eines bestimmten Zielprofits zu schließen.
Die wichtigsten Vorteile der Kombination von Trendindikator und Stop-Loss-/Take-Profit-Mechanismen sind:
Es gibt auch einige Risiken, die für die Strategie zu beachten sind:
Diese Risiken können durch Parameteroptimierung, Verwendung anderer Filterindikatoren usw. gelöst werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Im Allgemeinen handelt es sich um eine eher klassische Trend-Tracking-Stop-Loss-Umkehrstrategie. Sie identifiziert Trendumkehrungen und kontrolliert auch Risiken mit Stop-Loss- und Take-Profit-Mitteln. Nach Optimierungen kann sie eine lohnende Strategie für den Live-Handel 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)