Die Ressourcen sind geladen. Beförderung...

Parabolische SAR-Trendverfolgungsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-18 12:21:17
Tags:

img

Übersicht

Diese Strategie nutzt den Parabolischen SAR (Stop and Reverse) Indikator in Kombination mit EMA-Filterung, um die Signalgenauigkeit zu verbessern.

Strategie Logik

Ein langes Signal wird ausgelöst, wenn der SAR unter dem Preis und der Preis über der langsamen EMA plus Offset liegt. Ein kurzes Signal wird ausgelöst, wenn der SAR über dem Preis und der Preis unter der langsamen EMA minus Offset liegt. Der Crossover zwischen der schnellen EMA und der langsamen EMA bietet zusätzliches Filtern. Dies vermeidet falsche Signale, wenn der SAR allein verwendet wird.

Insbesondere sind die langen Eintrittsbedingungen:

  1. Das SAR liegt unter dem vorherigen Schlusskurs und über dem aktuellen Schlusskurs;
  2. Der aktuelle Schlusspunkt liegt über der langsamen EMA plus der verschobenen EMA oder die schnellen EMA-Kreuzungen liegen unter der langsamen EMA;
  3. Der aktuelle Abschluss liegt über dem SAR-Wert und der langsame EMA plus Offset.

Kurzfristige Einstiegsbedingungen sind:

  1. SAR liegt über dem vorherigen Schlusskurs und unter dem aktuellen Schlusskurs;
  2. Der aktuelle Schlusspunkt liegt unter der langsamen EMA minus Versatz- oder schnellen EMA-Kreuzung über der langsamen EMA;
  3. Der aktuelle Abschluss liegt unter dem SAR-Wert und der langsame EMA minus Offset.

Analyse der Vorteile

Durch die Kombination von SAR- und EMA-Filterung kann diese Strategie die Trendrichtung gut erkennen und falsche Signale reduzieren.

Die Vorteile sind:

  1. SAR kann schnell auf Preisänderungen reagieren und Trendumkehrpunkte erkennen.
  2. Die EMA-Filterung bestätigt die Trendrichtung weiter und verhindert falsche Signale, wenn allein SAR verwendet wird.
  3. Das Crossover zwischen schneller und langsamer EMA sorgt für zusätzliche Signalgenauigkeit.
  4. Die Rentabilität kann durch Parameteroptimierung verbessert werden.

Risikoanalyse

Diese Strategie birgt einige Risiken:

  1. SAR und EMA können während von Range-bound Markten falsche Signale erzeugen, was sich auf die Rentabilität auswirkt. Dies kann durch Parameteroptimierung reduziert werden.
  2. Die EMA hat einen Verzögerungseffekt und kann bei einer Trendumkehr die besten Einstiegspunkte verpassen.
  3. Der Stop-Loss-Bereich kann bei hoher Volatilität leicht getroffen werden, was zu höheren Verlusten führt.

Optimierungsrichtlinien

Diese Strategie kann aus folgenden Gesichtspunkten optimiert werden:

  1. Optimieren Sie SAR-Parameter wie Schritt und Maximum, um es empfindlicher zu machen.
  2. Optimieren Sie langsame und schnelle EMA-Perioden, um optimale Kombinationen zu finden.
  3. Optimieren Sie die EMA-Verlagerung, um falsche Signale zu reduzieren.
  4. Für zusätzliche Filterung und Genauigkeit werden weitere Indikatoren wie MACD und KDJ hinzugefügt.
  5. Optimieren Sie die Stop-Loss-Strategie, um Verluste pro Handel zu reduzieren.

Schlussfolgerung

Diese Strategie kombiniert die Stärken von SAR und EMA, um ein flexibles Trendfolgensystem zu entwerfen. Insgesamt verfügt sie über eine gute Trenddetektionsfähigkeit und funktioniert gut bei der Verfolgung von Trends. Weitere Verbesserungen bei Parameteroptimierung und Risikomanagement können die Stabilität und Rentabilität verbessern. Sie eignet sich für Anleger mit gutem Risikomanagementbewusstsein und Optimierungsfähigkeiten.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("SAR Trend Trader Strategy By: jhanson107", shorttitle="SAR Trend Trader Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


SlowEMALength = input(100, "Slow EMA Length")
FastEMALength = input(10, "Fast EMA Length")
emaoffset = input(1.00, "EMA Offset %")
start = input(0.01)
increment = input(0.005)
maximum = input(0.08)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

psar = sar(start, increment, maximum)
ema = ema(close, SlowEMALength)
fastema = ema(close, FastEMALength)
offset = (emaoffset / 100) * ema

// Signals
long = high[1] < psar[2] and high >= psar[1] and close > ema + offset or crossunder(ema, fastema) and close > psar and close > ema + offset
short = low[1] > psar[2] and low <= psar[1] and close < ema - offset or crossover(ema, fastema) and close < psar and close < ema - offset

// Plot PSAR
plot(psar, title="PSAR", color = low < psar and not long ? green : red, trackprice=true)

//Barcolor
barcolor(close > psar and close > ema + offset and fastema > ema ? green : na)
barcolor(close > psar and close < ema + offset or close > psar and fastema < ema ? white : na)
barcolor(close < psar and close < ema - offset and fastema < ema and close? red : na)
barcolor(close < psar and close > ema - offset or close < psar and fastema > ema ? white : na)

//Plot EMA
plot(ema, color=blue, linewidth=1, transp=0, title="Slow EMA")
plot(fastema, color=purple, linewidth=1, transp=0, title="Fast EMA")


if(high > psar)
    strategy.close("Short")
    
if(low < psar)
    strategy.close("Long")
    
if(long and time_cond)
    strategy.entry("Long", strategy.long, comment="Long")
   
if(short and time_cond)
    strategy.entry("Short", strategy.short, comment="Short")

if (not time_cond)
    strategy.close_all()

Mehr