Estrategia de negociación cuantitativa basada en un indicador de vórtice mejorado

El autor:¿ Qué pasa?, fecha: 2023-11-14 14:40:54
Las etiquetas:

img

Resumen general

Esta estrategia es una versión mejorada de la estrategia del indicador de vórtice. Basado en el indicador de vórtice original, incorpora varias características nuevas, incluyendo el desencadenamiento de operaciones basadas en umbral, suavizar las líneas de vórtice con EMA, agregar stop loss y take profit, implementar estrategias de largo, corto o largo / corto, etc. Es adecuado para los inversores que desean aplicar el indicador de vórtice mejorado en la negociación cuantitativa.

Principios

El indicador de vórtice es un indicador de fluctuación de precios que se utiliza para calcular la suma absoluta de las fluctuaciones de precios. Cuando la línea positiva cruza por encima de la línea negativa, envía una señal de compra.

Esta estrategia hace las siguientes mejoras al indicador de vórtice tradicional:

  1. En lugar de depender únicamente de los cruces de líneas, introduce el concepto de umbral. Las operaciones se activan solo cuando el diferencial entre las líneas positivas y negativas excede un umbral preestablecido. Esto ayuda a filtrar cruces pequeños e insignificantes.

  2. Las líneas del vórtice están suavizadas con EMA para reducir los temblores de la curva.

  3. Se agregan funciones de stop loss y take profit. Las relaciones pérdida/ganancia se pueden predefinir para un mejor control del riesgo.

  4. Los operadores pueden elegir entre estrategias de largo plazo, corto plazo o largo/corto plazo para satisfacer diferentes necesidades.

Con estas mejoras, la estrategia puede detectar tendencias de manera más fiable y tiene un buen rendimiento en las pruebas de retroceso.

Análisis de ventajas

  1. El mejorado indicador de vórtice filtra las señales no válidas y evita las falsas interrupciones.

  2. El uso de umbral para señales en lugar de cruces simples puede detectar con mayor fiabilidad los puntos de inversión de tendencia.

  3. Las características de stop loss/take profit permiten fijar previamente los ratios de ganancia/pérdida para controlar los riesgos de cada operación, alineándose con los principios de negociación racional.

  4. La opción de optar por el tipo de negociación sólo largo, sólo corto o largo/corto ofrece flexibilidad para adaptarse a las diferentes etapas del mercado y satisfacer las necesidades de los diferentes operadores.

  5. La estrategia cuenta con parámetros bien diseñados y buenos resultados de pruebas de retroceso, lo que le confiere un valor práctico.

Análisis de riesgos

  1. La estrategia funciona principalmente para los mercados de tendencia. El rendimiento puede sufrir durante los mercados de rango.

  2. Las líneas de vórtice son inherentemente sensibles a las fluctuaciones de precios.

  3. Si el umbral se establece demasiado alto, puede fallar las operaciones. Si se establece demasiado bajo, puede generar señales falsas. Se necesita una amplia prueba para encontrar los niveles óptimos.

  4. Los operadores deben estar alertas ante este riesgo.

Direcciones de optimización

  1. Considere combinarlo con otros indicadores para la confirmación de la señal y juicios más completos.

  2. Prueba la sensibilidad de los parámetros en diferentes existencias y optimiza la configuración.

  3. Investigue técnicas de stop loss adaptativas para ajustar las paradas a lo largo de la tendencia principal.

  4. Introducir el aprendizaje automático, etc. para optimizar automáticamente los parámetros.

  5. Explorar métodos de indexación basados en esta estrategia para ampliar la capacidad.

Conclusión

Esta estrategia hace múltiples mejoras sobre el indicador de vórtice tradicional y forma un sistema de negociación cuantitativo relativamente maduro y confiable. Combinando el filtrado de tendencias y el control de riesgos, evita los riesgos de sobreajuste de las operaciones dispersas y utiliza las capacidades de captura de tendencias del propio indicador. Con una mayor optimización de parámetros y técnicas de combinación, la estrategia se puede hacer más estable y sensible. En general, tiene un valor práctico como una versión mejorada de la estrategia de indicador de vórtice.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

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


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


Más.