Estrategia de media móvil de stop loss con cierre dinámico


Fecha de creación: 2024-01-29 15:52:43 Última modificación: 2024-01-29 15:52:43
Copiar: 0 Número de Visitas: 621
1
Seguir
1617
Seguidores

Estrategia de media móvil de stop loss con cierre dinámico

Descripción general

La estrategia utiliza el pensamiento del trailing stop dinámico para calcular la línea de pérdidas de la posición corta y larga en función del ATR y el valor máximo del precio. Combinando la idea de Chandelier Exit, en función de la dirección de la línea de pérdidas para juzgar la dirección de la posición corta y larga. Cuando la línea de pérdidas se rompa hacia arriba, juzgarlo como pesado, hacer más; cuando la línea de pérdidas se rompa hacia abajo, juzgarlo como bajista, hacer nada.

La estrategia tiene la doble función de juzgar el stop loss y la señal de entrada.

Principio de estrategia

La estrategia se compone principalmente de las siguientes partes:

  1. Línea de pérdida de posición larga y corta basada en ATR

Calcula el ATR en tiempo real, basado en la longitud y el múltiplo de los períodos ATR establecidos por el usuario. Luego calcula la línea de pérdida de posición larga y corta basándose en el ATR y el valor máximo del precio:

    longStop = 最高价 - ATR
    shortStop = 最低价 + ATR
  1. Utilizando la brecha para determinar la dirección de las transacciones

Compara la línea de pérdidas de la línea K anterior con la línea de pérdidas de la línea K actual. Si la línea de pérdidas de la línea K actual se rompe, se emite una señal de negociación:

    长仓止损线上方突破,做多
    短仓止损线下方突破,做空
  1. El precio de la rentabilidad por riesgo es el que establece el stop loss y el stop stop.

El ATR calcula el Stop Loss Distance y el Stop Stop Distance en función de la relación entre el riesgo y el retorno del riesgo (riskRewardRatio) que establece el usuario. También se puede establecer un stop loss y un stop loss al abrir una posición.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Dinámico seguimiento de pérdidas, pérdidas a tiempo

La estrategia utiliza un seguimiento dinámico de las líneas de parada para detener los pérdidas a tiempo y controlar el riesgo de caída.

  1. También tiene una función de deterioro y juicio de entrada.

La línea de parada de la estrategia simplifica la lógica de la estrategia al mismo tiempo que sirve como criterio de entrada.

  1. Se puede configurar el RRR

La búsqueda adecuada de una mayor rentabilidad de acuerdo con la relación de riesgo-beneficio establecida.

  1. Es fácil de entender y ampliar.

La estructura de la estrategia es simple, fácil de entender y de optimizar para la expansión.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Riesgo bilateral

La estrategia es una estrategia de negociación bilateral, con el riesgo de hacer más y de hacer menos.

  1. Dependencia de los parámetros ATR

La configuración de los parámetros ATR afecta directamente a la línea de stop loss y a la frecuencia de las transacciones, y una configuración incorrecta puede causar que el stop loss sea demasiado flexible o que la frecuencia de las transacciones sea demasiado alta.

  1. Adaptabilidad al mercado de tendencias

Esta estrategia es más adecuada para situaciones de brechas después de la corrección de la línea media, no para escenarios de tendencia demasiado fuerte.

Para los riesgos mencionados, se puede optimizar en los siguientes aspectos:

  1. Indicadores de tendencia combinados

Combinación de indicadores de tendencia como la MA para determinar la tendencia del mercado y evitar el comercio en contra.

  1. Combinación de parámetros de optimización

Optimización de los parámetros ATR y de la relación entre el riesgo y el rendimiento para que el stop loss y el stop stop sean más razonables.

  1. Añadir condiciones de filtración

Aumentar las condiciones de filtración de los indicadores de volumen o volatilidad para garantizar la calidad de las operaciones.

Dirección de optimización

La estrategia tiene espacio para ser optimizada aún más:

  1. En combinación con el aprendizaje automático

Utiliza modelos de aprendizaje automático para predecir tendencias de precios y mejorar la precisión de entrada.

  1. Opciones para construir una cartera sin riesgo

Utiliza la volatilidad de los precios de las variedades de cobertura de opciones para construir una cartera de arbitraje sin riesgo.

  1. Arbitraje entre varias variedades

Arbitraje estadístico entre los diferentes mercados y variedades para obtener un Alfa estable.

  1. Negociación por algoritmos

Eficiencia en la retroalimentación de estrategias y en el comercio en vivo a través de un motor de negociación algorítmico.

Resumir

Este artículo analiza en profundidad una estrategia de comercio cuantitativa basada en el seguimiento dinámico de los estancamientos. Esta estrategia tiene al mismo tiempo la función de gestión de los estancamientos y de la determinación de las señales de negociación, lo que permite controlar el riesgo de manera efectiva. También analizamos las ventajas de la estrategia, los posibles riesgos y las ideas de optimización posteriores.

Código Fuente de la Estrategia
/*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!")