En la carga de los recursos... Cargando...

Tendencia tras la estrategia de negociación de indicadores energéticos

El autor:¿ Qué pasa?, Fecha: 2023-11-15 17:36:46
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

La estrategia utiliza el indicador VCI esmaltado de vitelot para determinar la dirección de la tendencia. El indicador VCI es un VCI suavizado (Índice de canal de variabilidad). Consiste en tres parámetros: EMA rápida, EMA lenta y período de suavizado. Cuando la EMA rápida está por encima de la EMA lenta, es alcista, de lo contrario es bajista. El proceso de suavizado filtra algo de ruido.

La estrategia establece dos condiciones:

  1. 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.

  2. Sólo negociar dentro de la ventana de tiempo de backtest.

Cuando ambas condiciones se cumplan, se tomará una posición larga o corta.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. Utilizando un indicador de tendencia, puede rastrear las tendencias de manera efectiva.

  2. El proceso de suavizado reduce las señales falsas.

  3. Las pruebas de retroceso dentro de una ventana de tiempo se centran en un período específico.

  4. El conjunto de pérdidas de parada controla el riesgo.

  5. El uso de parámetros de indicadores para la decisión largo/corto hace que las reglas sean simples y claras.

Análisis de riesgos

Esta estrategia también presenta algunos riesgos:

  1. El juicio de tendencia puede ser erróneo, lo que conduce a pérdidas.

  2. El ajuste incorrecto de los parámetros de los indicadores puede conducir a una baja rentabilidad.

  3. La configuración de stop loss demasiado pequeña puede dar lugar a que se detenga rápidamente.

  4. Una ventana de tiempo de backtest inadecuada puede dar lugar a resultados de prueba sesgados.

  5. La interrupción demasiado frecuente de larga/corta duración puede provocar una presión de comisión.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba diferentes combinaciones de parámetros para encontrar los parámetros óptimos.

  2. Para mejorar la precisión, utilizar otros indicadores de confirmación.

  3. Optimizar el algoritmo de stop loss para lograr un stop loss dinámico.

  4. Optimizar las condiciones de entrada para evitar el exceso de negociación.

  5. Prueba ventanas de tiempo más largas para verificar la estabilidad.

  6. Incorpore otros factores como el volumen para mejorar la precisión de la decisión.

Resumen de las actividades

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)

Más.