Este artículo analizará en detalle una estrategia de trading de reversión basada en puntos de pivote. La estrategia calcula los niveles potenciales de soporte y resistencia durante un período, e identifica inversiones de tendencia cuando el precio rompe estos niveles de pivote, permitiendo operaciones de reversión.
La estrategia se basa principalmente en dos indicadores: Pivot High y Pivot Low.pivothigh()
ypivotlow()
Al calcular los puntos de pivote, los períodos a la izquierda y a la derecha deben ser establecidos; esta estrategia utiliza 4 períodos a la izquierda y 2 períodos a la derecha.
Cuando el precio más alto del último período es más bajo que el máximo de pivote del período anterior, indica una oportunidad de reversión. Si las posiciones anteriores eran cortas, las posiciones largas ahora deben considerarse para capitalizar la reversión. Del mismo modo, cuando el precio más bajo del último período es más alto que el mínimo de pivote anterior, las posiciones largas existentes deben considerar invertirse a cortas.
Específicamente, la lógica principal es:
La mayor ventaja de esta estrategia es la identificación de posibles puntos de inversión de tendencia, que es crucial para los operadores de inversión.
Además, la estrategia incluye condiciones tanto para entradas largas como cortas, que cubren diferentes situaciones de mercado para evitar oportunidades perdidas.
En resumen, esta es una estrategia de reversión muy práctica.
A pesar de los esfuerzos para reducir las señales falsas, cualquier estrategia basada en la ruptura inevitablemente se enfrenta a problemas como señales prematuras o rezagadas. Esto podría resultar en la planificación de una entrada larga pero el mercado ya se ha invertido, o la planificación de una corta pero una corrida alcista estalla repentinamente.
Además, los puntos de pivote tampoco pueden garantizar niveles de soporte/resistencia perfectos. La mala suerte podría resultar en un stop loss justo antes del nivel de soporte real.
Optimización del período. Los períodos de izquierda/derecha actuales se establecen en 4 y 2. Estos pueden servir como valores iniciales y ser optimizados aún más para cada mercado.
Añadir filtros con otros indicadores. Por ejemplo, combinar con el volumen para considerar que las rupturas solo son válidas cuando van acompañadas de un volumen creciente. Esto ayuda a evitar rupturas falsas.
Dinámico stop loss. Actualmente las paradas se establecen con un amortiguador de un mínimo de tick por encima/por debajo de los niveles de pivote. La zona de amortiguador se puede ajustar dinámicamente en función de la volatilidad del mercado.
Operar solo en la dirección de tendencia. Actualmente las condiciones largo / corto son paralelas. Una optimización es solo largo en tendencias alcistas y corto en tendencias bajistas basado en un filtro de tendencia.
En resumen, esta es una estrategia de reversión simple pero práctica. Identificar los puntos de pivote durante un período y monitorear los avances de precios forma la idea central para detectar posibles inversiones de tendencia. Las condiciones paralelas largo / corto maximizan las oportunidades mientras que las pérdidas de parada manejan el riesgo.
La lógica de la estrategia es sencilla y fácil de implementar. Los parámetros también son intuitivos para principiantes. Las optimizaciones adicionales pueden mejorar el rendimiento para la adopción. En general, esta es una estrategia recomendada.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Pivot Reversal Strategy", overlay=true) leftBars = input(4) rightBars = input(2) // backtesting date range from_day = input(defval = 1, title = "From Day", minval = 1) from_month = input(defval = 3, title = "From Month", minval = 1) from_year = input(defval = 2018, title = "From Year", minval = 1970) to_day = input(defval = 1, title = "To Day", minval = 1) to_month = input(defval = 1, title = "To Month", minval = 1) to_year = input(defval = 2100, title = "To Year", minval = 1970) time_cond = (time > timestamp(from_year, from_month, from_day, 00, 00)) and (time < timestamp(to_year, to_month, to_day, 23, 59)) swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) if (le and time_cond) strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick) swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) if (se and time_cond) strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)