La estrategia de ruptura de volatilidad adaptativa es una estrategia de seguimiento de tendencias que identifica señales de ruptura cuando los precios suben fuertemente por encima de un cierto nivel, establece posiciones largas y sigue la tendencia alcista para obtener ganancias al día siguiente.
La estrategia fue propuesta por Larry R. Williams, un famoso comerciante de futuros y acciones. Trata de capturar los puntos de ruptura de precios, que a menudo significan giros en el mercado. Al identificar oportunamente estas señales y establecer posiciones, se pueden obtener ganancias siguiendo nuevas direcciones de tendencia.
La métrica central de esta estrategia es el
Certain level = Close + k * (High - Low)
Donde k es un coeficiente empírico, valorado en 0,6. esta fórmula incorpora la volatilidad de los precios más altos y más bajos, haciendo que los puntos de ruptura sean más flexibles para adaptarse a las fluctuaciones del mercado.
Cuando el precio más alto del día rompe el
El stop loss se establece en la mitad del precio más bajo y el precio de entrada del día anterior, evitando que la pérdida se expanda.
Las ventajas de esta estrategia incluyen:
Captura de la volatilidad, seguimiento de tendencias: La estrategia incorpora los precios más altos y más bajos para calcular puntos de ruptura flexibles que capturan los ritmos de fluctuación de precios.
Entrada oportuna, seguimiento de tendencias: El cálculo diario de las señales de ruptura permite la identificación oportuna de nuevas tendencias para dar seguimiento a las etapas de tendencia alcista del precio.
Control adecuado del riesgo: la configuración razonable de la parada de pérdidas controla eficazmente la pérdida única.
Los riesgos de esta estrategia incluyen:
Riesgo de ruptura fallida: las rupturas de precios no necesariamente mantienen una tendencia alcista y pueden ser rupturas falsas a corto plazo, causando pérdidas.
Riesgo de mercado extremo: en eventos de mercado extremos como caídas de mercado, los precios pueden dispararse hacia arriba / abajo causando detener pérdidas y pérdidas enormes.
Riesgo de negociación excesivo: la apertura y el cierre diarios de posiciones aumentan la frecuencia de negociación y las comisiones.
La estrategia se puede optimizar a partir de los siguientes aspectos:
Añadir un multiplicador: añadir un multiplicador a la fórmula de ruptura, reduciéndolo adecuadamente cuando la volatilidad del mercado aumenta y aumentándolo cuando el mercado se estabiliza, haciendo que la estrategia sea más elástica.
Prórroga del período de retención: prórroga del período de retención a 2 o 3 días para filtrar las falsas rupturas a corto plazo.
Optimización del stop loss: Establecer el stop loss en niveles de soporte más profundos como la banda inferior de Bollinger o el cierre del día anterior.
La estrategia de ruptura de volatilidad adaptativa rastrea las tendencias mediante el seguimiento dinámico de la volatilidad y los ritmos de los precios. En comparación con las estrategias de ruptura tradicionales, es más flexible y capaz de capturar los movimientos de precios.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 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/ // © Dicargo_Beam //@version=5 strategy("Volatility Breakout Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, default_qty_value=100,process_orders_on_close=false) k = input.float(0.6) [o,h,l,c] = request.security(syminfo.tickerid,"D",[open,high,low,close]) lp = math.log(c[1])+(math.log(h[1])-math.log(l[1]))*k _lp = math.pow(2.718,lp) longcond = _lp < high exit = hour==0 or math.log(close) < (math.log(l[1])+lp)/2 plot(_lp,"Entry",color=color.yellow) //plot(l,"Yesterday's Low") plot((_lp+l[1])/2,"StopLoss",color=color.red) strategy.entry("Long", strategy.long,comment = "Long", when = longcond and strategy.opentrades == 0) strategy.close("Long", comment="Exit", when = exit) var bg = 0 bg := if hour == 0 bg + 1 else bg[1] bgcolor(bg/2== math.floor(bg/2) ? color.new(color.blue,95):na)