Diese Strategie ist ein anpassungsfähiges System, das Trend- und Range-Trading kombiniert, den Choppiness Index (CI) verwendet, um die Marktbedingungen zu bestimmen und die entsprechende Handelslogik anzuwenden.
Der Kern der Strategie besteht darin, den Choppiness Index (CI) zu verwenden, um den Markt in Trending (CI<38.2) und Ranging (CI>61.8) Staaten zu klassifizieren. In Trending-Märkten werden Long-Positionen eröffnet, wenn die schnelle EMA (9-Periode) über die langsame EMA (21-Periode) überschreitet und der RSI unter 70 liegt, während Short-Positionen eröffnet werden, wenn die langsame EMA über die schnelle EMA und der RSI über 30 liegt. In Ranging-Märkten werden Long-Positionen eröffnet, wenn der RSI unter 30 liegt und Short-Positionen, wenn der RSI über 70 liegt.
Diese Strategie baut ein anpassungsfähiges Handelssystem auf, indem sie mehrere technische Indikatoren kombiniert und eine stabile Performance in verschiedenen Marktumgebungen beibehält. Ihre Kernvorteile liegen in der Marktanpassungsfähigkeit und umfassenden Risikomanagementmechanismen, während auf die Parameteroptimierung und Abhängigkeiten von Marktbedingungen geachtet werden muss. Durch kontinuierliche Optimierung und Verbesserung verspricht die Strategie bessere Handelsergebnisse unter verschiedenen Marktbedingungen zu erzielen.
/*backtest start: 2024-12-19 00:00:00 end: 2024-12-26 00:00:00 period: 45m basePeriod: 45m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © nopology //@version=6 strategy("CI, EMA, RSI", overlay=false) // Input parameters lengthCI = input(14, title="CI Length") lengthRSI = input(14, title="RSI Length") fastLength = input(9, title="Fast EMA Length") slowLength = input(21, title="Slow EMA Length") // Calculate CI atr = ta.atr(lengthCI) highLowRange = math.log10(math.max(high[lengthCI], high) - math.min(low[lengthCI], low)) sumATR = math.sum(atr, lengthCI) ci = 100 * (math.log10(sumATR / highLowRange) / math.log10(lengthCI)) // Calculate RSI rsi = ta.rsi(close, lengthRSI) // Calculate EMAs fastEMA = ta.ema(close, fastLength) slowEMA = ta.ema(close, slowLength) // Define conditions trendingMarket = ci < 38.2 rangingMarket = ci > 61.8 bullishSignal = ta.crossover(fastEMA, slowEMA) and rsi < 70 bearishSignal = ta.crossover(slowEMA, fastEMA) and rsi > 30 // Plot indicators for visualization plot(ci, title="Choppiness Index", color=color.purple, linewidth=2) plot(fastEMA, title="Fast EMA", color=color.blue) plot(slowEMA, title="Slow EMA", color=color.red) // Strategy Execution if (trendingMarket) if (bullishSignal) strategy.entry("Long", strategy.long) if (bearishSignal) strategy.entry("Short", strategy.short) else if (rangingMarket) if (rsi < 30) strategy.entry("Long", strategy.long) if (rsi > 70) strategy.entry("Short", strategy.short) // Close positions when conditions no longer met or reverse if (trendingMarket and not bullishSignal) strategy.close("Long") if (trendingMarket and not bearishSignal) strategy.close("Short") if (rangingMarket and rsi > 40) strategy.close("Long") if (rangingMarket and rsi < 60) strategy.close("Short") // Optional: Add stop loss and take profit stopLossPerc = input.float(2, title="Stop Loss (%)", minval=0.1, step=0.1) / 100 takeProfitPerc = input.float(4, title="Take Profit (%)", minval=0.1, step=0.1) / 100 strategy.exit("Exit Long", "Long", stop=close*(1-stopLossPerc), limit=close*(1+takeProfitPerc)) strategy.exit("Exit Short", "Short", stop=close*(1+stopLossPerc), limit=close*(1-takeProfitPerc))