Estrategia de ruptura/reversión ponderada por volumen basada en puntos pivote

Pivot VOLUME SMA BREAKOUT Reversal STOP LOSS TAKE PROFIT
Fecha de creación: 2025-04-24 17:08:39 Última modificación: 2025-04-24 17:08:39
Copiar: 0 Número de Visitas: 353
2
Seguir
319
Seguidores

Estrategia de ruptura/reversión ponderada por volumen basada en puntos pivote Estrategia de ruptura/reversión ponderada por volumen basada en puntos pivote

Descripción general

La estrategia combina soporte/resistencia (S/R) con breakouts/reversiones, filtros de transacción y sistemas de alerta, diseñados para capturar los puntos de inflexión clave en el mercado. La estrategia utiliza la identificación de breakouts o reversiones de precios, junto con la confirmación de transacciones anormales, para aumentar la fiabilidad de las señales de negociación. La estrategia utiliza un stop loss fijo del 2% y un ratio de stop loss ajustable (default del 3%) para administrar el riesgo.

Principio de estrategia

  1. Identificación de soporte/resistenciaUtilización:ta.pivothigh()yta.pivotlow()La función identifica los niveles de precios clave dentro del período especificado (pivotLen) y dispara la señal cuando el precio rompe la resistencia (cruza el 1% hacia arriba) o rebota desde el soporte (se retira después de la caída).
  2. Filtrado por volumen de entregaSe considera una confirmación válida cuando el volumen de transacciones actual supera el volMultiplier de la SMA (el 1.5 por defecto).
  3. Lógica de múltiples espacios
    • Condiciones de muchos jefesEl precio ha roto la zona de resistencia*1.01) y acompañado de un alto volumen de transacciones, o un precio cerca de la zona de soporte (en el rango de ± 1%) se produce una “falsa caída” (baja ≤ supZone pero el cierre se recupera) y el volumen de transacciones aumenta.
    • Condiciones de cabeza vacíaEl precio de la soja ha caído por debajo de la zona de soporte.*0.99) y acompañado de un alto volumen de transacciones, o un precio cercano a la zona de resistencia (en el rango de ± 1%) se produce una “falsa ruptura” (alta ≥ resZone pero cerrada) y el volumen de transacciones aumenta.
  4. Gestión de riesgos: el 2% fijo de la pérdida y la barra de control ajustable (el 3 por ciento por defecto) pasóstrategy.exit()lograr.

Análisis de las ventajas

  1. Verificación de múltiples factoresLa combinación de la estructura de precios (S/R), el volumen de transacciones y el comportamiento del mercado (falsa brecha / falsa caída) reduce significativamente la probabilidad de falsas señales.
  2. Adaptación dinámica: Actualización automática de soporte/resistencia para adaptarse a los cambios en el mercado.
  3. Estricto control de riesgos: Stop loss fijo para evitar pérdidas excesivas en una sola operación, el stop loss se puede ajustar para adaptarse a diferentes mercados volátiles.
  4. Es muy visual.La línea de soporte/resistencia se traza en tiempo real y las señales de las transacciones son claras.
  5. Integración de alertas: Sistema de interconexión de operaciones automáticas para diferentes escenarios de operaciones.

Análisis de riesgos

  1. Riesgo de una ciudad en crisis: Frecuente desencadenamiento de falsas rupturas en mercados sin tendencia, lo que lleva a múltiples paradas. Solución: aumentar los indicadores de filtración de tendencia como el ADX o la EMA.
  2. Parámetros sensibles:pivotLen y volMultiplier requieren ajustes en función del mercado. Solución: optimización de parámetros y pruebas de Walk-Forward.
  3. El retraso en la entrega: El volumen anormal puede aparecer después de la fluctuación de los precios. Solución: Combinar los datos de descuento o reducir volSmaLength.
  4. El riesgo de saltarEl salto al descubierto puede saltar el punto de parada. Solución: Utilice el listado de precios límite o evite los momentos de alta volatilidad.

Dirección de optimización

  1. Filtración de tendencias: Agregar filtro en la dirección ADX>25 o 200 EMA para evitar el comercio en contra.
  2. Parámetros dinámicos: Ajuste automático de pivotLen y volMultiplier según la fluctuación del mercado (como ATR).
  3. Suspensión por graduaciónSe establecen dos paradas (por ejemplo, un 2% para la mitad de la posición, y el resto para el seguimiento de la pérdida), y se mejora el índice de ganancias y pérdidas.
  4. Mejoras en el aprendizaje automático: Optimización del modelo de entrenamiento con datos históricos para los parámetros volMultiplier y tpPerc.
  5. Verificación a través de ciclos: Introducción de la confirmación S/R en un marco de tiempo más alto, mejorando la calidad de la señal.

Resumir

La estrategia diseña un marco de negociación de alta probabilidad a través de la triple verificación (posición del precio, volumen de transacción, comportamiento del precio), especialmente adecuado para la captura de tendencias tempranas. Las ventajas centrales son la transparencia lógica y el control del riesgo, pero hay que tener en cuenta sus limitaciones en mercados convulsivos. La optimización futura puede centrarse en la adaptación automática de los parámetros y el filtrado de tendencias para mejorar aún más la estabilidad.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-24 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("S/R Breakout/Reversal + Volume + Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
pivotLen       = input.int(10, "Pivot Lookback for S/R")
volSmaLength   = input.int(20, "Volume SMA Length")
volMultiplier  = input.float(1.5, "Volume Multiplier")
tpPerc         = input.float(3.0, "Take Profit %", step=0.1)
slPerc         = 2.0  // Stop Loss fixed at 2%

// === S/R ZONES ===
pivotHigh = ta.pivothigh(high, pivotLen, pivotLen)
pivotLow  = ta.pivotlow(low, pivotLen, pivotLen)

var float resZone = na
var float supZone = na
if not na(pivotHigh)
    resZone := pivotHigh
if not na(pivotLow)
    supZone := pivotLow

plot(supZone, title="Support", color=color.green, linewidth=2, style=plot.style_linebr)
plot(resZone, title="Resistance", color=color.red,   linewidth=2, style=plot.style_linebr)

// === VOLUME FILTER ===
volSma     = ta.sma(volume, volSmaLength)
highVolume = volume > volSma * volMultiplier

// === LONG LOGIC ===
priceAboveRes     = close > resZone * 1.01
nearSupport       = close >= supZone * 0.99 and close <= supZone * 1.01
rejectSupport     = low <= supZone and close > supZone
longBreakoutCond  = priceAboveRes and highVolume
longReversalCond  = nearSupport and rejectSupport and highVolume
longCondition     = longBreakoutCond or longReversalCond

// === SHORT LOGIC ===
priceBelowSup     = close < supZone * 0.99
nearResistance    = close >= resZone * 0.99 and close <= resZone * 1.01
rejectResistance  = high >= resZone and close < resZone
shortBreakoutCond = priceBelowSup and highVolume
shortReversalCond = nearResistance and rejectResistance and highVolume
shortCondition    = shortBreakoutCond or shortReversalCond

// === ENTRIES WITH LABELS ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low * 0.995, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high * 1.005, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)

// === TP/SL ===
longTP  = close * (1 + tpPerc / 100)
longSL  = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)

strategy.exit("Long TP/SL",  from_entry="Long",  limit=longTP,  stop=longSL)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTP, stop=shortSL)

// === ALERT CONDITIONS ===
alertcondition(longCondition,  title="Buy Alert",  message="🔔 BUY signal: S/R + Volume breakout/reversal")
alertcondition(shortCondition, title="Sell Alert", message="🔔 SELL signal: S/R + Volume breakout/reversal")