Estrategia de trading avanzada de ruptura de rangos y múltiples marcos temporales

HTF SMA PIN BAR RSI EMA VOL
Fecha de creación: 2025-02-18 18:08:09 Última modificación: 2025-02-18 18:08:09
Copiar: 0 Número de Visitas: 530
1
Seguir
1617
Seguidores

Estrategia de trading avanzada de ruptura de rangos y múltiples marcos temporales

Descripción general

Se trata de una estrategia de negociación de varios períodos de tiempo basada en la teoría de la brecha de la brecha. La estrategia identifica oportunidades potenciales de negociación principalmente a través del análisis de las formas de la brecha y los rangos de precios en períodos de tiempo más altos. La estrategia integra un filtro de volumen de transacción y un mecanismo de stop loss dinámico para capturar oportunidades de tendencia a través de brechas en los altos y bajos anteriores.

Principio de estrategia

El núcleo de la estrategia es monitorear los periodos de tiempo más altos (de 4 horas por defecto) en los que los precios superan los rangos anteriores. En concreto:

  1. La estrategia sigue y almacena datos de los puntos altos y bajos de las dos líneas K de los períodos de tiempo altos anteriores
  2. Cuando el precio de cierre de una línea K actual está por debajo del precio de cierre anterior y el precio de la línea K actual es alto, se forma una señal de corto plazo
  3. Cuando el precio de cierre de una línea K actual es más alto que el precio de cierre de una línea K anterior y la innovación de la línea K actual es baja, se forma una señal múltiple
  4. El precio de entrada se fija en la posición de los puntos altos y bajos que desencadenan la línea K
  5. El objetivo de ganancias se establece en la posición de los puntos altos y bajos correspondientes en el período anterior
  6. La distancia de parada se ajusta dinámicamente según el tamaño del intervalo

Ventajas estratégicas

  1. El análisis de múltiples períodos de tiempo ofrece una señal más confiable
  2. Paradas dinámicas de pérdidas que se ajustan a la volatilidad del mercado
  3. Mecanismos de filtración de volumen de transacciones opcionales para aumentar la confirmación de las transacciones
  4. Interfaces visuales claros, incluidos marcadores de precios de inicio, precios de meta y precios de parada
  5. La lógica de la estrategia es simple, clara, fácil de entender y ejecutar
  6. Aplicable a todo tipo de transacciones y entornos de mercado

Riesgo estratégico

  1. Las frecuentes falsas brechas en los mercados convulsionados pueden generar
  2. Un mayor multiplicador de stop loss puede causar una pérdida excesiva en una sola operación
  3. Depende de datos históricos de precios y puede reaccionar con retraso en un entorno de mercado que cambia rápidamente
  4. No se tiene en cuenta el impacto de los factores fundamentales
  5. Puede ser difícil de ejecutar con eficacia en mercados con poca liquidez

Dirección de optimización de la estrategia

  1. Introducir filtros de tendencia, como las medias móviles o el indicador ADX
  2. Añadir más criterios de evaluación del entorno del mercado
  3. Optimización de las estrategias de stop loss y la posibilidad de introducir stop loss móvil
  4. Unirse al módulo de gestión de volumen de transacciones
  5. Considere agregar más análisis de combinación de períodos de tiempo
  6. Introducción de indicadores de fluctuación para optimizar el juicio intervalo

Resumir

Se trata de una estrategia de negociación multi-ciclo de tiempo estructurada, con claridad lógica. Se buscan oportunidades de tendencia potenciales mediante el análisis del comportamiento de los precios en ciclos de tiempo más altos, mientras que se integra la gestión de riesgos y el mecanismo de filtración.

Código Fuente de la Estrategia
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Candle Range Theory Strategy", overlay=true)

// Input parameters
var string HTF = input.timeframe("240", "Higher Timeframe (Minutes)")  // 4H default
var float stopLossMultiplier = input.float(1.5, "Stop Loss Multiplier", minval=0.5)
var bool useVolFilter = input.bool(false, "Use Volume Filter")
var float volThreshold = input.float(1.5, "Volume Threshold Multiplier", minval=1.0)

// Function to get higher timeframe data
getHtfData(src) =>
    request.security(syminfo.tickerid, HTF, src)

// Calculate volume condition once per bar
var bool volCondition = true
if useVolFilter
    float vol = getHtfData(volume)
    float avgVol = ta.sma(vol, 20)
    volCondition := vol > avgVol * volThreshold

// Get HTF candle data
htf_open = getHtfData(open)
htf_high = getHtfData(high)
htf_low = getHtfData(low)
htf_close = getHtfData(close)

// Store previous candle data
var float h1 = na  // High of Candle 1
var float l1 = na  // Low of Candle 1
var float h2 = na  // High of Candle 2
var float l2 = na  // Low of Candle 2
var float prevClose = na

// Track setup conditions
var string setupType = na
var float triggerLevel = na
var float targetLevel = na
var float stopLevel = na

// Update candle data - fixed time function usage
var bool isNewBar = false
isNewBar := ta.change(request.security(syminfo.tickerid, HTF, time)) != 0

if isNewBar
    h1 := h2
    l1 := l2
    h2 := htf_high[1]
    l2 := htf_low[1]
    prevClose := htf_close[1]

    // Identify setup conditions
    if not na(h1) and not na(h2) and not na(prevClose)
        if (h2 > h1 and prevClose < h1)  // Short setup
            setupType := "short"
            triggerLevel := l2
            targetLevel := l1
            stopLevel := h2 + (h2 - l1) * stopLossMultiplier
        else if (l2 < l1 and prevClose > l1)  // Long setup
            setupType := "long"
            triggerLevel := h2
            targetLevel := h1
            stopLevel := l2 - (h1 - l2) * stopLossMultiplier
        else
            setupType := na
            triggerLevel := na
            targetLevel := na
            stopLevel := na

// Entry conditions using pre-calculated volume condition - fixed line breaks
bool longCondition = setupType == "long" and high > triggerLevel and not na(triggerLevel) and volCondition
bool shortCondition = setupType == "short" and low < triggerLevel and not na(triggerLevel) and volCondition

// Execute trades
if longCondition
    strategy.entry("Long", strategy.long, comment="Long Entry")
    strategy.exit("Long Exit", "Long", limit=targetLevel, stop=stopLevel)

if shortCondition
    strategy.entry("Short", strategy.short, comment="Short Entry")
    strategy.exit("Short Exit", "Short", limit=targetLevel, stop=stopLevel)

// Plot signals - fixed plotshape parameters
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown)

plot(triggerLevel, "Trigger Level", color=color.yellow, style=plot.style_circles)
plot(targetLevel, "Target Level", color=color.blue, style=plot.style_circles)
plot(stopLevel, "Stop Level", color=color.red, style=plot.style_circles)