Der Chande-Kroll Stop Dynamic ATR Trend Following Strategy ist eine quantitative Handelsstrategie, die auf dem Chande-Kroll Stop-Indikator und dem Simple Moving Average (SMA) basiert. Die Strategie zielt darauf ab, Aufwärtstrends des Marktes zu erfassen und gleichzeitig das Risiko mithilfe dynamischer Stop-Loss-Levels zu steuern. Der Chande-Kroll Stop-Indikator passt die Stop-Loss-Level dynamisch an, basierend auf dem Average True Range (ATR), um sich an unterschiedliche Marktvolatilitätsbedingungen anzupassen. Der 21-Perioden-SMA wird als Trendfilter verwendet, um sicherzustellen, dass Trades in Richtung des primären Trends getätigt werden.
Der Kern der Strategie ist der Chande-Kroll-Stop-Indikator, der ATR zur Berechnung dynamischer Stop-Loss-Levels verwendet. ATR misst die Marktvolatilität und die Stop-Loss-Level werden dynamisch auf Basis von ATR und einem Multiplikator angepasst. Dies stellt sicher, dass sich die Stop-Loss-Positionen an die aktuellen Marktbedingungen anpassen. Darüber hinaus fungiert der 21-Perioden-SMA als Trendfilter und Long-Signale werden nur ausgelöst, wenn der Schlusskurs über dem SMA liegt. Dies hilft, den Handel während der Bärenmärkte zu vermeiden. Long-Eintrittsbedingung: Wenn der Schlusskurs über den unteren Chande-Kroll-Band bricht und über dem 21-Perioden-SMA liegt, wird eine Long-Position eingeleitet. Ausgangszustand: Wenn der Schlusskurs unter den oberen Chande-Kroll-Band fällt, wird die Position geschlossen.
Die Chande-Kroll Stop Dynamic ATR Trend Following Strategie ist eine quantitative Handelsstrategie, die auf dynamischen Stop-Loss- und Trend-Following-Prinzipien basiert. Durch die Kombination des Chande-Kroll Stop-Indikators und des SMA-Trendfilters kann die Strategie Aufwärtstrends erfassen und gleichzeitig das Risiko effektiv managen. Die Flexibilität der Strategieparameter und die dynamische Positionsgröße erhöhen die Anpassungsfähigkeit der Strategie weiter. Obwohl die Strategie bestimmte Risiken birgt, hat die Strategie mit angemessenen Risikomanagementmaßnahmen und kontinuierlicher Optimierung und Verbesserung das Potenzial, langfristige stabile Renditen zu erzielen.
/*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)