Estrategia de seguimiento de tendencias del oscilador Vortex


Fecha de creación: 2023-12-07 16:48:45 Última modificación: 2023-12-07 16:48:45
Copiar: 0 Número de Visitas: 676
1
Seguir
1619
Seguidores

Estrategia de seguimiento de tendencias del oscilador Vortex

Descripción general

La estrategia de seguimiento de tendencias del oscilador de vórtice es una estrategia de seguimiento de tendencias basada en indicadores de vórtice. Utiliza promedios móviles de varios períodos diferentes para construir indicadores de vórtice, identificar tendencias potenciales en los precios y combinar promedios móviles de períodos más cortos como juicio auxiliar para realizar operaciones de seguimiento de tendencias de bajo riesgo.

Principio de estrategia

El indicador central de la estrategia es el indicador de la espiral. El indicador de la espiral se compone de promedios móviles a corto, mediano y largo plazo de varios períodos diferentes. En concreto, la estrategia utiliza promedios móviles de cuatro períodos de 6, 27, 72 y 234 días. El promedio móvil a corto plazo refleja la tendencia más reciente de los precios, y el promedio móvil a largo plazo refleja la tendencia a largo plazo de los precios. La lógica central del indicador es que cuando se cruza la media móvil a corto plazo, lo que indica un aumento de la tendencia al alza, se compra; cuando se cruza la media móvil a corto plazo, lo que indica una disminución de la tendencia alza, se vende.

La ventaja notable del indicador de espiral es que es preciso para determinar la tendencia y puede filtrar eficazmente el ruido del mercado. Sin embargo, su reacción no es lo suficientemente sensible como para capturar los puntos de inflexión a tiempo. Por lo tanto, la estrategia incluye un promedio móvil de 6 días más sensible para construir indicadores de juicio auxiliares.

Análisis de las ventajas

La mayor ventaja de esta estrategia es la precisión de la determinación y la sensibilidad de la operación. La combinación de los indicadores vorticosos y los indicadores auxiliares permite la determinación de tendencias y la identificación de puntos de venta específicos, evitando la interferencia entre las funciones de las partes. El mecanismo de confirmación múltiple puede filtrar eficazmente el ruido del mercado y evitar operaciones erróneas.

En comparación con la estrategia de un solo indicador, la estrategia utiliza la combinación de varios indicadores y tiene una mayor capacidad de identificación y respuesta a los cambios en el mercado. En caso de que la tendencia no cambie, la estrategia puede obtener ganancias estables; Cuando la tendencia cambia, la estrategia también puede responder rápidamente y reducir las pérdidas.

Análisis de riesgos

El principal riesgo de esta estrategia reside en la configuración incorrecta de los parámetros del indicador y los efectos de los eventos inesperados. La configuración de los parámetros de la media móvil requiere un equilibrio entre la sensibilidad y la capacidad de resistencia a la interferencia por ruido, lo que puede conducir a un comportamiento anormal de la estrategia. Además, los eventos inesperados importantes pueden causar una gran fluctuación de los precios que invalidan el indicador y, por lo tanto, generan transacciones erróneas.

Para reducir estos riesgos, se recomienda optimizar la combinación de parámetros y hacer retrospectivas para que el rendimiento del indicador sea más estable. También es necesario prestar atención a los efectos del mercado causados por eventos importantes, suspender la estrategia cuando sea necesario y evitar el error de operación en períodos de fluctuación anormal.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros de las medias móviles para mejorar la resistencia a la interferencia y la sensibilidad de los indicadores. Se puede probar una combinación de diferentes parámetros de longitud para elegir indicadores suaves y sensibles.

  2. Aumentar el mecanismo de detención de pérdidas. Establecer un punto de detención de pérdidas para evitar más pérdidas cuando el precio rompe el soporte clave en una dirección negativa.

  3. En combinación con otros indicadores de juicio, aumenta la estabilidad de la estrategia. Por ejemplo, la adición de un indicador de volumen de transacciones, que sólo produce una señal de negociación en caso de aumento del volumen de transacciones.

  4. Utiliza una combinación diferente de parámetros según las diferentes fases del mercado. Por ejemplo, utiliza un parámetro más positivo para el mercado alcista y una configuración más estable para el mercado bajista.

Resumir

La estrategia de seguimiento de tendencias del oscillador de vorágines determina la dirección y la intensidad de la tendencia de los precios mediante el uso de indicadores de vorágines y se apoya en un promedio móvil a corto plazo más sensible para determinar el momento de compra y venta específico. La estrategia combina con éxito los dos niveles de juicio de tendencias y ejecución de operaciones, garantizando la estabilidad de la operación y aumentando la flexibilidad de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//swap strategy line for study line to enable backtesting
strategy(title="Vortex Ocillator" )
//study(title = "Vortex Oscillator", precision = 6)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2048, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

//vortex histogram
short_input = input(6, minval = 1)
long_input = input(27, minval = 1)
longer_input = input(72, minval = 1)
longest_input = input(234, minval = 1)

short = sma(close, short_input)
long = sma(close, long_input)
longer = sma(close, longer_input)
longest = sma(close, longest_input)

hist = short - long
longhist = short - longer
longesthist = short - longest

hist_fractal = input(3, minval = 0)
longhist_fractal = input(2, minval = 0)
longesthist_fractal = input(4, minval = 0)

vortexhist = avg((hist / hist_fractal), (longhist / longhist_fractal), (longesthist / longesthist_fractal))

crossover_calc = vortexhist > 0 and vortexhist[1] < 0
crossunder_calc = vortexhist < 0 and vortexhist[1] > 0

crossover2 = crossover(vortexhist, 0)
crossunder2 = crossunder(vortexhist, 0)

hist_color = hist > 0? fuchsia : purple
longhist_color = longhist > 0? olive : orange
longesthist_color = longesthist > 0? teal : blue
vortexhist_color = vortexhist >= 0? green : red

plot(longesthist, "Longest Ocillator", style = histogram, color = longesthist_color, transp = 5)
plot(longhist, "Longer Ocillator", style = histogram, color = longhist_color, transp = 30)
plot(hist, "Short Ocillator", style = histogram, color = hist_color, transp = 30)
plot(vortexhist, "Vortex Ocillator", style = columns, color = vortexhist_color, transp = 40)
plotshape(crossover_calc,title = "Crossover",location = location.bottom, style = shape.triangleup, size = size.small, color = green)
plotshape(crossunder_calc,title = "Crossunder",location = location.bottom, style = shape.triangledown, size = size.small, color = red)

//micro
micro_ema_length = input(6,"Micro EMA Length")
micro = ema(vortexhist, micro_ema_length)
plot(micro, title = "micro", linewidth = 1, color = white)
microup = crossover(vortexhist, micro)
microdown = crossunder(vortexhist, micro)

//new micro signals
xmicroup = microup and vortexhist >=0 or crossover_calc
xmicrodown = microdown and vortexhist >=0 or crossunder_calc
plotshape(xmicroup, title = "Micro up", style = shape.circle, color = olive, location = location.bottom, size = size.tiny)
plotshape(xmicrodown, title = "Micro down", style = shape.circle, color = fuchsia, location = location.bottom, size = size.tiny)

//optional strategy options for backtesting, comment out the alertcondition rows and swap the top study row for the strategy row to compile as strategy
if testPeriod()
    strategy.entry("buy", true, 1, when = xmicroup, limit = low)
if testPeriod()
    strategy.close("buy", when = xmicrodown)

   

//if (xmicroup)
    //strategy.entry("My Long Entry Id", strategy.long)
//if (xmicroup)
    //strategy.exit("My Short Exit Id", "My Short Entry Id")
//if (xmicrodown)
    //strategy.exit("My Long Exit Id", "My Long Entry Id")