El Chande-Kroll Stop Dynamic ATR Trend Following Strategy es una estrategia de trading cuantitativa basada en el indicador de stop de Chande-Kroll y el Simple Moving Average (SMA). La estrategia tiene como objetivo capturar las tendencias al alza del mercado mientras se gestiona el riesgo utilizando niveles dinámicos de stop-loss. El indicador de stop de Chande-Kroll ajusta dinámicamente los niveles de stop-loss basados en el Average True Range (ATR) para adaptarse a diferentes condiciones de volatilidad del mercado.
El núcleo de la estrategia es el indicador de stop de Chande-Kroll, que utiliza ATR para calcular los niveles dinámicos de stop-loss. ATR mide la volatilidad del mercado, y los niveles de stop-loss se ajustan dinámicamente en función de ATR y un multiplicador. Esto asegura que las posiciones de stop-loss se adapten a las condiciones actuales del mercado. Además, el SMA de 21 períodos actúa como un filtro de tendencia, y las señales largas se activan solo cuando el precio de cierre está por encima del SMA. Esto ayuda a evitar el comercio durante los mercados bajistas. Condición de entrada larga: cuando el precio de cierre se rompe por encima de la banda inferior de Chande-Kroll y está por encima de la SMA de 21 períodos, se inicia una posición larga. Condición de salida: cuando el precio de cierre cae por debajo de la banda superior de Chande-Kroll, la posición se cierra.
La estrategia de seguimiento de tendencias de la estrategia de stop-loss dinámico de Chande-Kroll es una estrategia de trading cuantitativa basada en principios dinámicos de stop-loss y seguimiento de tendencias. Al combinar el indicador de stop de Chande-Kroll y el filtro de tendencia SMA, la estrategia puede capturar tendencias alcistas mientras gestiona el riesgo de manera efectiva. La flexibilidad de los parámetros de la estrategia y el tamaño dinámico de la posición mejoran aún más la adaptabilidad de la estrategia. Aunque la estrategia tiene ciertos riesgos, con medidas razonables de gestión de riesgos y optimización y mejora continuas, la estrategia tiene el potencial de lograr retornos estables a largo plazo.
/*backtest start: 2023-06-08 00:00:00 end: 2024-06-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Kroll Stop Strategy", overlay=true, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.01, slippage = 3) // Chande Kroll Stop parameters calcMode = input.string(title="Calculation Mode", defval="Exponential", options=["Linear", "Exponential"]) riskMultiplier = input(5, "Risk Multiplier") atrPeriod = input(10, "ATR Period") atrMultiplier = input(3, "ATR Multiplier") stopLength = input(21, "Stop Length") smaLength = input(21, "SMA Length") // Calculate ATR atr = ta.atr(atrPeriod) // Calculate Chande Kroll Stop highStop = ta.highest(high, stopLength) - atrMultiplier * atr lowStop = ta.lowest(low, stopLength) + atrMultiplier * atr sma21 = ta.sma(close, smaLength) // Entry and Exit conditions longCondition = ta.crossover(close, lowStop) and close > sma21 exitLongCondition = close < highStop // Funktion zur Berechnung der Menge calc_qty(mode, riskMultiplier) => lowestClose = ta.lowest(close, 1560) if mode == "Exponential" qty = riskMultiplier / lowestClose * 1000 * strategy.equity / strategy.initial_capital else qty = riskMultiplier / lowestClose * 1000 // Berechnung der Menge basierend auf der Benutzerwahl qty = calc_qty(calcMode, riskMultiplier) // Execute strategy if (longCondition) strategy.entry("Long", strategy.long, qty=qty) alert("Buy Signal", alert.freq_once_per_bar_close) if (exitLongCondition) strategy.close("Long") alert("Sell Signal", alert.freq_once_per_bar_close) // Plotting plotshape(series=longCondition, location=location.belowbar, color=#0097a7, style=shape.triangleup, size=size.small, title="Buy Signal") plotshape(series=ta.crossunder(close, highStop), location=location.abovebar, color=#ff195f, style=shape.triangledown, size=size.small, title="Sell Signal") plot(sma21, color=color.gray) plot(highStop, color=#0097a7) plot(lowStop, color=#ff195f)