Strategie zur Trendverfolgung mit parabolischer SAR-Strategie zur Umkehrung von Stop Loss

Schriftsteller:ChaoZhang, Datum: 2024-02-01 14:54:09
Tags:

img

Übersicht

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.

Strategie Logik

Die Strategie verwendet den Parabolic SAR-Indikator, um den aktuellen Markttrend zu beurteilen. Parabolic SAR steht für Parabolic Stop and Reverse. Seine Indikatorlinien bilden eine Reihe von Parabeln auf dem Preisdiagramm, und diese Parabelpunkte stellen potenzielle Umkehrpunkte dar.

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.

Analyse der Vorteile

Die wichtigsten Vorteile der Kombination von Trendindikator und Stop-Loss-/Take-Profit-Mechanismen sind:

  1. Bereitschaft, die Chancen für einen umgekehrten Trend für den Gegentrendhandel zu erfassen.
  2. Aktiv Risiken und Gewinne kontrollieren, indem Sie Stop Loss und Take Profit festlegen.
  3. Parabolische SAR ist ein weit verbreiteter und wirksamer Umkehrindikator.
  4. Einfache und klare Strategieregeln, leicht verständlich und umsetzbar.

Risikoanalyse

Es gibt auch einige Risiken, die für die Strategie zu beachten sind:

  1. Der parabolische SAR-Indikator ist nicht perfekt, manchmal erzeugt er falsche Signale.
  2. Die Stop-Loss- und Take-Profit-Preise müssen vernünftig festgelegt werden, sonst kann es vorzeitig aufhören oder Gewinn machen.
  3. Die Handelsprovisionen wirken sich auch auf den Gesamtgewinn aus.
  4. Der neue Trend nach der Umkehrung kann kurzlebig sein.

Diese Risiken können durch Parameteroptimierung, Verwendung anderer Filterindikatoren usw. gelöst werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren Sie die Parabol SAR-Parameter, um die beste Kombination zu finden.
  2. Versuchen Sie verschiedene Stop Loss und nehmen Sie Gewinnstrategien wie Trailing Stop Loss.
  3. Hinzufügen von Indikatoren oder Bedingungen zur Filterung von Umkehrhandelssignalen.
  4. Zusätzliche Positionskontrolle basierend auf den Marktbedingungen.
  5. Anpassung der Parameter für verschiedene Handelsinstrumente.

Schlussfolgerung

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)

Mehr