La estrategia de ruptura de impulso de reversión es una estrategia de negociación cuantitativa que genera señales comerciales utilizando indicadores de reversión de precios e impulso.
La lógica central de esta estrategia es identificar los puntos de inversión del mercado calculando los precios más altos y más bajos durante una ventana de retroalimentación específica (por ejemplo, 20 días).
Calcular el precio más alto (window_high) y el precio más bajo (window_low) durante los últimos 20 días.
Si el máximo de hoy es superior al máximo de los últimos 20 días (un nuevo máximo de 20 días), introduzca el período de monitoreo de la reversión del máximo y establezca el contador en 5 días.
Si no se produce ningún nuevo máximo, se deducirá el contador por 1 cada día.
La lógica de juicio para el precio más bajo es similar.
Las posiciones largas y cortas se toman dentro de los períodos de seguimiento de la inversión.
La estrategia también establece la hora de inicio de las operaciones para evitar la generación de señales en datos históricos.
La estrategia de ruptura de impulso inverso tiene las siguientes ventajas principales:
Captura oportunidades de reversión, adecuadas para tendencias de reversión. Los mercados a menudo muestran cierto grado de reversión después de una tendencia alcista o bajista sostenida. Esta estrategia tiene como objetivo capturar estos puntos de inflexión.
El seguimiento de los precios más altos y más bajos a través de una ventana puede identificar de manera sensible las tendencias de inversión de precios y el momento.
Los periodos de monitorización de la inversión evitan las señales falsas, que se generan solo alrededor de los puntos clave de inversión, filtrando algo de ruido.
Permite posiciones largas y cortas, alternando entre largas y cortas siguiendo la dirección del mercado.
Relativamente lógica simple, fácil de implementar, se basa principalmente en precios y indicadores de impulso simples, fácil de codificar.
Los principales riesgos de esta estrategia incluyen:
Predicción inexacta de reversión. La estrategia puede incurrir en pérdidas si el mercado se mueve en dirección.
No se consideran las tendencias generales del mercado. Las reversiones individuales de las existencias no representan necesariamente reversiones del mercado.
Los retiros potenciales pueden ser grandes y pueden aumentar sin cambios reales.
El rendimiento puede diferir significativamente de los backtests.
La sensibilidad de los parámetros, el período de la ventana, los parámetros del contador, etc. afectan a la estabilidad.
Los métodos de control de riesgos correspondientes incluyen la optimización de la parada de pérdidas, la incorporación de factores de mercado, el ajuste de las combinaciones de parámetros y la verificación de la estabilidad.
Las principales direcciones de optimización incluyen:
Incorporar indicadores de mercado y evaluar la fortaleza del mercado para evitar entornos desfavorables.
Seleccionar acciones con fundamentos sólidos y sobrevaloración.
Optimización de parámetros. Ajuste el período de la ventana y los parámetros del contador para encontrar combinaciones óptimas de parámetros.
Añadir estrategias de stop loss, por ejemplo, paradas de trailing, paradas de volatilidad para controlar el descenso máximo.
Aumentar la precisión predictiva del aprendizaje automático de las inversiones de precios.
La estrategia de ruptura de impulso de reversión identifica oportunidades de reversión mediante el seguimiento del precio y el impulso. Reacciona sensiblemente e identifica las tendencias de reversión y el momento. Pero tiene riesgos que requieren optimizaciones y control de riesgos adecuados. En general, cuando se entiende y optimiza a fondo, puede formar un componente efectivo de un sistema comercial cuantitativo.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) window = input.int(20, title="New Highs and Lows Window", minval=1) decay = input.int(5, title="Decay", minval=1) startDate = input(timestamp("1 Jan 2023"), title = "Start Date") allowShort = input.bool(false, title = "Allow shorting") var int highDecayCounter = 0 var bool isHighPeriod = false var int lowDecayCounter = 0 var bool isLowPeriod = false inTradeWindow = true window_high = ta.highest(close, window) window_low = ta.lowest(low, window) // Logic for Highs if window_high > ta.highest(close, window)[1] highDecayCounter := decay isHighPeriod := true else if highDecayCounter > 0 highDecayCounter := highDecayCounter - 1 else isHighPeriod := false // Logic for Lows if window_low < ta.lowest(low, window)[1] lowDecayCounter := decay isLowPeriod := true else if lowDecayCounter > 0 lowDecayCounter := lowDecayCounter - 1 else isLowPeriod := false // Strategy Execution if inTradeWindow if isHighPeriod and highDecayCounter == decay strategy.entry("Long", strategy.long) if isHighPeriod and highDecayCounter == 0 strategy.close("Long") if isLowPeriod and lowDecayCounter == decay and allowShort strategy.entry("Short", strategy.short) if isLowPeriod and lowDecayCounter == 0 and allowShort strategy.close("Short") // Plotting plot(window_high, color=color.green) plot(window_low, color=color.red)