
Esta estrategia es una versión mejorada de la estrategia de indicadores de turnos, que se basa en los indicadores de turnos originales, con la adición de varias funciones nuevas, que incluyen la activación de señales de compra y venta basadas en el umbral, el uso de líneas de turnos suavizadas con EMA, la adición de paradas de pérdida, la realización de operaciones solo de más, solo de menos o en ambos sentidos. La estrategia es adecuada para los inversores que desean utilizar el indicador de turnos mejorado para realizar operaciones cuantitativas.
El indicador central de esta estrategia es el indicador de cambio de la versión mejorada. El indicador de cambio tradicional forma una línea de cambio positiva y negativa calculando la suma de los valores absolutos de la fluctuación de los precios. Cuando la línea de cambio positiva atraviesa la línea de cambio negativa, es una señal de compra; cuando la línea de cambio negativa atraviesa la línea de cambio positiva, es una señal de venta.
Esta estrategia es una mejora a los indicadores tradicionales de la turbina:
En lugar de juzgar las compras y las ventas solo por la intersección de las líneas de engranajes, se introduce el concepto de valoración. La compra y la venta se desencadenan solo cuando la diferencia entre las líneas de engranajes positivas y negativas supera la valoración de valoración establecida. Esto puede filtrar algunas señales de cruce de menor magnitud no válidas.
La línea de engranajes se suaviza con un tratamiento EMA para reducir la oscilación de la curva.
Se ha añadido la configuración de Stop Loss Stop, que permite predefinir el porcentaje de pérdidas y obtener un control más preciso del riesgo.
Se puede optar por hacer solo más, solo menos o en ambos sentidos, para satisfacer diferentes necesidades.
Basado en estas mejoras, la estrategia puede capturar tendencias de manera más fiable y desempeñarse bien en la retroalimentación.
La mejora de los indicadores de engranaje elimina la señal no válida, lo que evita la falsa ruptura. El tratamiento suavizado de EMA también ayuda a eliminar el ruido.
El uso de los umbrales para determinar las señales de compra y venta, en lugar de una simple cruz, permite determinar con mayor fiabilidad el punto de inflexión de la tendencia.
Se añade una función de stop loss para que se pueda predefinir el ratio de ganancias y pérdidas para controlar el riesgo de una sola transacción, de acuerdo con el principio de negociación racional.
Se puede optar por hacer solo más, solo menos o en ambos sentidos, con flexibilidad para adaptarse a las diferentes etapas del mercado y satisfacer las necesidades de los diferentes operadores.
Los parámetros de la estrategia están diseñados de manera razonable, tienen un buen rendimiento de retroalimentación y un valor de uso real.
La estrategia se aplica principalmente a situaciones de tendencia que pueden afectar el rendimiento en el mercado de liquidación.
Las líneas de engranajes son sensibles a las fluctuaciones de las acciones, por lo que una configuración incorrecta de los parámetros puede conducir a un comercio demasiado frecuente.
Si se establece el umbral demasiado alto, se perderá el punto de compra o venta, y si se establece demasiado bajo, aumentará la señal falsa, y se necesitará una prueba cuidadosa para encontrar el parámetro óptimo.
En el caso de un mercado anormal, el stop loss puede ser superado, por lo que hay que estar atento a este riesgo.
Se pueden considerar combinaciones con otros indicadores para introducir más factores de evaluación en la determinación de la señal.
Se puede probar la sensibilidad de diferentes acciones a los parámetros y optimizar la configuración de los parámetros.
Se pueden estudiar técnicas de stop loss adaptativas para ajustar el stop loss con el precio en una gran tendencia.
Se pueden introducir tecnologías como el aprendizaje automático, para entrenar modelos que optimizen automáticamente los parámetros.
Se pueden explorar métodos de indexación basados en esta estrategia para ampliar la capacidad de la misma.
Esta estrategia se basa en los indicadores de turnos tradicionales, con varias mejoras, para formar un programa de comercio cuantitativo más fiable y maduro. Combina los beneficios del juicio de tendencias y el control de riesgos, tanto para evitar el riesgo de sobreajuste de las operaciones dispersas como para aprovechar la capacidad de captura de tendencias de los propios indicadores.
/*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)