Estrategia de negociación en el marco temporal alternativo de SAR

El autor:¿ Qué pasa?, Fecha: 2024-01-16 14:18:20
Las etiquetas:

img

Resumen general

Esta estrategia se basa en las operaciones alternas del indicador SAR a través de diferentes marcos de tiempo. La estrategia calcula el indicador SAR en marcos de tiempo de 15 minutos, diarios, semanales y mensuales, y opera en el marco de tiempo semanal.

Principios

Cálculo del indicador SAR

El indicador SAR parabólico (SAR) representa el SAR parabólico, que juzga la dirección de la tendencia calculando la relación entre el precio actual y los precios históricos.

Esta estrategia calcula los valores SAR en intervalos de tiempo de 15 minutos, diarios, semanales y mensuales, respectivamente.

SAR = Previous SAR + Acceleration Factor * (Highest Price - Previous SAR) # Uptrend 
SAR = Previous SAR + Acceleration Factor * (Lowest Price - Previous SAR) # Downtrend

El factor de aceleración inicial está fijado en 0,02, y aumentará gradualmente hasta un máximo de 0,2 a medida que la tendencia se extienda.

Estrategia de negociación

La estrategia genera señales comerciales en el marco de tiempo semanal. Va largo cuando el SAR semanal cruza por encima del precio más alto, con el valor SAR como el stop loss. Va corto cuando el SAR cruza por debajo del precio más bajo, con el SAR como el stop loss.

Al determinar la tendencia en un marco de tiempo más largo y establecer un nivel de stop loss más preciso, la estrategia tiene como objetivo obtener ganancias de manera más eficiente.

Ventajas

  • El indicador SAR localiza con precisión los puntos de inversión de tendencia para la entrada en el mercado
  • Las operaciones en plazos más largos siguen la tendencia principal
  • El control de pérdidas de parada se realiza de manera efectiva mediante el uso de SAR

Riesgos y soluciones

  • El retraso SAR puede hacer que la tendencia se invierta después de alcanzar el stop loss.
  • La solución es limitar el tamaño máximo del factor.
  • La solución consiste en reducir el tamaño de las posiciones.

Áreas de mejora

  • Optimizar las condiciones de entrada, por ejemplo, combinar con otros indicadores
  • Mejorar los mecanismos de stop loss, por ejemplo, stop loss de seguimiento, zone stop loss
  • Refinar las reglas de dimensionamiento de la posición, por ejemplo, ajuste fijo fraccionario, dinámico
  • Operar en plazos aún más largos, por ejemplo, trimestralmente, anualmente
  • Optimización dinámica de parámetros mediante aprendizaje automático

Conclusión

La estrategia tiene una lógica clara de conducir tendencias en marcos de tiempo más altos utilizando el indicador SAR para localizar reversiones y establecer stop loss. Las señales de entrada y la gestión de riesgos podrían mejorarse aún más. Con optimizaciones en áreas como entradas, paradas y dimensionamiento de posición, puede volverse más estable y rentable.


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

//@version=2
strategy ("SAR alternating timeframe", overlay=true)

//resolution
res1=input("15", title="Resolution")
res2=input("D", title="Resolution")
res3=input("W", title="Resolution")
res4=input("M", title="Resolution")

//output functions
out = sar(0.02,0.02,0.2)

// request.security
SAR1 = request.security(syminfo.tickerid, res1, out)
SAR2 = request.security(syminfo.tickerid, res2, out)
SAR3 = request.security(syminfo.tickerid, res3, out)
SAR4 = request.security(syminfo.tickerid, res4, out)

//Plots
//plot(SAR1 , title="SAR 15", color = red, linewidth = 2)
//plot(SAR2 , title="SAR D", color = green, linewidth = 3)
plot(SAR3 , title="SAR W", color =blue, linewidth = 4)
//plot(SAR4 , title="SAR W", color =purple, linewidth = 5))


/////////////////////////////////////////////////////////////////////
//trade
if (SAR3 >= high)
    strategy.entry("ParLE", strategy.long, stop=SAR3, comment="ParLE")
else
    strategy.cancel("ParLE")

if (SAR3 <= low)
    strategy.entry("ParSE", strategy.short, stop=SAR3, comment="ParSE")
else
    strategy.cancel("ParSE")



Más.