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.
La estrategia consta de las siguientes partes principales:
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
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
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.
Las ventajas de esta estrategia incluyen:
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.
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.
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.
Fácil de entender y extender
Estructura simple, fácil de entender y optimizar para su extensión.
Puede haber algunos riesgos para esta estrategia:
Riesgos en dos sentidos
Como estrategia de negociación bidireccional, asume tanto riesgos largos como cortos.
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.
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:
Incorporar indicadores de tendencia
Incorporar MA y otros indicadores de tendencia para determinar la tendencia del mercado, evitar el comercio contra tendencias.
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.
Filtros adicionales
Añadir filtros de condiciones de volumen de operaciones o volatilidad para garantizar la calidad de las operaciones.
Todavía hay espacio para optimizar aún más la estrategia:
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.
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.
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.
Comercio de algoritmos
Aprovechar los motores de negociación de algoritmos para probar de forma eficiente las estrategias y el comercio.
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!")