Estrategia de cruce en espiral con confirmación de promedio móvil

El autor:¿ Qué pasa?, fecha: 2024-02-02 14:50:08
Las etiquetas:

img

Resumen general

Esta estrategia combina el indicador del vórtice y las líneas de promedio móvil para identificar la dirección y la fuerza de las tendencias de precios con el fin de generar señales largas y cortas potenciales. Cuando la línea positiva del vórtice (VI +) cruza por encima de la línea negativa del vórtice (VI-), cada cruce se resalta en el gráfico. Si el precio de cierre está por encima de la línea de promedio móvil, se genera una señal larga. Cuando VI- cruza por encima de VI +, si el precio de cierre está por debajo de la línea de promedio móvil, se genera una señal corta.

Estrategia lógica

  1. Indicador de vórtice: Consiste en dos líneas - Vortex Positive (VI+) y Vortex Negative (VI-). Se utiliza para identificar la dirección y la fuerza de las tendencias de precios.

  2. Promedio móvil (MA): utiliza un método de promedio móvil elegido (SMA, EMA, SMMA, WMA o VWMA) para suavizar los datos de precios.

  3. Determinar señales largas y cortas: cuando VI+ cruza por encima de VI-, cada cruce se resalta. Si el cierre está por encima de la línea de suavizado, se genera una señal larga. Cuando VI- cruza por encima de VI+, si el cierre está por debajo de la línea de suavizado, se genera una señal corta.

Ventajas

  1. Combina la identificación de tendencias y el suavizado para capturar tendencias en mercados de tendencias, evitando señales falsas en mercados agitados.

  2. El indicador de vórtice identifica efectivamente la dirección y la fuerza de la tendencia.

  3. Una lógica estratégica simple y clara, fácil de entender e implementar.

  4. Parámetros personalizables, adaptados a diferentes entornos de mercado.

Los riesgos

  1. Puede generar señales falsas y cambios en los mercados de rango o sin tendencia.

  2. Por ejemplo, una media móvil que es demasiado corta tiene una capacidad de suavizado deficiente y una más larga se retrasa en el reconocimiento de los cambios de tendencia.

  3. Incapaz de protegerse contra las fluctuaciones extremas de precios por grandes eventos imprevistos.

Mejoras

  1. Incorporar otros indicadores como el volumen para determinar la fiabilidad de la tendencia.

  2. Optimizar los parámetros para equilibrar el seguimiento de tendencias y el filtrado de ruido de las medias móviles.

  3. Añadir pérdidas de parada a las pérdidas de control.

  4. Utilice el aprendizaje automático para la optimización automática de parámetros.

  5. Incorporar módulos de gestión de riesgos para ajustar el tamaño de las posiciones.

Conclusión

Esta estrategia combina eficazmente el indicador de vórtice y las medias móviles para capturar tendencias. Identifica la dirección de la tendencia mientras tiene cierta capacidad de filtrado de ruido para reducir las señales falsas. La lógica es simple y flexible de usar, funcionando bien en los mercados de tendencias. Se pueden lograr mejoras adicionales en el control de riesgos mediante la incorporación de más filtros, la optimización de parámetros y la adición de pérdidas de parada.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

Más.