Esta estrategia es una estrategia de seguimiento de tendencia que se negocia en base al indicador de canal de variabilidad esmerilado (VCI esmerilado) por vitelot. Combina el juicio de tendencia de los promedios móviles y el juicio de sobrecompra / sobreventa de VCI para capturar la dirección de tendencia principal de los precios. Cuando los precios entran en estado de sobrecompra o sobreventa, las operaciones inversas se toman para obtener ganancias.
La estrategia utiliza el indicador VCI esmaltado de vitelot
La estrategia establece dos condiciones:
El cruce de VCI manchado por encima de la línea de disparo es señal larga, y el cruce por debajo es señal corta.
Sólo negociar dentro de la ventana de tiempo de backtest.
Cuando ambas condiciones se cumplan, se tomará una posición larga o corta.
Las ventajas de esta estrategia son:
Utilizando un indicador de tendencia, puede rastrear las tendencias de manera efectiva.
El proceso de suavizado reduce las señales falsas.
Las pruebas de retroceso dentro de una ventana de tiempo se centran en un período específico.
El conjunto de pérdidas de parada controla el riesgo.
El uso de parámetros de indicadores para la decisión largo/corto hace que las reglas sean simples y claras.
Esta estrategia también presenta algunos riesgos:
El juicio de tendencia puede ser erróneo, lo que conduce a pérdidas.
El ajuste incorrecto de los parámetros de los indicadores puede conducir a una baja rentabilidad.
La configuración de stop loss demasiado pequeña puede dar lugar a que se detenga rápidamente.
Una ventana de tiempo de backtest inadecuada puede dar lugar a resultados de prueba sesgados.
La interrupción demasiado frecuente de larga/corta duración puede provocar una presión de comisión.
La estrategia se puede optimizar en los siguientes aspectos:
Prueba diferentes combinaciones de parámetros para encontrar los parámetros óptimos.
Para mejorar la precisión, utilizar otros indicadores de confirmación.
Optimizar el algoritmo de stop loss para lograr un stop loss dinámico.
Optimizar las condiciones de entrada para evitar el exceso de negociación.
Prueba ventanas de tiempo más largas para verificar la estabilidad.
Incorpore otros factores como el volumen para mejorar la precisión de la decisión.
En resumen, esta es una estrategia de seguimiento de tendencias relativamente simple. Utiliza el indicador Smeared VCI para determinar la dirección de la tendencia y las posiciones abiertas cuando se generan señales de negociación. El riesgo se controla mediante stop loss. La estrategia tiene capacidad de seguimiento de tendencias, pero también tiene algunos riesgos. Se pueden hacer mejoras adicionales a través de la optimización de parámetros, optimización de stop loss y la adición de condiciones de confirmación para que sea un sistema de negociación estable y confiable.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Smeared VCI Backtest", overlay=false, shorttitle="SVCI Backtest", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5) // Smeared Variability Channel Index // a variation of the VCI indicator of the same author. // The orange line over the lime line is bullish; // The lime line over the orange one is bearish. // // vitelot/yanez/Vts // Feb 2019 // src = close ep1 = input(5, minval=1, title="Fast EMA period") ep2 = input(13, minval=2, title="Slow EMA period") sm = input(34, minval=1, title="Smearing period") tp = input(13, minval=1, title="Trigger line period") fixedSL = input(title="SL Activation", defval=300) trailSL = input(title="SL Trigger", defval=1) fixedTP = input(title="TP Activation", defval=150) trailTP = input(title="TP Trigger", defval=1) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2017) ToMonth = input(defval = 6, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 19, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2030, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window startTimeOk() => time >= start and time <= finish ? true : false // create function "within window of time" if statement true atrP = 96 e1 = ema(src,ep1) e2 = ema(src,ep2) vci = (e1-e2)/atr(atrP) svci = sma(vci,sm) t = sma(svci,tp) plot(svci, color=lime, linewidth=3, transp=0, title="Smeared VCI") plot(t, color=orange, linewidth=3, transp=0, title="Trigger line") hline(0, title="Reference line") long = crossover(svci,t) short = crossover(t,svci) // === STRATEGY - LONG POSITION EXECUTION === strategy.entry("Long", strategy.long, when= long and startTimeOk()) strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.exit("Exit", when= short) // === STRATEGY - SHORT POSITION EXECUTION === strategy.entry("Short", strategy.short, when= short and startTimeOk()) strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.exit("Exit", when= long)