Estrategia dinámica de media móvil de stop-loss

El autor:¿ Qué pasa?, Fecha: 2024-01-29 15:52:43
Las etiquetas:

img

Resumen general

Esta estrategia adopta la idea de un stop de seguimiento dinámico basado en ATR y extremos de precios para calcular líneas de stop-loss largas y cortas. Combinado con la idea de salida de la candela, juzga la dirección larga / corta basada en la ruptura de la línea de stop-loss. Cuando la línea de stop-loss rompe hacia arriba, se juzga como alcista y entrada larga. Cuando la línea de stop-loss rompe hacia abajo, se juzga como bajista y entrada corta.

La estrategia tiene funciones de gestión de stop-loss y de evaluación de señales de entrada.

Estrategia lógica

La estrategia consta de las siguientes partes principales:

  1. Calcular las líneas de stop-loss largas/cortas basadas en el ATR

    Basándose en la duración del período de ATR definida por el usuario y el multiplicador multiplicado, se calcula el ATR en tiempo real.

     longStop = Highest - ATR  
     shortStop = Lowest + ATR
    
  2. Juzgar la dirección de la negociación por ruptura

    Compare las líneas de stop-loss entre la barra anterior y la barra actual.

     Long stop-loss line breakout upwards, long entry  
     Short stop-loss line breakout downwards, short entry   
    
  3. Establecer el stop loss y el take profit basados en la relación riesgo-recompensa

    En función de la relación riesgo-beneficio definida por el usuario, la distancia stop loss y la distancia take profit se calculan a partir del ATR. La orden de stop loss y la orden de take profit se establecen al abrir posiciones.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Pérdida de detención dinámica

    La adopción de líneas de stop loss dinámicas de seguimiento ayuda a detener las pérdidas oportunamente y a controlar el riesgo a la baja.

  2. Funciones duales

    La línea de stop loss sirve tanto como herramienta de gestión de stop loss como como juez de condiciones de entrada, reduciendo la complejidad de la estrategia.

  3. Se trata de los valores de los activos de las entidades de crédito que no son sujetos a riesgo.

    Busca mayores ganancias con una relación riesgo-recompensa predefinida.

  4. Fácil de entender y extender

    Estructura simple, fácil de entender y optimizar para su extensión.

Análisis de riesgos

Puede haber algunos riesgos para esta estrategia:

  1. Riesgos en dos sentidos

    Como estrategia de negociación bidireccional, asume tanto riesgos largos como cortos.

  2. Dependencia del parámetro ATR

    Los parámetros ATR afectan directamente a las líneas de stop loss y a la frecuencia de negociación.

  3. Adaptabilidad a las tendencias

    La estrategia se adapta mejor a escenarios de rango con rupturas repentinas, no es adecuada para escenarios de tendencia fuerte.

Las optimizaciones para hacer frente a los riesgos anteriores son:

  1. Incorporar indicadores de tendencia

    Incorporar MA y otros indicadores de tendencia para determinar la tendencia del mercado, evitar el comercio contra tendencias.

  2. Optimización de parámetros

    Optimizar las combinaciones de parámetros ATR y relación riesgo-beneficio para obtener un stop loss y un take profit más razonables.

  3. Filtros adicionales

    Añadir filtros de condiciones de volumen de operaciones o volatilidad para garantizar la calidad de las operaciones.

Direcciones de optimización

Todavía hay espacio para optimizar aún más la estrategia:

  1. Incorporar el aprendizaje automático

    Adoptar modelos de aprendizaje automático para predecir la tendencia de los precios para una mayor precisión de entrada.

  2. Construir cartera libre de riesgo con opciones

    El valor de los activos de garantía se calculará en función de los tipos de interés de los activos de garantía.

  3. Arbitraje de activos múltiples en el mercado

    Realizar un arbitraje estadístico entre diferentes mercados y clases de activos para obtener un alfa estable.

  4. Comercio de algoritmos

    Aprovechar los motores de negociación de algoritmos para probar de forma eficiente las estrategias y el comercio.

Conclusión

Este artículo analiza a fondo una estrategia de trading cuantitativa basada en el stop loss dinámico. La estrategia simultáneamente tiene funcionalidad de gestión de stop loss y determinación de señales de trading, que controla eficazmente los riesgos. También discutimos las ventajas, riesgos potenciales y futuras optimizaciones de la estrategia. Es una estrategia de trading muy práctica que merece más investigación y aplicación.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)

// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr

// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1

// Entry Signals
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')

// Alerts
if (dir != dir[1])
    strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
    strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
    strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")


Más.