Estructura de ruptura y estrategia de negociación inteligente multicondicional de confirmación de volumen

BOS SMA ATR TP SL
Fecha de creación: 2024-12-20 16:15:43 Última modificación: 2024-12-20 16:15:43
Copiar: 0 Número de Visitas: 442
1
Seguir
1617
Seguidores

Estructura de ruptura y estrategia de negociación inteligente multicondicional de confirmación de volumen

Descripción general

Se trata de una estrategia de negociación inteligente basada en la estructura de ruptura (BOS) y la confirmación de volumen de transacción. La estrategia se basa en la supervisión de precios que superan los máximos o mínimos previos y se combina con la confirmación amplificada de volumen para formar una señal de transacción. La estrategia utiliza un mecanismo de verificación de múltiples condiciones, que incluye una serie de requisitos de confirmación y una configuración de stop loss dinámica para mejorar la fiabilidad de las transacciones y la capacidad de controlar el riesgo.

Principio de estrategia

La lógica central de la estrategia incluye los siguientes elementos clave:

  1. Identificación de los máximos y mínimos estructurales mediante el cálculo de los máximos y mínimos de un período determinado
  2. La media móvil se utiliza para calcular el volumen de transacciones para determinar si el volumen de transacciones actual se ha ampliado significativamente.
  3. Número acumulado de confirmaciones múltiples cuando los precios superan los máximos previos y el volumen de transacciones aumenta
  4. Número acumulado de confirmaciones de titulizaciones cuando el precio se desplomó de los mínimos previos y el volumen de transacciones aumentó
  5. La señal de transacción se activa solo cuando se alcanza el número de confirmaciones especificado
  6. Precio de parada y pérdida basado en porcentaje después de la creación de la posición

Ventajas estratégicas

  1. El mecanismo de verificación de múltiples condiciones mejora la fiabilidad de las señales de transacción
  2. Combinación de indicadores de volumen de negocios para evitar el error de juicio causado por las falsas brechas
  3. Uso de mecanismos de confirmación continua, reducción de la frecuencia de las operaciones y aumento de la tasa de éxito
  4. Con una configuración de stop loss dinámica que ajusta automáticamente la posición de salida en función del precio de entrada
  5. La lógica de la estrategia es clara, los parámetros son ajustables y son adaptables

Riesgo estratégico

  1. Los mercados en turbulencia pueden tener falsas rupturas frecuentes, lo que lleva a pérdidas continuas.
  2. Los puntos de parada podrían no ser lo suficientemente oportunos en un escenario de gran volatilidad
  3. El mecanismo de confirmación puede causar retrasos en la entrada y perder el mejor precio.
  4. El criterio para juzgar el volumen de transacciones es fijo y no puede adaptarse bien a los cambios en la situación del mercado. Solución:
  • Introducción de indicadores de volatilidad del mercado y parámetros de ajuste dinámico
  • Aumentar los filtros de tendencia y reducir las señales falsas de los mercados convulsivos
  • Optimización de la lógica de detención de pérdidas y flexibilidad de la detención de pérdidas
  • Diseño de un método de cálculo de la barrera de entrega adaptado

Dirección de optimización de la estrategia

  1. Aumentar los indicadores de tendencia, como el sistema de medias móviles, que solo se negocian en la dirección de la tendencia
  2. Introducción de indicadores ATR para ajustar dinámicamente la distancia de frenado y mejorar la flexibilidad del control de viento
  3. Diseño de un mecanismo de valoración de la pérdida de volumen de transacciones que se adapte a la volatilidad
  4. Añade un filtro de tiempo para evitar las horas de mayor riesgo
  5. Mecanismos de confirmación optimizados para mejorar la eficacia de la admisión al tiempo que se garantiza la fiabilidad

Resumir

Es un sistema de estrategias que combina la teoría clásica del análisis técnico y los métodos modernos de negociación cuantitativa. La estrategia tiene una buena estabilidad y fiabilidad a través de la verificación de múltiples condiciones y el control riguroso del riesgo. Aunque hay algunos aspectos que necesitan ser optimizados, el diseño general del marco es razonable y tiene un buen valor de aplicación en la batalla.

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

//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)

// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01)  // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)

// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]

// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)

// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0

if (close > swingHigh and highVolume)
    bullishCount := bullishCount + 1
    bearishCount := 0
else if (close < swingLow and highVolume)
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)

// Entry and Exit Conditions
var float entryPrice = na  // Declare entryPrice as a variable

if (bullishBOSConfirmed and strategy.position_size <= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Long", strategy.long)

if (strategy.position_size > 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 - stopLossPercentage)
    strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)

if (bearishBOSConfirmed and strategy.position_size >= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Short", strategy.short)

if (strategy.position_size < 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 + stopLossPercentage)
    strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)

// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)