
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.
Die Strategie basiert hauptsächlich auf folgenden Punkten:
Der SAR-Indikator ist in der Lage, die Preisänderungen dynamisch zu verfolgen, um Mehrkopftrends und Leerlauftrends zu bestimmen.
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.
Wenn die SAR-Werte nach unten wechseln, wird ein zusätzlicher Einstieg durchgeführt, wenn die drei Gleichlinien insgesamt steigen.
Bei einer Aufwärtsbewegung des SAR-Index, wenn die drei Ebenen vollständig fallen, wird der Eintritt in den Shorting vorgenommen.
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.
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:
Der SAR-Indikator ist in der Lage, Trendwechsel dynamisch zu ermitteln und Trendwechselchancen schnell zu erfassen.
Drei Gleichlinien filtern effektiv Marktlärm und verhindern falsche Durchbrüche.
SMMA-Gleichgewicht wird verwendet, um eine glattere Kurve zu erzeugen und die Störung des Handels durch Schwankungen der Gleichgewichtung zu verringern.
In Kombination mit einem Stop-Loss-Stopp-Set kann ein einmaliger Verlust kontrolliert und gleichzeitig ein Teil des Gewinns gesperrt werden.
Strategieparameter sind flexibel eingestellt und können für verschiedene Märkte angepasst werden, um die Strategiewirkung zu optimieren.
Die Strategie birgt auch einige Risiken, darunter:
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.
Drei Gleichlinien-Settings sind möglicherweise nicht für alle Sorten geeignet und müssen je nach Sortenpraxis angepasst werden.
Der SAR-Preis, der als Stop-Loss für die nächste BAR eingestellt ist, ist zeitlich verzögert und kann den Verlust ausweiten.
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.
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:
Die SAR-Parameter werden je nach Schwankung der Sorten angepasst, um die Wahrscheinlichkeit einer häufigen Umstellung zu verringern.
Anpassung der Parameter der drei Gleichlinien, um sie näher an die Merkmale der verschiedenen Sorten anzupassen.
Optimierung von Stop-Loss-Strategien, z. B. durch Verwendung von kleinen Stop-Losses, beweglichen Stop-Losses usw.
In einem Markt mit hoher Handelsfrequenz wird der Stop-Loss-Preis verwendet, um einen Verlust zu vermeiden, der durch einen Rutsch vergrößert wird.
Tests mit Parameteroptimierung, um die Auswirkungen von Mittellinien und SAR-Parametern auf die Effektivität der Strategie zu bewerten.
Nach der oben erwähnten Analyse kann diese Strategie in folgenden Bereichen optimiert werden:
Optimierung der SAR-Parameter-Einstellungen, Glatterung der SAR-Kurve, Verringerung der Kurvenfrequenz und Vermeidung von Überhandelungen.
Anpassung der Länge der drei Gleichlinien, damit sie den Merkmalen der jeweiligen Handelsarten besser entsprechen und eine bessere Trendfilterwirkung haben.
Verringern Sie den Verlust durch Stop-Losses, indem Sie dynamische Stop-Loss-Strategien anwenden, wie z. B. bewegliche Stop-Losses, Kleinststop-Losses usw.
Der Einsatz von Limit-Stop-Loss-Systemen in Hochfrequenz-Handelsmärkten reduziert den Stop-Loss-Verlust.
Zusätzliche Indikatoren wie RSI, KD usw. werden gefiltert, um die Signalqualität zu verbessern und die Wahrscheinlichkeit eines falschen Durchbruchs zu verringern.
Optimierung der Einstiegsbedingungen, wobei die K-Linienform während der SAR-Wende überprüft werden kann, um eine minderwertige Signalqualität zu vermeiden.
Hinzufügen einer Wiedereintrittsbedingung, die bei fortgesetzter Erhöhung der Kursbewegung nach dem Stop-Loss gilt.
Verbesserte Stop-Off-Strategien, wie beispielsweise mobile Stop-Off, partielle Stop-Off und Level-Differenz-Stop-Off, verbessern die Profitabilität.
Optimierung der Parameter basierend auf den Rückmeldungen und Beurteilung der Auswirkungen der Parameter auf die Gesamtstrategie.
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.
/*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)