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.
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.
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.
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.
Combina la identificación de tendencias y el suavizado para capturar tendencias en mercados de tendencias, evitando señales falsas en mercados agitados.
El indicador de vórtice identifica efectivamente la dirección y la fuerza de la tendencia.
Una lógica estratégica simple y clara, fácil de entender e implementar.
Parámetros personalizables, adaptados a diferentes entornos de mercado.
Puede generar señales falsas y cambios en los mercados de rango o sin tendencia.
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.
Incapaz de protegerse contra las fluctuaciones extremas de precios por grandes eventos imprevistos.
Incorporar otros indicadores como el volumen para determinar la fiabilidad de la tendencia.
Optimizar los parámetros para equilibrar el seguimiento de tendencias y el filtrado de ruido de las medias móviles.
Añadir pérdidas de parada a las pérdidas de control.
Utilice el aprendizaje automático para la optimización automática de parámetros.
Incorporar módulos de gestión de riesgos para ajustar el tamaño de las posiciones.
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