Durchbruch bei der dynamischen SAR-Verfolgung, Strategie mit drei gleitenden Durchschnitten


Erstellungsdatum: 2023-11-08 11:53:09 zuletzt geändert: 2023-11-08 11:53:09
Kopie: 0 Klicks: 778
1
konzentrieren Sie sich auf
1621
Anhänger

Durchbruch bei der dynamischen SAR-Verfolgung, Strategie mit drei gleitenden Durchschnitten

Überblick

Dies ist eine Breakout-Handelsstrategie, die die Parabola-SAR-Anzeige mit den SMMA-Gewährlinien aus drei verschiedenen Perioden kombiniert. Sie macht mehr, wenn die drei Gewährlinien überall hoch sind, und ist leer, wenn die drei Gewährlinien überall unten sind, und in Kombination mit der SAR-Anzeige beurteilt die Richtung des Trends und eröffnet eine umgekehrte Position, wenn sich die SAR-Anzeige bewegt. Die Strategie unterstützt gleichzeitig Stop-Loss und Stop-Stop.

Strategieprinzip

Die Strategie basiert hauptsächlich auf folgenden Punkten:

  1. Der SAR-Indikator ist in der Lage, die Preisänderungen dynamisch zu verfolgen, um Mehrkopftrends und Leerlauftrends zu bestimmen.

  2. Setzen Sie drei SMMA-Mittellinien mit unterschiedlichen Perioden (Schnelllinie 21, Mittellinie 50 und Langlinie 200). Wenn alle drei Mittellinien steigen, wird ein Mehrkopftrend erzeugt; wenn alle drei Mittellinien fallen, wird ein Hohlkopftrend erzeugt.

  3. Wenn die SAR-Werte nach unten wechseln, wird ein zusätzlicher Einstieg durchgeführt, wenn die drei Gleichlinien insgesamt steigen.

  4. Bei einer Aufwärtsbewegung des SAR-Index, wenn die drei Ebenen vollständig fallen, wird der Eintritt in den Shorting vorgenommen.

  5. Stop-Loss und Stop-Stop. Stop-Loss wird mit dem SAR-Wert als dynamische Stop-Loss-Bereich und Stop-Stop als ein bestimmter Prozentsatz des Einstiegspreises festgelegt.

Die Strategie beginnt damit, zu beurteilen, ob der SAR-Wert des aktuellen BAR umgekehrt ist. Wenn der SAR von oben nach unten umgekehrt ist und die drei Gleichungen vollständig aufgegangen sind, wird mehr getan; wenn der SAR von unten nach oben umgekehrt ist und die drei Gleichungen vollständig aufgegangen sind, wird null gemacht.

Nach dem Halt der Position wird die Stop-Line als der nächste SAR-Präsent der BAR eingestellt, wobei die SAR als dynamische Tracking-Stopp eingesetzt wird. Der Stop-Line wird als 10% des Eintrittspreises eingestellt.

Analyse der Stärken

Diese Strategie kombiniert die Vorteile von Trendmessungen und mehrzeitigen Durchschnittslinien und ermöglicht die rechtzeitige Eintrittsphase bei einer Trendwende und gleichzeitig den falschen Durchbruch durch den Durchschnittsfilter. Die Hauptvorteile sind:

  1. Der SAR-Indikator ist in der Lage, Trendwechsel dynamisch zu ermitteln und Trendwechselchancen schnell zu erfassen.

  2. Drei Gleichlinien filtern effektiv Marktlärm und verhindern falsche Durchbrüche.

  3. SMMA-Gleichgewicht wird verwendet, um eine glattere Kurve zu erzeugen und die Störung des Handels durch Schwankungen der Gleichgewichtung zu verringern.

  4. In Kombination mit einem Stop-Loss-Stopp-Set kann ein einmaliger Verlust kontrolliert und gleichzeitig ein Teil des Gewinns gesperrt werden.

  5. Strategieparameter sind flexibel eingestellt und können für verschiedene Märkte angepasst werden, um die Strategiewirkung zu optimieren.

Risikoanalyse

Die Strategie birgt auch einige Risiken, darunter:

  1. In einem schwankenden Trend kann der SAR-Indikator mehrmals und häufig umschwenken, was zu zu häufigen Transaktionen und erhöhten Transaktionsgebühren führt.

  2. Drei Gleichlinien-Settings sind möglicherweise nicht für alle Sorten geeignet und müssen je nach Sortenpraxis angepasst werden.

  3. Der SAR-Preis, der als Stop-Loss für die nächste BAR eingestellt ist, ist zeitlich verzögert und kann den Verlust ausweiten.

  4. Das Problem, dass falsche Durchbrüche in stabilen Trends die SAR-Kurve umkehren, kann durch die Anpassung der Parameter der glatten SAR-Kurve gemildert werden.

  5. Ungenaue Durchschnittseinstellungen können auch Trends verpassen oder falsche Signale erzeugen, was sorgfältig getestet und optimiert werden muss.

Die Risiken können optimiert werden, indem:

  1. Die SAR-Parameter werden je nach Schwankung der Sorten angepasst, um die Wahrscheinlichkeit einer häufigen Umstellung zu verringern.

  2. Anpassung der Parameter der drei Gleichlinien, um sie näher an die Merkmale der verschiedenen Sorten anzupassen.

  3. Optimierung von Stop-Loss-Strategien, z. B. durch Verwendung von kleinen Stop-Losses, beweglichen Stop-Losses usw.

  4. In einem Markt mit hoher Handelsfrequenz wird der Stop-Loss-Preis verwendet, um einen Verlust zu vermeiden, der durch einen Rutsch vergrößert wird.

  5. Tests mit Parameteroptimierung, um die Auswirkungen von Mittellinien und SAR-Parametern auf die Effektivität der Strategie zu bewerten.

Optimierungsrichtung

Nach der oben erwähnten Analyse kann diese Strategie in folgenden Bereichen optimiert werden:

  1. Optimierung der SAR-Parameter-Einstellungen, Glatterung der SAR-Kurve, Verringerung der Kurvenfrequenz und Vermeidung von Überhandelungen.

  2. Anpassung der Länge der drei Gleichlinien, damit sie den Merkmalen der jeweiligen Handelsarten besser entsprechen und eine bessere Trendfilterwirkung haben.

  3. Verringern Sie den Verlust durch Stop-Losses, indem Sie dynamische Stop-Loss-Strategien anwenden, wie z. B. bewegliche Stop-Losses, Kleinststop-Losses usw.

  4. Der Einsatz von Limit-Stop-Loss-Systemen in Hochfrequenz-Handelsmärkten reduziert den Stop-Loss-Verlust.

  5. Zusätzliche Indikatoren wie RSI, KD usw. werden gefiltert, um die Signalqualität zu verbessern und die Wahrscheinlichkeit eines falschen Durchbruchs zu verringern.

  6. Optimierung der Einstiegsbedingungen, wobei die K-Linienform während der SAR-Wende überprüft werden kann, um eine minderwertige Signalqualität zu vermeiden.

  7. Hinzufügen einer Wiedereintrittsbedingung, die bei fortgesetzter Erhöhung der Kursbewegung nach dem Stop-Loss gilt.

  8. Verbesserte Stop-Off-Strategien, wie beispielsweise mobile Stop-Off, partielle Stop-Off und Level-Differenz-Stop-Off, verbessern die Profitabilität.

  9. Optimierung der Parameter basierend auf den Rückmeldungen und Beurteilung der Auswirkungen der Parameter auf die Gesamtstrategie.

Zusammenfassen

Insgesamt handelt es sich um eine einfache und praktische Strategie, die die Sensitivität der SAR-Trendbeobachter und der Gleichgewichtsträger nutzt, um die Trendwende zu beurteilen, und um die Wellenwirkung der Gleichgewichtsträger, um schnell am Trendwendepunkt einzutreten. Gleichzeitig wird ein Stop-Loss-Stopp gesetzt, um das Risiko zu kontrollieren und die Gewinne zu sperren.

Strategiequellcode
/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="SAR + 3SMMA with SL & TP", overlay=true, calc_on_order_fills=false, calc_on_every_tick=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.USD, commission_type= strategy.commission.percent, commission_value=0.03)
start = input.float(0.02, step=0.01, group="SAR")
increment = input.float(0.02, step=0.01, group="SAR")
maximum = input.float(0.2, step=0.01, group="SAR")

//Take Profit Inputs     
take_profit = input.float(title="Take Profit (%)", minval=0.0, step=0.1, defval = 0.1, group="Stop Loss and Take Profit", inline="TP") * 0.01

//Stop Loss Inputs
stop_loss = input.float(title="StopLoss (%)", minval=0.0, step=0.1, defval=1, group="Stop Loss and Take Profit", inline="SL") * 0.01

// Smooth Moving Average
fastSmmaLen = input.int(21, minval=1, title="Fast Length", group = "Smooth Moving Average")
midSmmaLen = input.int(50, minval=1, title="Mid Length", group = "Smooth Moving Average")
slowSmmaLen = input.int(200, minval=1, title="Slow Length", group = "Smooth Moving Average")

src = input(close, title="Source", group = "Smooth Moving Average")

smma(ma, src, len) => 
    smma = 0.0
    smma := na(smma[1]) ? ma : (smma[1] * (len - 1) + src) / len
    smma

fastSma = ta.sma(src, fastSmmaLen)
midSma = ta.sma(src, midSmmaLen)
slowSma = ta.sma(src, slowSmmaLen)

fastSmma = smma(fastSma, src, fastSmmaLen)
midSmma = smma(midSma, src, midSmmaLen)
slowSmma = smma(slowSma, src, slowSmmaLen)

isSmmaUpward = ta.rising(fastSmma, 1) and ta.rising(midSmma, 1) and ta.rising(slowSmma, 1)

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 := math.max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := math.min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := math.min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := math.min(AF + increment, maximum)
	if uptrend
		SAR := math.min(SAR, low[1])
		if bar_index > 1
			SAR := math.min(SAR, low[2])
	else
		SAR := math.max(SAR, high[1])
		if bar_index > 1
			SAR := math.max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

sarIsUpTrend = uptrend ? true : false

sarFlippedDown = sarIsUpTrend and not sarIsUpTrend[1] ? true : false
sarFlippedUp = not sarIsUpTrend and sarIsUpTrend[1] ? true : false


longEntryCondition = isSmmaUpward and sarFlippedDown
shortEntryCondition = not isSmmaUpward and sarFlippedUp

if(longEntryCondition)
    strategy.entry("L", strategy.long, stop=nextBarSAR, comment="L")

if(shortEntryCondition)
    strategy.entry("S", strategy.short, stop=nextBarSAR, comment="S")


strategy.exit("CL", when=strategy.position_size > 0, limit=strategy.position_avg_price * (1+take_profit), stop=strategy.position_avg_price*(1-stop_loss))
strategy.exit("CS", when=strategy.position_size < 0, limit=strategy.position_avg_price * (1-take_profit), stop=strategy.position_avg_price*(1+stop_loss))


plot(SAR, style=plot.style_cross, linewidth=1, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=1, color=color.aqua)
plot(series = fastSmma, title="fastSmma", linewidth=1)
plot(series = midSmma, title="midSmma", linewidth=2)
plot(series = slowSmma, title="slowSmma", linewidth=3)
plotchar(series = isSmmaUpward, title="isSmmaUpward", char='')
plotchar(series=sarIsUpTrend, title="sarIsUpTrend", char='')
plotchar(series=sarFlippedUp, title="sarFlippedUp", char='')
plotchar(series=sarFlippedDown, title="sarFlippedDown", char='')
plotchar(series=longEntryCondition, title="longEntryCondition", char='')
plotchar(series=shortEntryCondition, title="shortEntryCondition", char='')
plotchar(series=strategy.position_size > 0, title="inLong", char='')
plotchar(series=strategy.position_size < 0, title="inShort", char='')


//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)