Estrategia de trading con impulso de ruptura de tendencias múltiples

EMA ATR VOLUME SMA BREAKOUT Consolidation
Fecha de creación: 2025-02-20 13:14:39 Última modificación: 2025-02-20 14:53:56
Copiar: 1 Número de Visitas: 398
2
Seguir
319
Seguidores

Estrategia de trading con impulso de ruptura de tendencias múltiples Estrategia de trading con impulso de ruptura de tendencias múltiples

Descripción general

La estrategia es un sistema de seguimiento de tendencias que combina múltiples indicadores para capturar oportunidades de tendencias en el mercado, principalmente mediante la identificación de brechas de precios, confirmación de volúmenes de transacciones y la combinación de sistemas de línea media. La estrategia determina señales de negociación mediante la monitorización de brechas de precios en los máximos / mínimos recientes, el aumento significativo del volumen de transacciones y la alineación de medias móviles de múltiples índices (EMA).

Principio de estrategia

La lógica central de la estrategia se basa en los siguientes elementos clave:

  1. Sistema de ruptura de precios: monitoreo de las rupturas de precios en los máximos/mínimos de los últimos 20 ciclos
  2. Confirmación del volumen de transacciones: requiere que el volumen de transacciones en el momento de la ruptura sea al menos el doble del promedio de transacciones en los últimos 20 ciclos
  3. Sistema de línea media: Construye un sistema de confirmación de tendencias con un EMA de 30/50/200
  4. Hacer más condiciones: el precio rompe un nuevo máximo, el volumen de transacciones aumenta, el precio está en 200 EMA, la media a corto plazo está por encima de la media a medio plazo y la media a medio plazo está por encima de la media a largo plazo
  5. Las condiciones de acceso incluyen dos mecanismos de acceso:
    • Breakout tradicional: precios alcanzan nuevos bajos, volumen de transacciones aumenta, la línea media está en línea recta y 200 EMA se inclina hacia abajo
    • Separación estrecha: los precios se forman por debajo de la línea media intermedia, con una separación estrecha de menos de 0.5 veces el ATR

Ventajas estratégicas

  1. Mecanismo de confirmación múltiple: mejora la fiabilidad de la señal mediante la triple confirmación de brechas de precios, volumen de transacción y línea media
  2. Mecanismo de coworking flexible: ofrece dos entradas de coworking independientes para aumentar las oportunidades de negociación
  3. Adaptabilidad: mediante la definición de la ATR, se puede definir una agrupación más estrecha, lo que permite que las estrategias se adapten a diferentes entornos de fluctuación del mercado.
  4. Control de riesgo perfeccionado: 200 EMA como referencia de stop loss para proporcionar un mecanismo de salida claro
  5. Ajustabilidad de parámetros: los parámetros clave se pueden optimizar según las diferentes características del mercado

Riesgo estratégico

  1. Riesgo de brechas falsas: el mercado podría sufrir brechas falsas que podrían dar lugar a señales falsas
  2. Riesgo de deslizamiento: el deslizamiento puede ser mayor en el momento de la ruptura de un aumento en el volumen de transacciones
  3. Riesgo de reversión de la tendencia: en un mercado de tendencia fuerte, el uso de un stop loss de línea media puede provocar una salida prematura
  4. Sensibilidad de parámetros: el rendimiento de la estrategia es sensible a la configuración de parámetros y requiere una optimización cuidadosa
  5. Dependencia del entorno del mercado: falsas señales frecuentes en mercados convulsionados

Dirección de optimización de la estrategia

  1. Introducir filtros de intensidad de tendencia: se pueden agregar indicadores de intensidad de tendencia como el ADX, para filtrar señales en entornos de tendencia débil
  2. Mecanismos de pérdidas optimizadas: se puede introducir pérdidas dinámicas basadas en ATR para aumentar la flexibilidad de las pérdidas
  3. Mejorar la gestión de las posiciones: ajustar el tamaño de las posiciones en función de la fuerza de ruptura y la dinámica de la volatilidad del mercado
  4. Aumentar el filtro de tiempo: agregar filtro de tiempo diurno para evitar el comercio en las horas de apertura y cierre más volátiles
  5. Introducción de la clasificación de las circunstancias del mercado: Parámetros de estrategia de ajuste dinámico en función de las diferentes circunstancias del mercado (trend / oscilación)

Resumir

La estrategia de comercio de volumen de ruptura de tendencias múltiples es un sistema integral de seguimiento de tendencias que ofrece oportunidades de negociación flexibles a través del uso combinado de múltiples indicadores técnicos, al tiempo que garantiza la fiabilidad de la señal. La innovación de la estrategia reside en la combinación de métodos de negociación de ruptura tradicionales y un nuevo mecanismo de identificación de la clasificación estrecha, lo que le permite adaptarse a diferentes entornos de mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Breakout Strategy (Long & Short) + Slope of 200 EMA", overlay=true)

// -------------------
// 1. Settings
// -------------------
breakout_candles = input.int(20, title="Number of Candles for Breakout")
range_candles    = input.int(10, title="Number of Candles for Previous Range")

ema_long_period   = input.int(200, title="Long EMA Period")
ema_medium_period = input.int(50,  title="Medium EMA Period")
ema_short_period  = input.int(30,  title="Short EMA Period")

// Checkbox to allow/disallow short positions
allowShort = input.bool(true, title="Allow Short Positions")

// Inputs for the new Narrow Consolidation Short setup
consolidationBars     = input.int(10,   "Consolidation Bars",   minval=1)
narrowThreshInAtr     = input.float(0.5,"Narrowness (ATR Mult.)",minval=0.0)
atrLength             = input.int(14,   "ATR Length for Range")

// -------------------
// 2. Calculations
// -------------------
breakout_up   = close > ta.highest(high, breakout_candles)[1]
breakout_down = close < ta.lowest(low,  breakout_candles)[1]

prev_range_high = ta.highest(high, range_candles)[1]
prev_range_low  = ta.lowest(low,  range_candles)[1]

ema_long   = ta.ema(close, ema_long_period)
ema_medium = ta.ema(close, ema_medium_period)
ema_short  = ta.ema(close, ema_short_period)

average_vol      = ta.sma(volume, breakout_candles)
volume_condition = volume > 2 * average_vol

// 200 EMA sloping down?
ema_long_slope_down = ema_long < ema_long[1]

// For the Narrow Consolidation Short
rangeHigh   = ta.highest(high, consolidationBars)
rangeLow    = ta.lowest(low,  consolidationBars)
rangeSize   = rangeHigh - rangeLow

atrValue    = ta.atr(atrLength)

// Condition: Price range is "narrow" if it's less than (ATR * threshold)
narrowConsolidation = rangeSize < (atrValue * narrowThreshInAtr)

// Condition: All bars under Medium EMA if the highest difference (high - ema_medium) in last N bars is < 0
allBelowMedium = ta.highest(high - ema_medium, consolidationBars) < 0

// -------------------
// 3. Long Entry
// -------------------
breakout_candle_confirmed_long = ta.barssince(breakout_up) <= 3

long_condition = breakout_candle_confirmed_long
     and volume_condition
     and close > prev_range_high
     and close > ema_long
     and ema_short > ema_medium
     and ema_medium > ema_long
     and strategy.opentrades == 0

if long_condition
    strategy.entry("Long", strategy.long)

// -------------------
// 4. Short Entries
// -------------------

// (A) Original breakout-based short logic
breakout_candle_confirmed_short = ta.barssince(breakout_down) <= 3
short_condition_breakout = breakout_candle_confirmed_short
     and volume_condition
     and close < prev_range_low
     and close < ema_long
     and ema_short < ema_medium
     and ema_medium < ema_long
     and ema_long_slope_down
     and strategy.opentrades == 0

// (B) NEW: Narrow Consolidation Short
short_condition_consolidation = narrowConsolidation
     and allBelowMedium
     and strategy.opentrades == 0

// Combine them: if either short scenario is valid, go short
short_condition = (short_condition_breakout or short_condition_consolidation) and allowShort

if short_condition
    // Use a different order ID if you want to distinguish them
    // but "Short" is fine for a single position
    strategy.entry("Short", strategy.short)

// -------------------
// 5. Exits
// -------------------
if strategy.position_size > 0 and close < ema_long
    strategy.close("Long", qty_percent=100)

if strategy.position_size < 0 and close > ema_long
    strategy.close("Short", qty_percent=100)

// ======================================================================
// 5. ADDITIONAL PARTIAL EXITS / STOPS
// ======================================================================
// You can add partial exits for shorts or longs similarly.
// For example:
// if strategy.position_size < 0 and close > stop_level_for_short
//     strategy.close("Short", qty_percent=50)