Stratégie de suivi des tendances SAR parabolique

Auteur:ChaoZhang est là., Date: 2024-01-18 12h21 et 17h
Les étiquettes:

img

Résumé

Cette stratégie utilise l'indicateur Parabolic SAR (Stop and Reverse) combiné avec le filtrage EMA pour améliorer la précision du signal.

La logique de la stratégie

Un signal long est déclenché lorsque le SAR est inférieur au prix et que le prix est supérieur à la EMA lente plus le décalage. Un signal court est déclenché lorsque le SAR est supérieur au prix et que le prix est inférieur à la EMA lente moins le décalage. Le croisement entre l'EMA rapide et l'EMA lente fournit un filtrage supplémentaire. Cela évite de faux signaux lors de l'utilisation du SAR seul.

Plus précisément, les conditions d'entrée à long terme sont les suivantes:

  1. SAR est inférieure à la clôture précédente et supérieure à la clôture actuelle;
  2. La clôture actuelle est au-dessus de l'EMA lente plus l'EMA décalée ou les croisements de l'EMA rapide au-dessous de l'EMA lente;
  3. La clôture actuelle est supérieure à la valeur SAR et l'EMA plus le décalage est lent.

Les conditions d'entrée sont les suivantes:

  1. SAR est supérieur à la clôture précédente et inférieur à la clôture actuelle;
  2. La clôture actuelle est inférieure à la moyenne EMA lente moins le décalage ou la moyenne EMA rapide traverse la moyenne EMA lente;
  3. La clôture actuelle est inférieure à la valeur SAR et l'EMA lente moins le décalage.

Analyse des avantages

En combinant le filtrage SAR et EMA, cette stratégie permet de bien identifier la direction de la tendance et de réduire les faux signaux.

Les avantages sont les suivants:

  1. Le SAR peut réagir rapidement aux changements de prix et identifier les points d'inversion de tendance.
  2. Le filtrage EMA confirme en outre la direction de la tendance et évite les faux signaux lorsqu'on utilise le SAR seul.
  3. Le croisement entre l'EMA rapide et lente fournit une précision supplémentaire du signal.
  4. La rentabilité peut être améliorée par l'optimisation des paramètres.

Analyse des risques

Cette stratégie présente certains risques:

  1. SAR et EMA peuvent générer des signaux incorrects pendant les marchés à plage, ce qui affecte la rentabilité.
  2. L'effet de retard peut être réduit en raccourcissant les périodes de l'EMA.
  3. Le stop loss peut être facilement atteint lors d'une forte volatilité, ce qui entraîne des pertes plus élevées.

Directions d'optimisation

Cette stratégie peut être optimisée par les aspects suivants:

  1. Optimisez les paramètres SAR comme pas et maximum pour le rendre plus sensible.
  2. Optimiser les périodes d'EMA lente et rapide pour trouver des combinaisons optimales.
  3. Optimiser le décalage EMA pour réduire les faux signaux.
  4. Ajoutez d'autres indicateurs comme le MACD et le KDJ pour un filtrage et une précision supplémentaires.
  5. Optimiser la stratégie de stop loss pour réduire les pertes par transaction.

Conclusion

Cette stratégie combine les forces de SAR et EMA pour concevoir un système de suivi de tendance flexible. Dans l'ensemble, elle a une bonne capacité de détection de tendance et fonctionne bien dans le suivi des tendances.


/*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()

Plus de