Estrategia de trading de ruptura con alto rendimiento proporcional basada en la estructura de precios

RR SL TP ATH ATL
Fecha de creación: 2025-02-18 15:42:01 Última modificación: 2025-02-18 15:42:01
Copiar: 1 Número de Visitas: 393
1
Seguir
1617
Seguidores

Estrategia de trading de ruptura con alto rendimiento proporcional basada en la estructura de precios

Descripción general

Se trata de una estrategia de negociación de ruptura basada en el comportamiento puro de los precios, diseñada con un alto riesgo y un alto rendimiento de 1: 5. La estrategia realiza operaciones mediante la identificación de rupturas en los niveles de precios clave, y se combina con la estructura dinámica del mercado para establecer objetivos de stop loss y ganancias. La estrategia no depende de ningún indicador técnico y toma decisiones de negociación exclusivamente en función del comportamiento de los precios en tiempo real.

Principio de estrategia

La lógica central de la estrategia incluye las siguientes partes clave:

  1. Identificación de los máximos y mínimos de precios para formar puntos de referencia de ruptura
  2. Abrir posiciones extras cuando el precio de cierre rompe los máximos previos, abrir posiciones en blanco cuando rompe los mínimos previos
  3. Establecimiento de paradas dinámicas basadas en posiciones de pérdidas de fluctuaciones recientes, establecimiento de paradas de posiciones múltiples en puntos bajos y establecimiento de paradas de posiciones vacías en puntos altos
  4. Posicionamiento de los objetivos de ganancias calculado en función de la proporción de riesgo-retorno de 1: 5
  5. Establezca un límite máximo de transacciones diarias para evitar el exceso de transacciones El proceso de negociación se basa completamente en el comportamiento de los precios, sin utilizar ningún indicador técnico como referencia.

Ventajas estratégicas

  1. El comportamiento de los precios es el único modo de negociar, evitando la interferencia de los indicadores atrasados.
  2. El diseño de la relación entre el riesgo y el retorno es alto, y el beneficio potencial de cada operación es cinco veces el riesgo.
  3. Paradas dinámicas de pérdidas, adaptadas a la estructura del mercado
  4. Señales claras y marcas visuales para facilitar la ejecución de operaciones
  5. Los parámetros son altamente ajustables para adaptarse a diferentes entornos de mercado.
  6. Estricto control de riesgos, incluido el límite de transacciones diarias

Riesgo estratégico

  1. Las señales falsas de ruptura pueden ser frecuentes en mercados convulsionados.
  2. El alto riesgo de retorno puede conducir a una tasa de ganancia relativamente baja
  3. El retorno después de la ruptura podría desencadenar un paro
  4. Cambios en la volatilidad del mercado pueden afectar el rendimiento de la estrategia
  5. Se necesita un movimiento de precios más grande para alcanzar los objetivos de ganancias

Medidas de mitigación:

  • Utilizando esta estrategia en mercados de tendencia
  • Evite las transacciones durante las noticias importantes
  • Escala de posición razonable
  • Parámetros de revisión y optimización periódica

Dirección de optimización de la estrategia

  1. Aumentar el filtro de tendencias para operar sólo en la dirección de la tendencia principal
  2. Mecanismo de confirmación de transacciones agregado para aumentar la fiabilidad de los avances
  3. RRR ajustado a la fluctuación de la tasa
  4. Introducción de análisis de múltiples ciclos de tiempo para mejorar la precisión de las transacciones
  5. Desarrollar mecanismos de detención de pérdidas más inteligentes, como el seguimiento de la detención de pérdidas
  6. Aumentar la capacidad de reconocimiento del entorno del mercado y adaptarse a los parámetros de la estrategia

Resumir

Se trata de una estrategia de negociación de comportamiento de precios rigurosa y lógica. Diseñada con un alto índice de rentabilidad de riesgo, busca beneficios considerables al mismo tiempo que controla los riesgos de manera efectiva. La ventaja de la estrategia reside en el impulso de precios puros, la flexibilidad de los parámetros y el control de riesgos.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-19 00:00:00
end: 2024-11-14 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Filtered Price Action Breakout", overlay=true)

// === INPUTS ===
lookback = input.int(20, title="Breakout Lookback Period", minval=5)
stopLookback = input.int(10, title="Stop Loss Lookback Period", minval=3)
rrMultiplier = input.float(5.0, title="Risk-to-Reward Multiplier", step=0.1)
maxTradesPerDay = input.int(5, title="Max Trades Per Day", minval=1)

// Ensure there are enough bars for calculations
inRange = bar_index >= lookback

// === CALCULATIONS ===
// Highest high and lowest low over the 'lookback' period
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)

// Define breakout conditions (using previous bar's level)
bullBreakout = ta.crossover(close, highestHigh[1])
bearBreakout = ta.crossunder(close, lowestLow[1])

// Store breakout signals in variables to prevent inconsistencies
bullBreakoutSignal = bullBreakout
bearBreakoutSignal = bearBreakout

// Determine stop levels based on recent swing lows/highs
longStop = ta.lowest(low, stopLookback)
shortStop = ta.highest(high, stopLookback)

// Track number of trades per day (fixing boolean condition issue)
newDay = ta.change(time("D")) != 0
todayTrades = ta.barssince(newDay)
tradeCount = 0
if newDay
    tradeCount := 0
else
    tradeCount := tradeCount + 1

// === STRATEGY LOGIC: ENTRY & EXIT ===
if bullBreakoutSignal and tradeCount < maxTradesPerDay
    entryPrice = close
    stopLevel = longStop
    risk = entryPrice - stopLevel
    if risk > 0
        target = entryPrice + rrMultiplier * risk
        strategy.entry("Long", strategy.long)
        strategy.exit("Long Exit", from_entry="Long", stop=stopLevel, limit=target)
        tradeCount := tradeCount + 1
        
        // // Draw Markups
        // label.new(bar_index, entryPrice, text="Long Entry", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
        // line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.green, width=2)
        // line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.red, width=2, style=line.style_dotted)
        // line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
        // label.new(bar_index, stopLevel, text="Stop Loss", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_down)
        // label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_up)

if bearBreakoutSignal and tradeCount < maxTradesPerDay
    entryPrice = close
    stopLevel = shortStop
    risk = stopLevel - entryPrice
    if risk > 0
        target = entryPrice - rrMultiplier * risk
        strategy.entry("Short", strategy.short)
        strategy.exit("Short Exit", from_entry="Short", stop=stopLevel, limit=target)
        tradeCount := tradeCount + 1
        
        // // Draw Markups
        // label.new(bar_index, entryPrice, text="Short Entry", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
        // line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.red, width=2)
        // line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.green, width=2, style=line.style_dotted)
        // line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
        // label.new(bar_index, stopLevel, text="Stop Loss", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_up)
        // label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_down)

// === PLOTTING ===
plot(highestHigh, color=color.green, title="Highest High (Breakout Level)")
plot(lowestLow, color=color.red, title="Lowest Low (Breakout Level)")