Esta es una estrategia de negociación cuantitativa larga / corta basada en la teoría del breakout. Calcula el precio de cierre más alto en los últimos 100 días de negociación y determina si ocurre un breakout basado en si el último precio de cierre excede ese nivel. Si se detecta un breakout, se activa una señal larga. Después de ingresar a largo, la posición se cerrará con un stop loss después de 25 barras.
La lógica central de esta estrategia aprovecha la teoría del
Específicamente, esta estrategia utiliza la función integrada de Pine Scriptta.highest()
Para calcular el cierre más alto en los últimos 100 bares. Luego compara si el precio de cierre del barro actual es superior a ese nivel. Si el precio de cierre rompe y excede el precio de cierre más alto de 100 días, se activa una señal de entrada larga.
Una vez que entra en una posición larga, la estrategia establece una condición de stop loss para cerrar la posición.ta.barssince()
Para contar el número de barras transcurridas desde que entró en largo, obligará a cerrar la posición después de 25 barras.
La lógica de entrada se puede resumir como:
La mayor ventaja de esta estrategia es capturar los puntos de inversión de precios con una tasa de éxito relativamente alta de operaciones que siguen la tendencia.
Las ventajas concretas son:
1. Seguimiento de tendencias, mayor tasa de éxito
La teoría de la ruptura cree que después de que el precio excede un nivel clave, puede comenzar una nueva tendencia.
2. Riesgo controlado, con stop loss
La estrategia establece una salida de stop loss forzada después de 25 barras a la pérdida máxima de una sola operación, evitando una pérdida enorme.
Apto para la tenencia a medio y largo plazo
El período de retención predeterminado es de 25 barras, aproximadamente 1 mes. Esta frecuencia es adecuada para estrategias de mediano a largo plazo, no demasiado corta para los whipssaws y no demasiado larga para aumentar el riesgo.
4. Pocos parámetros, fácil de optimizar
En la actualidad, la mayoría de los mercados de divisas se encuentran en el mercado de divisas, pero la mayor parte de los mercados de divisas se encuentran en el mercado de divisas.
5. Transferible entre diferentes productos
Esta estrategia no responde a los indicadores peculiares de ciertos productos. Su lógica se aplica a las acciones, divisas, materias primas, criptomonedas, etc. Por lo tanto, es flexible para cambiar entre productos.
Si bien esta estrategia tiene algunas ventajas, también hay algunos riesgos al implementarla en el comercio real, principalmente:
El riesgo de mantener posiciones perdedoras
La estrategia no tiene un stop loss para seguir posiciones rentables. Si la tendencia del precio no continúa como se esperaba, o la ruptura resulta ser una falsa ruptura, entonces la salida forzada en el punto de stop loss preestablecido puede conducir a una gran pérdida. Este es el mayor riesgo.
2. Puede ser necesario ajustar los parámetros
Los parámetros predeterminados pueden no ser óptimos. Necesitan ser optimizados durante la negociación en vivo para encontrar el mejor ajuste para regímenes específicos de productos y mercados. Esto agrega trabajo adicional.
3. Correlación del rendimiento con los mercados
La estrategia se basa demasiado en tendencias de precios persistentes. No funciona bien durante los regímenes de rango limitado. Si se encuentran mercados de frota, a menudo se producirá una salida forzada que conduce a ganancias / pérdidas inestables.
Para que esta estrategia sea más sólida y rentable para el despliegue real, se pueden realizar algunas mejoras en los siguientes aspectos:
1. añadir el mecanismo de pérdida de parada de seguimiento
Agregue una lógica de stop loss para seguir posiciones rentables, actualizando dinámicamente el punto de stop loss basado en ganancias flotantes.
2. Parámetros de adaptación basados en los mercados
Hacer que los parámetros como el período de ruptura y el período de retención sean adaptables basados en la fuerza del mercado, cuantificados utilizando métricas como ATR. Esto puede ajustar dinámicamente los parámetros.
**3. Combinar los filtros de tendencia **
Mejor filtrado de tendencias poco claras al aplicar la estrategia, mediante el análisis de tendencias de antemano, ya sea discrecional o cuantitativamente.
4. Prueba en diferentes productos y intervalos
La prueba de los parámetros y reglas optimizados en diferentes productos (por ejemplo, índices, materias primas, divisas, criptomonedas) e intervalos (por ejemplo, barras diarias de 60 millones) hará que esta estrategia sea más robusta y ampliamente aplicable.
Esta estrategia de reversión de ruptura con stop loss es fácil de implementar con reglas claras sobre identificación de tendencias y gestión de posiciones. Analizamos su fortaleza y riesgos, proporcionamos sugerencias para mejorar su rentabilidad y aplicabilidad.
/*backtest start: 2023-01-29 00:00:00 end: 2024-02-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © All_Verklempt //@version=5 strategy("Breakout Strategy", overlay=true) // Input variable for breakout period breakoutPeriod = input.int(100, title="Breakout Period", minval=1) // Calculate the highest close of the past breakout period highestClose = ta.highest(close, breakoutPeriod) // Input variables for start and end dates startYear = input.int(2022, title="Start Year", minval=1900) startMonth = input.int(1, title="Start Month", minval=1, maxval=12) startDay = input.int(1, title="Start Day", minval=1, maxval=31) endYear = input.int(2023, title="End Year", minval=1900) endMonth = input.int(12, title="End Month", minval=1, maxval=12) endDay = input.int(31, title="End Day", minval=1, maxval=31) // Convert start and end dates to timestamp startDate = timestamp(startYear, startMonth, startDay, 00, 00) endDate = timestamp(endYear, endMonth, endDay, 23, 59) // Entry condition: Breakout and higher close within the specified date range enterLong = close > highestClose[1] and close > close[1] // Exit condition: Close the long position after twenty-five bars exitLong = ta.barssince(enterLong) >= 25 // Strategy logic if (enterLong) strategy.entry("Long", strategy.long) if (exitLong) strategy.close("Long")