Estrategia para el seguimiento de la tendencia SAR parabólica para la inversión de pérdidas

El autor:¿ Qué pasa?, Fecha: 2024-02-01 14:54:09
Las etiquetas:

img

Resumen general

La estrategia de inversión de pérdidas para el seguimiento de tendencias parabólicas es una estrategia que utiliza el indicador parabólico para identificar tendencias y entrar en posiciones contra tendencia cuando la tendencia se invierte.

Estrategia lógica

La estrategia utiliza el indicador Parabolic SAR para juzgar la tendencia actual del mercado. Parabolic SAR significa Parabolic Stop and Reverse. Sus líneas de indicador forman una serie de parábolas en el gráfico de precios, y estos puntos de parábola representan puntos de inversión potenciales.

Cuando los puntos SAR están bajando y por debajo del precio, representa una tendencia alcista; cuando los puntos SAR están subiendo y por encima del precio, representa una tendencia bajista.

Específicamente, cuando los puntos SAR muestran una tendencia alcista y están por encima de los precios, la estrategia será corta; cuando los puntos SAR muestran una tendencia bajista y están por debajo de los precios, la estrategia será larga.

Además, la estrategia también establece mecanismos de stop loss y take profit. Cuando se va largo, puede establecer un precio de stop loss para limitar las pérdidas; al mismo tiempo, puede establecer un precio de take profit para cerrar posiciones después de alcanzar un cierto beneficio objetivo.

Análisis de ventajas

Las principales ventajas de combinar el indicador de tendencia y los mecanismos de stop loss/take profit son:

  1. Captura oportuna de las oportunidades de tendencia inversa para el comercio contra tendencia.
  2. Controlar activamente los riesgos y las ganancias estableciendo stop loss y take profit.
  3. El SAR parabólico es un indicador inverso ampliamente utilizado y eficaz.
  4. Reglas estratégicas simples y claras, fáciles de entender y aplicar.

Análisis de riesgos

También hay algunos riesgos a tener en cuenta para la estrategia:

  1. El indicador SAR parabólico no es perfecto, a veces genera señales equivocadas.
  2. Los precios de stop loss y take profit deben fijarse de manera razonable, de lo contrario pueden detenerse o obtener beneficios prematuramente.
  3. Las comisiones comerciales también afectan a las ganancias totales.
  4. La nueva tendencia después de la reversión puede ser de corta duración.

Estos riesgos pueden resolverse mediante la optimización de parámetros, el uso de otros indicadores de filtro, etc.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimice los parámetros SAR para encontrar la mejor combinación.
  2. Pruebe diferentes estrategias de stop loss y tome estrategias de ganancias como el stop loss de seguimiento.
  3. Añadir indicadores o condiciones para filtrar las señales de negociación inversa.
  4. Añadir control de posición basado en las condiciones del mercado.
  5. Ajustar los parámetros de los diferentes instrumentos de negociación.

Conclusión

En general, esta es una estrategia de inversión de pérdidas de parada de seguimiento de tendencias bastante clásica. Identifica las reversiones de tendencias y también controla los riesgos con medios de stop loss y take profit. Después de las optimizaciones puede convertirse en una estrategia valiosa para el comercio en vivo.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Parabolic SAR Strategy", overlay=true)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
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 := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)
	if barstate.isconfirmed
		if uptrend
			strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
			strategy.cancel("ParLE")
		else
			strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
			strategy.cancel("ParSE")
plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua)
//Stop Loss Inputs
use_short_stop_loss = input(false, title="Short Stop Loss", group="Stop Loss and Take Profit", inline="Short_SL")
short_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Short_SL") * 0.01
use_long_stop_loss = input(false, title="Long Stop Loss", group="Stop Loss and Take Profit", inline="Long_SL")
long_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Long_SL") * 0.01

//Take Profit Inputs     
use_short_take_profit = input(false, title="Short Take Profit", group="Stop Loss and Take Profit", inline="Short_TP")
short_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Short_TP") * .01
use_long_take_profit = input(false, title="Long Take Profit", group="Stop Loss and Take Profit", inline="Long_TP")
long_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Long_TP") * .01


longStopPrice  = strategy.position_avg_price * (1 - long_stop_loss)
shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss)
longLimitPrice = strategy.position_avg_price * (1 + long_take_profit)
shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit)


if (strategy.position_size > 0.0)
    if (use_long_stop_loss and not use_long_take_profit)
        strategy.exit("Long", stop = longStopPrice)
    if (use_long_take_profit and not use_long_stop_loss)
        strategy.exit("Long", limit = longLimitPrice)
    if (use_long_take_profit and use_long_stop_loss)
        strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice)
if (strategy.position_size < 0.0)
    if (use_short_stop_loss and not use_short_take_profit)
        strategy.exit("Short", stop = shortStopPrice)
    if (use_short_take_profit and not use_short_stop_loss)
        strategy.exit("Short", limit = shortLimitPrice)
    if (use_short_take_profit and use_short_stop_loss)
        strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice)

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

Más.