Estrategia de seguimiento de tendencias SAR parabólica

El autor:¿ Qué pasa?, Fecha: 2024-01-18 12:21:17
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el indicador Parabolic SAR (Stop and Reverse) combinado con el filtrado EMA para mejorar la precisión de la señal.

Estrategia lógica

Una señal larga se activa cuando el SAR está por debajo del precio y el precio está por encima de la EMA lenta más el desplazamiento. Una señal corta se activa cuando el SAR está por encima del precio y el precio está por debajo de la EMA lenta menos el desplazamiento. El cruce entre la EMA rápida y la EMA lenta proporciona un filtrado adicional. Esto evita señales falsas cuando se usa solo el SAR.

Específicamente, las condiciones de entrada largas son:

  1. SAR está por debajo del cierre anterior y por encima del cierre actual;
  2. El cierre actual está por encima de la EMA lenta más el desplazamiento o se cruza con la EMA rápida por debajo de la EMA lenta;
  3. El cierre actual está por encima del valor SAR y la EMA lenta más el desplazamiento.

Las condiciones de entrada a corto plazo son:

  1. SAR está por encima del cierre anterior y por debajo del cierre actual;
  2. El cierre actual está por debajo de la EMA lenta menos el desplazamiento o la EMA rápida se cruza por encima de la EMA lenta;
  3. El cierre actual está por debajo del valor SAR y la EMA lenta menos el desplazamiento.

Análisis de ventajas

Combinando el filtrado SAR y EMA, esta estrategia puede identificar bien la dirección de la tendencia y reducir las señales falsas.

Las ventajas son:

  1. El SAR puede responder rápidamente a los cambios de precios e identificar los puntos de inversión de tendencia.
  2. El filtrado EMA confirma además la dirección de la tendencia y evita señales falsas cuando se utiliza solo SAR.
  3. El cruce entre la EMA rápida y lenta proporciona una precisión adicional de la señal.
  4. La rentabilidad puede mejorarse mediante la optimización de parámetros.

Análisis de riesgos

Esta estrategia tiene algunos riesgos:

  1. SAR y EMA pueden generar señales incorrectas durante los mercados de rango, lo que afecta a la rentabilidad.
  2. El EMA tiene un efecto de retraso y puede perder los mejores puntos de entrada cuando la tendencia se invierte.
  3. El intervalo de pérdida de parada puede ser golpeado fácilmente durante la alta volatilidad, causando mayores pérdidas.

Direcciones de optimización

Esta estrategia se puede optimizar a partir de los siguientes aspectos:

  1. Optimice los parámetros SAR como paso y máximo para hacerlo más sensible.
  2. Optimizar los períodos de EMA lento y rápido para encontrar combinaciones óptimas.
  3. Optimice el desplazamiento de la EMA para reducir las señales falsas.
  4. Añadir otros indicadores como MACD y KDJ para filtrar y precisión adicionales.
  5. Optimizar la estrategia de stop loss para reducir las pérdidas por operación.

Conclusión

Esta estrategia combina las fortalezas de SAR y EMA para diseñar un sistema flexible de seguimiento de tendencias. En general, tiene una buena capacidad de detección de tendencias y funciona bien en el seguimiento de tendencias.


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

Más.